[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 586

 
Craft:

Добрый день, пытаюсь разобраться с написанием советников. Взял шаблон советника из статьи на сайте по mql4, стал подставлять свои условия, чтобы разобраться с отладкой и функционалом, ввёл условия открытия позиций:

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

см. тремя постами выше - анализируйте только сформировавшиеся бары, начиная с 1
 

или используйте условие - если на нулевом баре не открыто ордеров, то можно открываться:

if((OrdersTotal()>0&&iBarShift(OrderOpenTime())>0)||OrdersTotal()==0)
{
   //открываемся
}
 
alsu:
см. тремя постами выше - анализируйте только сформировавшиеся бары, начиная с 1
Но для этого в iMAOnArray(MyATR,0,PerB,0,MODE_SMA,1) и прописана 1 в конце, а Open[0] не изменен на протяжении бара и он мне будет необходим.
 
Craft:
Но для этого в iMAOnArray(MyATR,0,PerB,0,MODE_SMA,1) и прописана 1 в конце, а Open[0] не изменен на протяжении бара и он мне будет необходим.
но Аск и Бид изменяются на каждом тике - поэтому условие может срабатывать многократно за время одного бара
 
alsu:
но Аск и Бид изменяются на каждом тике - поэтому условие может срабатывать многократно за время одного бара
А как быть, чтобы исполнение происходило один раз, может заменить их на High[0] и Low[0]? Или есть другие команды, может условие на исполнение внутри бара одни раз?
 
Craft:
А как быть, чтобы исполнение происходило один раз, может заменить их на High[0] и Low[0]? Или есть другие команды, может условие на исполнение внутри бара одни раз?
чуть выше написАл уже ведь
 
alsu:
чуть выше написАл уже ведь

Я читал, до этого развлекался на фонде, теперь хочу попробовать форекс. В ВэлсЛаб на фонде это легко сделать через стоп:

MyATR = SMA.Series(((High-Low)/Low), PerB)[i-1] ;

if (BuyAtStop(i, (Open[i] + Open[i]*MyATR), "") ;

Неужели это нельзя сделать в МетаТрэйдер?

 
Craft:

Я читал, до этого развлекался на фонде, теперь хочу попробовать форекс. В ВэлсЛаб на фонде это легко сделать через стоп:

MyATR = SMA.Series(((High-Low)/Low), PerB)[i-1] ;

if (BuyAtStop(i, (Open[i] + Open[i]*MyATR), "") ;

Неужели это нельзя сделать в МетаТрэйдер?

не, так не выйдет. только через анализ истории ордеров. уж такой он, наш MQL - плохонький, да свой:))) поэтому большинство полезных функций пишем руками.
 
alsu:
не, так не выйдет. только через анализ истории ордеров. уж такой он, наш MQL - плохонький, да свой:))) поэтому большинство полезных функций пишем руками.
Я не против, пример можно рабочий или ссылку?
 
Craft:
Я не против, пример можно рабочий или ссылку?
ближе к ночи, щас пока отлучаюсь. ну или может кто раньше даст
Причина обращения: