Нужна помощь. |
void CheckBE() {
if(OrderType() == OP_BUY) { //если ордер на покупку
double NewSL = NormalizeDouble(OrderOpenPrice()+BE_Step*Point,Digits);
if(OrderStopLoss() < NewSL) { //если СЛ еще не был перенесен
if((Bid - OrderOpenPrice()) >= TakeProfit*SetBEDistance/100*Point && NewSL != OrderStopLoss()) {
if(!OrderModify(OrderTicket(), OrderOpenPrice(), NewSL, OrderTakeProfit(), 0, clrNONE)) {
int Error = GetLastError();
}
}
}
}
else if(OrderType() == OP_SELL) { //если ордер на продажу
double NewSL = NormalizeDouble(OrderOpenPrice()-BE_Step*Point,Digits);
if(OrderStopLoss() > NewSL) { //если СЛ еще не был перенесен
if((OrderOpenPrice() - Ask) >= TakeProfit*SetBEDistance/100*Point && NewSL != OrderStopLoss()) {
if(!OrderModify(OrderTicket(), OrderOpenPrice(), NewSL, OrderTakeProfit(), 0, clrNONE)) {
int Error = GetLastError();
}
}
}
}
}
}
Следующая запись в группе Скрипт открывающий ордер buy или sell после закрытия свечи ниже или выше заданного ценового уровня. |
|
20 ноября 2022
|
21 ноября 2022
|
Комментарии (4)
35 AM2 Сообщений: 16412 - Андрей
9 kasparsvas16 Автор Сообщений: 102
35 AM2 Сообщений: 16412 - Андрей
//Добавить в глобальные переменные
datetime last_enter=0; // время открытия свечи последнего изменения SL
int TF=0; // На текущем таймфрейме
//-------------------------------------------------------------------------
void CheckBE()
{
if (last_enter>=iTime(NULL, TF, 0)) return; // на этом баре корректировали
if(OrderType() == OP_BUY) //если ордер на покупку
{
double NewSL = NormalizeDouble(OrderOpenPrice()+BE_Step*Point,Digits);
if(OrderStopLoss() < NewSL) //если СЛ еще не был перенесен
if((Bid — OrderOpenPrice()) >= TakeProfit*SetBEDistance/100*Point && NewSL != OrderStopLoss())
if(!OrderModify(OrderTicket(), OrderOpenPrice(), NewSL, OrderTakeProfit(), 0, clrNONE))
int Error = GetLastError();
}
if(OrderType() == OP_SELL) //если ордер на продажу
{
double NewSL = NormalizeDouble(OrderOpenPrice()-BE_Step*Point,Digits);
if(OrderStopLoss() > NewSL) //если СЛ еще не был перенесен
if((OrderOpenPrice() — Ask) >= TakeProfit*SetBEDistance/100*Point && NewSL != OrderStopLoss())
if(!OrderModify(OrderTicket(), OrderOpenPrice(), NewSL, OrderTakeProfit(), 0, clrNONE))
int Error = GetLastError();
}
last_enter=iTime(NULL, TF, 0);
}
//---------------------------------------------------------------------------
Удачи.
7 kvashnin007 Сообщений: 638 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий