dele69,
ловите мою функцию.
в настройки
Код
extern string BU_="Настройки безубытка";
extern bool MovingInWLUSE=false; // Перенос позиции в безубыток
extern int LevelWLoss=0; // Переносим стоплосс в +LevelWLoss пунктов
extern int LevelProfit=0;// Когда сделка вышла в плюс LevelProfit пунктов
в старт:
Код
//+------------------------------------------------------------------+
// Включение безубытка:
//+------------------------------------------------------------------+
if(MovingInWLUSE)MovingInWL(Symbol(),-1,Magic);
в функции за стартом:
Код
void MovingInWL(string sy="",int op=-1,int mn=-1)
{
double po,pp;
int i,k=OrdersTotal();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderMagicNumber()==mn || mn<0) && (OrderSymbol()==sy || sy==""))
{
po=MarketInfo(OrderSymbol(),MODE_POINT);
if(OrderType()==OP_BUY)
{
if(OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po)
{
pp=MarketInfo(OrderSymbol(),MODE_BID);
if(pp-OrderOpenPrice()>LevelProfit*po)
{
ModifyOrder(-1,OrderOpenPrice()+LevelWLoss*po,-1);
}
}
}
if(OrderType()==OP_SELL)
{
if(OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po)
{
pp=MarketInfo(OrderSymbol(),MODE_ASK);
if(OrderOpenPrice()-pp>LevelProfit*po)
{
ModifyOrder(-1,OrderOpenPrice()-LevelWLoss*po,-1);
}
}
}
}
}
}