السلام عليكم ورحمة الله
أبحث عن كود يقوم بوضع ستوب لوز لجميع الصفات المفتوحة حين يحقق الاكسبيرت نسبة 3% من الربح ومن هنا اذا تحرك السعر في صالح النتيجة يتحرك هذا الستوب معه triling stop
شكرا
Printable View
السلام عليكم ورحمة الله
أبحث عن كود يقوم بوضع ستوب لوز لجميع الصفات المفتوحة حين يحقق الاكسبيرت نسبة 3% من الربح ومن هنا اذا تحرك السعر في صالح النتيجة يتحرك هذا الستوب معه triling stop
شكرا
للاشاره الاكسبيرت يفتح نوع واحد من الصفقات بيع او شراء اي يغلق في حالة ظهور انعكاس اشاره
هذا كود من شات جبتي لكن لا اعلم اين المشكل
كود PHP:
// Parcourir toutes les positions ouvertes
for (int i = 0; i < OrdersTotal(); i++)
{
// Sélectionner la position i
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
// Vérifier si la position est un achat (OP_BUY) ou une vente (OP_SELL)
if (OrderType() == OP_BUY)
{
// Calculer le prix d'entrée de la position
double entryPrice = OrderOpenPrice();
// Calculer le prix de stop loss à 3% en dessous du prix d'entrée
double stopLossPrice = entryPrice * 0.97;
// Placer un ordre de vente avec le prix de stop loss
OrderSend(Symbol(), OP_SELL, OrderLots(), stopLossPrice, 0, 0, 0, "Stop Loss", MagicNumber);
}
else if (OrderType() == OP_SELL)
{
// Calculer le prix d'entrée de la position
double entryPrice = OrderOpenPrice();
// Calculer le prix de stop loss à 3% au-dessus du prix d'entrée
double stopLossPrice = entryPrice * 1.03;
// Placer un ordre d'achat avec le prix de stop loss
OrderSend(Symbol(), OP_BUY, OrderLots(), stopLossPrice, 0, 0, 0, "Stop Loss", MagicNumber);
}
}
}
اخر كود محسن
لكن لدي مشكلة OrderModify error 130كود PHP:
// Calculer le gain total des positions ouvertes
double totalProfit = 0.0;
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
double profit = OrderProfit();
totalProfit += profit;
}
}
// Vérifier si le gain total atteint 3%
if (totalProfit >= AccountBalance() * 0.03)
{
// Modifier le stop loss de chaque position ouverte
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
double entryPricePosition = OrderOpenPrice();
// Calculer le nouveau prix de stop loss à 3% en dessous du prix d'entrée
double newStopLossPrice = entryPricePosition * 0.97;
// Modifier le stop loss de la position uniquement si elle est sélectionnée correctement
if (OrderModify(OrderTicket(), OrderOpenPrice(), newStopLossPrice, OrderTakeProfit(), 0, clrNONE))
{
Print("Stop loss modifié pour l'ordre ", OrderTicket());
}
else
{
Print("Erreur lors de la modification de l'ordre ", OrderTicket(), ", code d'erreur : ", GetLastError());
}
}
}
}