تاريخ التسجيل: Nov 2016
الدولة: المغرب_ألمانيا
المشاركات: 749
خبرة السوق: 1 الى 3 سنوات
معدل تقييم المستوى:
8

رد: تحويل إستراتيجة لمؤشر او إكسبيرت
هذا هو الكود لستعملت لتعديل لدوي الخبرة لتحسين الإكسبيرت:
// احصل على أسعار الشموع
double highCandle1 = iHigh(NULL, 0, 1);
double lowCandle1 = iLow(NULL, 0, 1);
double highCandle2 = iHigh(NULL, 0, 2);
double lowCandle2 = iLow(NULL, 0, 2);
double closeCandle3 = iClose(NULL, 0, 0);
// احسب الشمعة الثالثة
double highCandle3 = iHigh(NULL, 0, afterCandleCount);
double lowCandle3 = iLow(NULL, 0, afterCandleCount);
// التحقق من عدم وجود صفقة مفتوحة
if (!tradeOpened)
{
// الشراء
if (highCandle1 > highCandle2 && lowCandle3 < lowCandle2 && closeCandle3 > highCandle3)
{
// قم بتنفيذ إجراء الشراء هنا
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Buy Order", TakeProfit, 0, Blue);
// قم بتحديث المتغيرات بعد فتح الصفقة
totalTrades++;
lastTradeTime = TimeCurrent();
tradeOpened = true;
entryPrice = Ask;
}
// البيع
if (lowCandle1 < lowCandle2 && highCandle3 > highCandle2 && closeCandle3 < lowCandle3)
{
// قم بتنفيذ إجراء البيع هنا
OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, 0, 0, "Sell Order", TakeProfit, 0, Red);
// قم بتحديث المتغيرات بعد فتح الصفقة
totalTrades++;
lastTradeTime = TimeCurrent();
tradeOpened = true;
entryPrice = Bid;
}
}
// قم بتحديث Trailing Stop للصفقات الشرائية
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY && OrderMagicNumber() == 0)
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + TrailingStop * Point, OrderTakeProfit(), 0, Blue);
}
}
}
// قم بتحديث Trailing Stop للصفقات البيعية
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol())
{
if (OrderType() == OP_SELL && OrderMagicNumber() == 0)
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - TrailingStop * Point, OrderTakeProfit(), 0, Red);
}
}
}
// التحقق من إغلاق الصفقة بسبب انعكاس السعر
if (tradeOpened)
{
if (OrderType() == OP_BUY && closeCandle3 < entryPrice - reversalThreshold * Point)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
tradeOpened = false;
}
else if (OrderType() == OP_SELL && closeCandle3 > entryPrice + reversalThreshold * Point)
{
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
tradeOpened = false;
}
}
}