Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 373

 
STARIJ:
у Вас стоит суммирование

Спасибо! Прошарил, и исправил! Теперь работает.

 
Artyom Trishkin:
Вы ордер выбираете по тикету, а затем, после километра кода, пытаетесь его модифицировать. Но он в это время может быть уже закрытым.

Если б ордер был закрытым,то OrdersTotal()==0;,соответственно выполнение OrderModify() не происходило-бы в принципе

 
ijonhson:

Если б ордер был закрытым,то OrdersTotal()==0;,соответственно выполнение OrderModify() не происходило-бы в принципе

Сначала проверка количества, затем много кода, где могла закрыться позиция (но вы уже обрабатываете условие количества больше ноля), а потом выбор и модификация закрытого.
 

Закрытие ордеров может происходить по 0.01 лоту раздельно если ордер висит например лотом в 0,59 . Возник вопрос. Можно ли совместить два ордера в один? Например висит ордер лотом 0,01 и хочешь открыть еще ордер с лотом 0,02. Чтобы не накапливать ордера можно ли их совместить с лотом 0,03 и если можно то как?

 
установить МТ5 неттинг
 
Taras Slobodyanik:
установить МТ5 неттинг

в МТ4 такого нет?

 

Снова всем привет.


При всем уважении к присвятым прямоугольникам


Я не понимаю - ПОЧЕМУ он с радостью модифицирует селл ордера, но модификацию бай ордера игнорирует даже при использовании бубнов благовоний и прочих инструментов иррациональной оптимизации.


if (ticket>0)

{

//устанавливаем Стоп-лосс и Тэйк-профит для бай ордера//

if (OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES))

{

double sl,tp;

if (type==OP_BUY)

{

sl=OrderOpenPrice () -  (StopLoss*_Point);

sl=NormalizeDouble (sl,_Digits);

tp=OrderOpenPrice () + (TakeProfit*_Point);

tp=NormalizeDouble (tp,_Digits);

}

if (type==OP_SELL)

{

sl=OrderOpenPrice () +  (StopLoss*_Point);

sl=NormalizeDouble (sl,_Digits);

tp=OrderOpenPrice () - (TakeProfit*_Point);

tp=NormalizeDouble (tp,_Digits);

}

bool mod = false;

int count=0;

while (!mod)

{

mod=OrderModify (ticket, OrderOpenPrice (), sl, tp, 0, clrYellow);

count++;

if (count>=100)

{

mod=true;

break;

 

Разобрался!!!!!

 

Помогите пожалуйста, только учусь, если в сов. вызывался ZZ c одного буфера, а в др. ZZ из два, как правильно это записать?

// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка

Не правильно пишу, как должно быть правильно? Спасибо

 

Не захватила кусочек сверху, так понятнее. Подскажите пожалуйста ошибку.

Причина обращения: