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

 
FOTOGRAF14:

всем привет! подскажите как  мне написать мне условие!  мне надо поставить стоплос в безубыток,после того когда цена прошла расстояние стоплоса

для Buy.....

i‌f(  )

{

‌------------

}

для Sell.....


функция перевода стполосса в безубыток, в функцию передается тикет ордера и расстояние в пипсах через которое переводить

void zero_profit(int ticket, int distance)
  {
   double sl=0.0;

   if(OrderSelect(ticket,SELECT_BY_TICKET))
     {
      if(OrderType()==OP_BUY)
        {
         if(Bid>=OrderOpenPrice() && Bid-OrderOpenPrice()>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())return;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=OrderOpenPrice() && OrderOpenPrice()-Ask>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())return;
        }
      ResetLastError();

      if(sl<=0)return;
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0))
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," ",TypeToStr(OrderType())," №- ",error);
         Print(rezult);
        }

     }
  }


‌...

 
Vitaly Muzichenko:

Да рисования и не будет)

Т‌ам сама логика поиска тяжёлая, и как это облегчить - пока не знаю

Виталий, я тебе изначально пытался объяснить что тормозит тестер не от расчётов, а от графических объектов при визуальном тестировании. Сделай как тебе советует

Alexey Kozitsyn:

Можно закатать в индикатор и без рисования). А еще лучше сделать выбор. Хоп - рисование, хоп - нет рисования:)

‌и проверь разницу в скорости.

Тормозит даже не рисование, а просто наличие графики на чарте.‌

 
Alexey Viktorov:

Тормозит даже не рисование, а просто наличие графики на чарте.‌

Не спорю... потому и сказал, что когда не надо - выключил (DRAW_NONE) и все... при этом доступ к значениям есть все равно.
 
Alexey Viktorov:

Виталий, я тебе изначально пытался объяснить что тормозит тестер не от расчётов, а от графических объектов при визуальном тестировании. Сделай как тебе советует

‌и проверь разницу в скорости.

Тормозит даже не рисование, а просто наличие графики на чарте.‌

Я проверяю функцию без графики вообще, графика делалась только для того, чтоб пока писал код, видеть правильность расчётов - она когда-то носила чисто технический характер и давно удалена с кода. График при тестировании вообще пустой.

Т‌ак вот, когда без функции, то тестирование "летит", только подключаю функцию - идёт медленно.

P‌.S. Мне не нужны графические объекты на графике в принципе. Забудьте о графике - её у меня нет и не будет!

 
Vitaly Muzichenko:

Я проверяю функцию без графики вообще, графика делалась только для того, чтоб пока писал код, видеть правильность расчётов - она когда-то носила чисто технический характер и давно удалена с кода. График при тестировании вообще пустой.

Т‌ак вот, когда без функции, то тестирование "летит", только подключаю функцию - идёт медленно.

P‌.S. Мне не нужны графические объекты на графике в принципе. Забудьте о графике - её у меня нет и не будет!

А тут не смотрели?
 
Artyom Trishkin:
А тут не смотрели?

Прикольно, попробую выдернуть функции в советник. Позже напишу результат.

С‌пасибо!!!

 
Помогите пожалуйста разобраться как правильно написать код чтоб получить индекс баров открытых допустим в 4:00 и в 15:00
 
missha689:
Помогите пожалуйста разобраться как правильно написать код чтоб получить индекс баров открытых допустим в 4:00 и в 15:00

Это раз

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Это два

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Это раз

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Это два

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
это я так понял что получается в конкретный день так как явно указывается дата а как сделать чтоб указывал индекс бара который в 15 вчерашнего дня а индекс который в 4 сегодняшнего
 
Подскажите как программно узнать дату и время вчерашнего дня