Закрытие по сигналам

 
Добрый день! Кто подскажет как правильно прописать закрытие ордеров по сигналам двух индикаторам?
 
Anna_89:
Добрый день! Кто подскажет как правильно прописать закрытие ордеров по сигналам двух индикаторам?

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

вызываем iCustom(имя,параметры...), сравниваем значения, посылаем ordersend

 
transcendreamer:

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

вызываем iCustom(имя,параметры...), сравниваем значения, посылаем ordersend

А можете написать пример кода функции?

 
transcendreamer:

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

вызываем iCustom(имя,параметры...), сравниваем значения, посылаем ordersend

Вы забыли уточнить, что Вы привели пример для MQL4. В MQL4 можно возвращать значений индикаторов на каждом тике iCustom (MQL4), тогда как в MQL5 другая технология: происходит один единственный раз получение хендла пользовательского индикатора в OnInit() iCustom (MQL5), чтобы потом по этому хендлу получать значения индикатора.
 
Karputov Vladimir:
Вы забыли уточнить, что Вы привели пример для MQL4. В MQL4 можно возвращать значений индикаторов на каждом тике iCustom (MQL4), тогда как в MQL5 другая технология: происходит один единственный раз получение хендла пользовательского индикатора в OnInit() iCustom (MQL5), чтобы потом по этому хендлу получать значения индикатора.

совершенно справедливое замечание

на мой взгляд в мкл5 это более обескураживающе выглядит

 
transcendreamer:

совершенно справедливое замечание

на мой взгляд в мкл5 это более обескураживающе выглядит

Это только Ваше личное мнение.
 
Anna_89:

А можете написать пример кода функции?

если в MQL4 то вот например:

void OnTick()

{

double signal=signal();

if(signal*saved_signal<0 || reopening) go_close_all();

if(signal>0) if(count_orders()==0) go_buy();

if(signal<0) if(count_orders()==0) go_sell();

saved_signal=signal;

}

 здесь функцию signal нужно прописать под конкретные индикаторы

я ниже приведу свой пример:

double signal()

{

double f1=iRSI(NULL,0,14,PRICE_CLOSE,0)-50;

double f2=iCCI(NULL,0,14,PRICE_TYPICAL,0)/4;

double f3=iDeMarker(NULL,0,14,0)*100-50;

double f4=iStochastic(NULL,0,5,1,3,MODE_SMA,0,0,0)-50;

double m0=Close[0];

double m1=iMA(NULL,0,period_1,0,MODE_EMA,PRICE_CLOSE,0);

double m2=iMA(NULL,0,period_2,0,MODE_EMA,PRICE_CLOSE,0);

double trend = (m1-m0)*j1 + (m2-m1)*j2;

double oscillator = (f1*k1 + f2*k2 + f3*k3 + f4*k4);

if(trend>0 && oscillator>0) return(+1);

if(trend<0 && oscillator<0) return(-1);

return(0);

}

ну и конечно функции go_sell, go_buy, go_close_all тоже 

 
Karputov Vladimir:
Это только Ваше личное мнение.

совершенно верно, я так и написал - "на мой взгляд"

но поскольку Вы затронули эту тему, я продолжу:

я показал пример кода на MQL4 и MQL5 человеку не-программисту и он легко прочитал MQL4 и с затруднениями прочитал MQL5

я не буду вдаваться в дискурс что MQL5 бесспорно более мощный язык

я лишь поверхностно отметил тот факт что MQL5 требует большего программерского опыта

 
Karputov Vladimir:
Вы забыли уточнить, что Вы привели пример для MQL4. В MQL4 можно возвращать значений индикаторов на каждом тике iCustom (MQL4), тогда как в MQL5 другая технология: происходит один единственный раз получение хендла пользовательского индикатора в OnInit() iCustom (MQL5), чтобы потом по этому хендлу получать значения индикатора.

но если разобраться то в конце концов получение по хэндлу получается проще в итоге

равно как и отправка ордеров с параметрами через точку более удобно чем в mql4

но сначала нужно привыкнуть к нему 

 
Брейк.
 
Спасибо за советы. Буду пробовать.
Причина обращения: