Вопрос по iCustom и влиянию советника на индикатор

 

Пытаюсь управлять торговлей советника из индикатора через ф-ю iCustom, в целом выглядит так:

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Sell1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Sell2= iCustom(NULL, 0,"Kristi_Trend",3,1);

// проверяем на возможность встать в длинную позицию (BUY):

if((Boy1>Boy2)&&(Sell1>Sell2)), аналогично,

// проверяем на возможность встать в короткую позицию (SELL)

if((Boy1<Boy2)&&(Sell1<Sell2))

Boy1,Boy2, Sell1,Sell2 - объявлены как double Boy1=0,Boy2=0,Sell1=0,Sell2=0; на уровне глобальных переменных.

Вопрос:

во-первых, советник не торгует, хотя по графикам индикатора условия для открытия ордера возникают;

во-вторых, советник странным образом влияет на индикатор, в индикаторе по приходу нового бара запускаетя ехе-файл, если советник отключен - все нормально, если советник включен, то ехе-файл запускается одновременно дважды, как это устранить?

Пытался организовать управление советником не через iCustom, а через считывание данных с диска, т.к. они у меня все равно созаются в ехе-файле, и индикатор для своей работы читает их с диска, но торговли также не происходит.

Работоспособность советника я проверял вставляя в него другой индикатор и запуская в тесторе, но и с тем индикатором при организации обмена через iCustom у меня ничего не получилось.

 
Piligrimm:

Пытаюсь управлять торговлей советника из индикатора через ф-ю iCustom, в целом выглядит так:

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Sell1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Sell2= iCustom(NULL, 0,"Kristi_Trend",3,1);


А у индикатора есть какие-нибудь параметры?

И в советниках не стоит использовать NULL, лучше было бы Symbol() вместо NULL.

 
Еще совет, выведи на график такой комментарий:
Comment("Boy1 - ", Boy1," Boy2 - ",Boy2," Sell1 - ", Sell1," Sell2 - ",Sell2);
и понаблюдай за значениями.
 
Vinin:
Piligrimm:

Пытаюсь управлять торговлей советника из индикатора через ф-ю iCustom, в целом выглядит так:

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Sell1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Sell2= iCustom(NULL, 0,"Kristi_Trend",3,1);


А у индикатора есть какие-нибудь параметры?

И в советниках не стоит использовать NULL, лучше было бы Symbol() вместо NULL.


Никаких оптимизируемых и начальных параметров в индикаторе нет, весь расчет происходит в ехе-файле, а индикатор написанный на MQL только запускает ехе-шник и строит график по результату расчитанных ехе-шником данных считанных с диска.

Я пробовал использовать и Symbol(), но результат тот же.

 

Странная получается вещь, при связи советника с индикатором через ф-ю iCustom, каждое обращение советника к индикатору равносильно для индикатора его переустановки, этим и вызван двойной запуск ехе-файла, он стартует по приходу нового бара и сразу же советник обращается к индикатору инициализируя его, и тем самым повторно запуская ехе-файл, если не использовать ф-ю iCustom, а организовать обмен через запись на диск, то повторного запуска не происходит. Но как эту проблему устранить с использованием ф-ю iCustom, не понятно.

Roger 01.02.2008 05:31

"Еще совет, выведи на график такой комментарий:
Comment("Boy1 - ", Boy1," Boy2 - ",Boy2," Sell1 - ", Sell1," Sell2 - ",Sell2);
и понаблюдай за значениями."
- я выводил в комментарий эти сигналы в советнике, они меняются нормально в соответствии с изменением графиков, но торговать советник не хочет, нис этими сигналами, ни при обмене через диск. В прикрепленном файле советник, на рисунке сигналы BS=-1; SB=-1; - считываются с диска и меняются правильно, может кто подскажет, в чем проблема? Красная линия соответствует :
Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);, а последний лучь - направлению BS=-1; - наклон вниз.
розовая соответствует :
Sell1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Sell2= iCustom(NULL, 0,"Kristi_Trend",3,1);, а последний лучь - направлению SB=-1; - наклон вниз.
Файлы:
trns.mq4  6 kb
 
Vinin:

И в советниках не стоит использовать NULL, лучше было бы Symbol() вместо NULL.



Почему?
 

Наверно надо изменить имена переменных

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Sell1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Sell2= iCustom(NULL, 0,"Kristi_Trend",3,1);

на

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Gerl1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Gerl2= iCustom(NULL, 0,"Kristi_Trend",3,1);

:-)

Piligrimm, в журнал не идут сообщения одно за одним, об успешной загрузке индикатора...?

 
Посмотри внимательно на эту строчку:
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,0,"macd sample", 16384,0,Green);
У тебя по умолчанию Стоплосс=0, если ты ее не изменяешь при установке, строка сразу даст ошибку т.к. Стоп равен цене открытия.
 

во-вторых, советник странным образом влияет на индикатор, в индикаторе по приходу нового бара запускаетя ехе-файл, если советник отключен - все нормально, если советник включен, то ехе-файл запускается одновременно дважды, как это устранить?

Могу предположить, что на графике с советником для наглядности запущен еще и индикатор. Таким образом, ехе-файл запускается с графика и индикатором, и советником, который обращается как бы к своему экземлпяру индикатора. Если действительно на графике с советником для наглядности запущен еще и индикатор, то можно убрать с графика индикатор и посмотреть, будет ли файл запускаться дважды.
 
Roger:
Посмотри внимательно на эту строчку:
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,0,"macd sample", 16384, 0,Green);
У тебя по умолчанию Стоплосс=0, если ты ее не изменяешь при установке, строка сразу даст ошибку т.к. Стоп равен цене открытия.

Сегодня рынок не работает - проверить не смогу, но ранее я пробовал этот советник с другим индикатором, и там Стоп был равен 100, но при использовании
iCustom торговля не шла, пришлось вставлять индикатор внутрь советника, тогда все работало. Сейчас этот вариант не пройдет, т.к. все расчеты из индикатора вынесены в ехе - файл, а индикатор только рисует график.

Martes 02.02.2008 10:04

во-вторых, советник странным образом влияет на индикатор, в индикаторе по приходу нового бара запускаетя ехе-файл, если советник отключен - все нормально, если советник включен, то ехе-файл запускается одновременно дважды, как это устранить?

"Могу предположить, что на графике с советником для наглядности запущен еще и индикатор. Таким образом, ехе-файл запускается с графика и индикатором, и советником, который обращается как бы к своему экземлпяру индикатора. Если действительно на графике с советником для наглядности запущен еще и индикатор, то можно убрать с графика индикатор и посмотреть, будет ли файл запускаться дважды."
Да, индикатор и советник на одном графике.
2232
Integer 02.02.2008 04:11

Наверно надо изменить имена переменных

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Sell1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Sell2= iCustom(NULL, 0,"Kristi_Trend",3,1);

на

Boy1= iCustom(NULL, 0,"Kristi_Trend",0,0);
Boy2= iCustom(NULL, 0,"Kristi_Trend",0,1);
Gerl1= iCustom(NULL, 0,"Kristi_Trend",3,0);
Gerl2= iCustom(NULL, 0,"Kristi_Trend",3,1);

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

 
У меня как то было: грелся камень, т.к. кулер зарос пылью и от того гремел, ХР при этом стоял,
но скорость заметно упала, хотя MT4 не глючил...
Так вот этот перегрев приводил к тому глючили исключительно мои индикаторы и советники.
Например, частично(!) не работал if else, произвольно менялась переменная extern, не прорисовывались линии.