Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2105
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
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 и на следующем баре сделка так же открывается
в общем я тут окончательно запутался
Эти строки определяют только направление, а открывать сделки или нет определяются далее по коду с учетом условий и пауз
спасибо!
Эти строки определяют только направление, а открывать сделки или нет определяются далее по коду с учетом условий и пауз
я сделал табличку открытых сделок по этим строкам:
но у меня возник новый вопрос. Как можно производить вычисления в этих строках кода пока бар не закрылся? Ведь кроме 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;}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]
и только тогда откроется ордер. Всё вычисляется по данным с минутных баров внутри часа.
Здравствуйте, Сергей! Покажите какой код портируете, чтобы Вам смогли помочь.
С уважением, Владимир.
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();
}
}
Как в MQL5 сделать то же самое, чтобы робот отрабатывал алгоритм только в отведённое врем?
Как в MQL5 сделать то же самое, чтобы робот отрабатывал алгоритм только в отведённое врем?
Посмотрите здесь.
С уважением, Владимир.
Как в 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