Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1076

 

Добрый день, прошу помочь с таким вопросом. Имеется код (где то скачал у людей добрых) - суть кода в том что: если ордер закрывается по стоплоссу, то перевыставляется заново с теми же параметрами. Но проблема в том, что если я его запускаю вот прямо сейчас код перевыставляет все ордера за прошлые периоды, А МНЕ НУЖНО ТОЛЬКО ТЕ КОТОРЫЕ ЗАКРЫЛИСЬ ПО СТОПЛОССУ К ПРИМЕРУ ТОЛЬКО СЕГОДНЯ!!! Какой фильтр поставить, посоветуйте пожалуйста? Не знаю как получить дату ордера и сравнить с текущей? Спасибо.

  1.  double OOP=0,OTP=0,OSL=0,OL=0;
  2.   int    OT=0;
  3.    for (int i=OrdersHistoryTotal()-1; i>=0; i--)
  4.    {  
  5.       if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
  6.       {      
  7.          OT = OrderType();
  8.          OSL = NormalizeDouble(OrderStopLoss(),Digits);
  9.          if (OT<2)
  10.          {
  11.             if (NormalizeDouble(OrderClosePrice(),Digits)==OSL)
  12.             {
  13.                OOP = NormalizeDouble(OrderOpenPrice(),Digits);
  14.                //OSL = NormalizeDouble(OrderStopLoss(),Digits);
  15.                OTP = NormalizeDouble(OrderTakeProfit(),Digits);
  16.                OL  = OrderLots();
  17.             }
  18.             else OOP=0;
  19.             break;
  20.          }
  21.       }  
  22.    }
  23.    if (OOP!=0)
  24.    {
  25.       for (i=0; i<OrdersTotal(); i++)
  26.       {  
  27.          if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  28.          {  
  29.             if (OrderSymbol()==Symbol())
  30.             {
  31.                if (NormalizeDouble(OrderOpenPrice(),Digits) == OOP && OL == OrderLots()) return(0);
  32.             }  
  33.          }  
  34.       }
  35.       if (OT==OP_BUY)  OT=OP_BUYLIMIT;
  36.       if (OT==OP_SELL) OT=OP_SELLLIMIT;
  37.       if (OrderSend(Symbol(),OT,OL,OOP,0,OSL,OTP,NULL,0,0,clrNONE)==-1); 

 
rabanik:   как получить дату ордера и сравнить с текущей

Так пойдет?  if (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Но это перед полночью выдаст густо сегодняшних ордеров, а сразу после полуночи будет пусто

ТребуемыйИнтервал=36000;  // 10 часов

Лучше так? if ((TimeCurrent()-OrderCloseTime()) < ТребуемыйИнтервал) ...

 
LRA:

Так пойдет?  if (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Но это перед полночью выдаст густо сегодняшних ордеров, а сразу после полуночи будет пусто

ТребуемыйИнтервал=36000;  // 10 часов

Лучше так? if ((TimeCurrent()-OrderCloseTime()) < ТребуемыйИнтервал) ...

Спасибо большое. Попробую!
 
ребят, не понимаю в чем дело... при пересечении, косании линии цены, Алерт не замолкает и работает на каждый тик, так исправить ситуацию? как заставить его заданное время пищать, либо количество раз?
Файлы:
 
Добрый день! Прошу помочь с решением задачи, поставил в отрисовку МА  таймфрейм 5 минут ,чтобы смотреть ее на 1 минутном графике,  отрисовывается один в один без учета масштаба  , а можно как - то это решить? Спасибо!  
 

Помогите кто может, в строке привожу ниже возникает ошибка. Код в мт5.

StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(ResultSymbols,0,1))- 1));

 
ara66676:    в строке возникает ошибка. Код в мт5.   StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(ResultSymbols,0,1))- 1));
Добавил string ResultSymbols="12345"; Компилируется без ошибки. Попробуйте разделить на части
 
LRA:
Добавил string ResultSymbols="12345"; Компилируется без ошибки. Попробуйте разделить на части
спасибо, нашёл причину, в пятом МТ нельзя в функцию StringTrimLeft() вносить вычисления, то есть сначала нужно объявить строку, потом присвоить ей вычисления и после эту строку передать в функцию StringTrimLeft()
 
ObjectGetValueByShift - это же интерполяция ?
 
mario_SC--:   ObjectGetValueByShift - это же интерполяция ?
Скорее, это линейная экстраполяция. В справке сказано: Значение цены вычисляется при помощи линейного уравнения
Причина обращения: