//This namespace holds Strategies in this folder and is required. Do not change it.
public class GHARIBROBOTSCALP2
{
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Name = "GHARIBROBO1TSCALP2"; // اسم الاستراتيجية
Calculate = Calculate.OnEachTick; // التنفيذ عند كل حركة سعر
EntriesPerDirection = 1; // صفقة واحدة لكل اتجاه
ExitOnSessionClose = false; // عدم الإغلاق عند نهاية الجلسة
IsInstantiatedOnEachOptimizationIteration = false;
SetStopLoss(CalculationMode.Ticks, 10); // وقف خسارة بمقدار 10 نقاط
SetProfitTarget(CalculationMode.Ticks, 20); // هدف الربح 20 نقطة
}
}
protected override void OnBarUpdate()
{
// تأكد من وجود بيانات كافية قبل التنفيذ
if (CurrentBar < 20)
return;
// إذا كان مؤشر RSI أقل من 30 والسعر أعلى من SMA لفترة 10
if (RSI(14, 3)[0] < 30 && Close[0] > SMA(10)[0])
{
EnterLong(); // دخول صفقة شراء
}
// إذا كان مؤشر RSI أكبر من 70 والسعر أقل من SMA لفترة 10
else if (RSI(14, 3)[0] > 70 && Close[0] < SMA(10)[0])
{
EnterShort(); // دخول صفقة بيع
}
}
}
public class ReverseScalpBot
{
private double lastAnchorPoint = 0; // النقطة المرجعية للسعر
private int priceMoveThreshold = 100; // الحد الأدنى للتحرك بمقدار 100 نقطة
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Name = "ReverseScalpBot"; // اسم الاستراتيجية
Calculate = Calculate.OnEachTick; // التنفيذ عند كل حركة سعر
EntriesPerDirection = 1; // صفقة واحدة لكل اتجاه
ExitOnSessionClose = false; // عدم الإغلاق عند نهاية الجلسة
IsInstantiatedOnEachOptimizationIteration = false;
SetStopLoss(CalculationMode.Ticks, 10); // وقف خسارة 10 نقاط
SetProfitTarget(CalculationMode.Ticks, 20); // هدف الربح 20 نقطة
}
}
protected override void OnBarUpdate()
{
// التحقق من وجود بيانات كافية
if (CurrentBar < 1)
return;
// تعيين النقطة المرجعية عند أول مرة
if (lastAnchorPoint == 0)
{
lastAnchorPoint = Close[0];
return;
}
// حساب الفرق بين السعر الحالي والنقطة المرجعية
double priceDifference = Close[0] - lastAnchorPoint;
// إذا ارتفع السعر بمقدار أكبر من أو يساوي 100 نقطة
if (priceDifference >= priceMoveThreshold * TickSize)
{
EnterShort(); // دخول صفقة بيع
lastAnchorPoint = Close[0]; // تحديث النقطة المرجعية
}
// إذا انخفض السعر بمقدار أكبر من أو يساوي 100 نقطة
else if (priceDifference <= -priceMoveThreshold * TickSize)
{
EnterLong(); // دخول صفقة شراء
lastAnchorPoint = Close[0]; // تحديث النقطة المرجعية
}
}
}
public class SupportResistanceBot
{
private double supportLevel = 0; // مستوى الدعم
private double resistanceLevel = 0; // مستوى المقاومة
private int lookbackPeriod = 20; // فترة المراقبة لتحديد القمم والقيعان
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Name = "SupportResistanceBot"; // اسم الاستراتيجية
Calculate = Calculate.OnBarClose; // التنفيذ عند إغلاق كل شمعة
EntriesPerDirection = 1; // صفقة واحدة لكل اتجاه
ExitOnSessionClose = false; // عدم الإغلاق عند نهاية الجلسة
IsInstantiatedOnEachOptimizationIteration = false;
SetStopLoss(CalculationMode.Ticks, 10); // وقف الخسارة
SetProfitTarget(CalculationMode.Ticks, 20); // هدف الربح
}
}
protected override void OnBarUpdate()
{
// التحقق من وجود بيانات كافية
if (CurrentBar < lookbackPeriod)
return;
// حساب مستويات الدعم والمقاومة
supportLevel = MIN(Low, lookbackPeriod)[0];
resistanceLevel = MAX(High, lookbackPeriod)[0];
// إذا تجاوز السعر مستوى الدعم
if (Close[0] > supportLevel && Close[1] <= supportLevel)
{
EnterLong(); // دخول صفقة شراء
}
// إذا تجاوز السعر مستوى المقاومة
else if (Close[0] < resistanceLevel && Close[1] >= resistanceLevel)
{
EnterShort(); // دخول صفقة بيع
}
}
}

Comment