Как я могу вызвать OrderSend внутри пользовательского индикатора?

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

PlaySound("news.wav");
Alert(Symbol()," make an action"); 

Я хотел добавить туда функцию OrderSend для автопокупки-продажи и выглядит это так:

int ticket;        
PlaySound("news.wav");
Alert(Symbol()," make an action"); 
ticket=OrderSend(Symbol(),OP_SELL,1.0,Bid,2,Bid+7*Point,Bid-7*Point,"Sell",0,0, Red); 

Когда приходит время, сигнал есть, алерты есть, а приказов нет.

Сказано, что Торговые функции можно использовать в экспертах и ​​скриптах в документации: Торговые функции, но это должно быть сделано каким-то образом.

Как это сделать?


person Kamil    schedule 23.07.2013    source источник


Ответы (2)


Вы не можете торговать индикатором. Есть быстрый грязный способ сделать это. Вы можете установить GlobalVariable из индикатора, а затем иметь отдельный советник, который постоянно отслеживает глобальную переменную. Когда глобальная переменная установлена, советник может совершить сделку, а затем сбросить значение переменной.

Используйте GlobalVariableSet() в индикаторе и GlobalVariableGet() в советнике.

person Myles J    schedule 19.08.2013
comment
я бы предложил использовать отметку времени в качестве значения, используемого для указания условия, чтобы советник мог убедиться, что он не использует старые данные перед торговлей. например, иметь 2 переменные, одну для покупки, одну для продажи, назначить временную метку соответствующей, и EA сбрасывает ее на 0, когда закончите. - person unsynchronized; 28.12.2014

У вас нет разрешения на торговлю пользовательскими индикаторами, читайте статью ниже.

http://docs.mql4.com/runtime/tradepermission

Я думаю, что самый простой способ — превратить ваш пользовательский индикатор в советник. Это не займет много времени, если у вас есть опыт MQL4 кодирования.

person PraAnj    schedule 18.12.2015