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

 
Tretyakov Rostyslav #:

High 0,67469 - iOpen 0,67415 =0.00054 > gd_dopusk

iOpen 0,67415 -  iLow 0,67351 =0.00064  > gd_dopusk

High 0,67469 - iOpen 0,67415 =0.00054 > gd_dopusk (да, это 54 пипса?  Dopusk *= gi_Decimal;   gd_dopusk = Dopusk * Point; значит если в настройках выбрать "2" - это 20 пипсов?)

iOpen 0,67415 -  iLow 0,67351 =0.00064  > gd_dopusk

//---- Если цена обновила экстремум - выходим до следующего бара  (это значит не торгуем?)

    if (iHigh (gs_Symbol, gi_ControlPeriod, 0) - iOpen (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)  

    {li_extrem = 0;}

    else if (iOpen (gs_Symbol, gi_ControlPeriod, 0) - iLow (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)  

=     {li_extrem = 1;} это всё относится к текущему бару?

если так, то есть сделки когда одно из условий соблюдается,  <= gd_dopusk и на следующем баре сделка открывается

так же есть сделки где на текущем баре условие НЕ соблюдается,  > gd_dopusk и на следующем баре сделка так же открывается

в общем я тут окончательно запутался

 
законопослушный гражданин #:

High 0,67469 - iOpen 0,67415 =0.00054 > gd_dopusk (да, это 54 пипса?  Dopusk *= gi_Decimal;   gd_dopusk = Dopusk * Point; значит если в настройках выбрать "2" - это 20 пипсов?)

iOpen 0,67415 -  iLow 0,67351 =0.00064  > gd_dopusk

//---- Если цена обновила экстремум - выходим до следующего бара  (это значит не торгуем?)

    if (iHigh (gs_Symbol, gi_ControlPeriod, 0) - iOpen (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)  

    {li_extrem = 0;}

    else if (iOpen (gs_Symbol, gi_ControlPeriod, 0) - iLow (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)  

=     {li_extrem = 1;} это всё относится к текущему бару?

если так, то есть сделки когда одно из условий соблюдается,  <= gd_dopusk и на следующем баре сделка открывается

так же есть сделки где на текущем баре условие НЕ соблюдается,  > gd_dopusk и на следующем баре сделка так же открывается

в общем я тут окончательно запутался

Эти строки определяют только направление, а открывать сделки или нет определяются далее по коду с учетом условий и пауз
 
Tretyakov Rostyslav #:
Эти строки определяют только направление, а открывать сделки или нет определяются далее по коду с учетом условий и пауз

спасибо!

 
Tretyakov Rostyslav #:
Эти строки определяют только направление, а открывать сделки или нет определяются далее по коду с учетом условий и пауз

я сделал табличку открытых сделок по этим строкам:


но у меня возник новый вопрос. Как можно производить вычисления в этих строках кода пока бар не закрылся? Ведь кроме Open другие характеристики бара не известны .

а по таблице выходит, что вычисления происходят на текущем баре и на нём же открывается ордер., как такое может быть?  

 
законопослушный гражданин #:

я сделал табличку открытых сделок по этим строкам:

но у меня возник новый вопрос. Как можно производить вычисления в этих строках кода пока бар не закрылся? Ведь кроме Open другие характеристики бара не известны .

а по таблице выходит, что вычисления происходят на текущем баре и на нём же открывается ордер., как такое может быть?  

if (iHigh (gs_Symbol, gi_ControlPeriod, 0) - iOpen (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)   Если максимум текущей свечи выше цены открытия на N-пунктов

    {li_extrem = 0;}

    else if (iOpen (gs_Symbol, gi_ControlPeriod, 0) - iLow (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)   Если минимум текущей свечи ниже цены открытия на N-пунктов

    {li_extrem = 1;}
 
Tretyakov Rostyslav #:

if (iHigh (gs_Symbol, gi_ControlPeriod, 0) - iOpen (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)   Если максимум текущей свечи выше цены открытия на N-пунктов

    {li_extrem = 0;}

    else if (iOpen (gs_Symbol, gi_ControlPeriod, 0) - iLow (gs_Symbol, gi_ControlPeriod, 0) <= gd_dopusk)   Если минимум текущей свечи ниже цены открытия на N-пунктов

    {li_extrem = 1;}

всё разобрался!

нужно чтобы выполнились оба параметра последовательно, сначала  <= gd_dopusk), затем gda_MIN_Distance[li_MG]

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

Файлы:
cjd.jpg  30 kb
 
MrBrooklin #:

Здравствуйте, Сергей! Покажите какой код портируете, чтобы Вам смогли помочь.

С уважением, Владимир.

void OnTick()

  {

   double PriceBid=MarketInfo(0,MODE_BID);

   double time = Hour() + Minute()*0.01;

   Comment("точка отсчёта   ",inpoint,

           "\n","шаг   ",iter,

           "\n","время  ",time,

           "\n","цена  ", Bid,

           "\n","цена  ",PriceBid);

   if(time <= Stop_work_time)

   {

   //if(Type==BUY || Type==ALL)newbuyorder();

   //if(Type==SELL || Type==ALL)newsellorder();

   in();

   takestop();

   stoporders();

   connected();

   delorders();

   }

   else 

   {

   takestop();

   delorders();

   }

  }

Файлы:
kachinmind.mq4  38 kb
 

Как в MQL5  сделать то же самое, чтобы робот отрабатывал алгоритм только в отведённое врем?

 
EfremovSergey #:

Как в MQL5  сделать то же самое, чтобы робот отрабатывал алгоритм только в отведённое врем?

Посмотрите здесь.

С уважением, Владимир.

 
EfremovSergey #:

Как в MQL5  сделать то же самое, чтобы робот отрабатывал алгоритм только в отведённое врем?

extern double   Stop_work_time=11.00;

заменить на

input string    Stop_work_time="11:00";

//---------------------------------------------------

double time = Hour() + Minute()*0.01;

заменить на

datetime time =StringToTime(Stop_work_time);

//---------------------------------------------------

if(time <= Stop_work_time)

заменить на

if(TimeCurrent()<= time )

//---------------------------------------------------

Это поможет запускать по времени,

но эти функции работать не будут

   takestop();

   stoporders();

   connected();

   delorders();

их надо переписывать под MT5
Причина обращения: