Есть вот кусок кода, пытаюсь разобраться чтобы эти индюки работали вместе к примеру включаем 2 индикатора нужно 2 сигнала чтобы открылась продажа или покупка или 3 индикатора значит 3 сигнала
кто поможет пожалуйста
if(MACD) { if(MacdCurrent<0 && MacdCurrent>SignalCurrent) SignalMACD=OP_BUY; if(MacdCurrent>0 && MacdCurrent<SignalCurrent) SignalMACD=OP_SELL; } if(MovingAverage) { if((Xma>Yma) && Ask>Xma) SignalMA=OP_BUY; if((Xma<Yma) && Bid<Xma) SignalMA=OP_SELL; }
int rezz;
if(SignalMACD==OP_BUY || SignalMA==OP_BUY) int rezz = OrderSend(...); // Может так пойдет на примере МАшки с МАСД. Или я вопроса не понял.
if(SignalMACD==OP_SELL || SignalMA==OP_SELL) int rezz = OrderSend(...);
Включил 2 или 3 или 4 индикатора сигнал срабатывает от любова индикатора без подтверждения второго, нужно чтоб было сколько включено 2 к примеру значит 2 сигнала нужно чтоб открылась покупка или продажа
ща всячески перепробую )
Ребус
Для каждого индикатора заведите свою пару переменных с сигналами на покупки и на продажу отдельно. Если индикатор выключен, переменным присваивается тру, если включен - тут сами знаете.
В итог проверяете все переменные с && и получаете итоговый сигнал.
Для каждого индикатора заведите свою пару переменных с сигналами на покупки и на продажу отдельно. Если индикатор выключен, переменным присваивается тру, если включен - тут сами знаете.
В итог проверяете все переменные с && и получаете итоговый сигнал.
Так работает, но рисуется другая проблема, похоже другой код нужен для такого робота.
int GetSignal() { if(Signal_01)ind_01=indicator_01(); if(Signal_02)ind_02=indicator_02(); if(Signal_03)ind_03=indicator_03(); if(Signal_04)ind_04=indicator_04(); if(Signal_05)ind_05=indicator_05(); if(Signal_06)ind_06=indicator_06(); if(Signal_07)ind_07=indicator_07(); if(Signal_08)ind_08=indicator_08(); if(Signal_09)ind_09=indicator_09(); if(Buysignal()) return(OP_BUY); if(Sellsignal()) return(OP_SELL); return(-1); } //+------------------------------------------------------------------+ bool Buysignal() { bool sig01=(Signal_01)?false:true; bool sig02=(Signal_02)?false:true; bool sig03=(Signal_03)?false:true; bool sig04=(Signal_04)?false:true; bool sig05=(Signal_05)?false:true; bool sig06=(Signal_06)?false:true; bool sig07=(Signal_07)?false:true; bool sig08=(Signal_08)?false:true; bool sig09=(Signal_09)?false:true; if(Signal_01)sig01=(ind_01==OP_BUY)?true:false; if(Signal_02)sig02=(ind_02==OP_BUY)?true:false; if(Signal_03)sig03=(ind_03==OP_BUY)?true:false; if(Signal_04)sig04=(ind_04==OP_BUY)?true:false; if(Signal_05)sig05=(ind_05==OP_BUY)?true:false; if(Signal_06)sig06=(ind_06==OP_BUY)?true:false; if(Signal_07)sig07=(ind_07==OP_BUY)?true:false; if(Signal_08)sig08=(ind_08==OP_BUY)?true:false; if(Signal_09)sig09=(ind_09==OP_BUY)?true:false; if(!sig01)return(false); if(!sig02)return(false); if(!sig03)return(false); if(!sig04)return(false); if(!sig05)return(false); if(!sig06)return(false); if(!sig07)return(false); if(!sig08)return(false); if(!sig09)return(false); return(true); } //+------------------------------------------------------------------+ bool Sellsignal() { bool sig01=(Signal_01)?false:true; bool sig02=(Signal_02)?false:true; bool sig03=(Signal_03)?false:true; bool sig04=(Signal_04)?false:true; bool sig05=(Signal_05)?false:true; bool sig06=(Signal_06)?false:true; bool sig07=(Signal_07)?false:true; bool sig08=(Signal_08)?false:true; bool sig09=(Signal_09)?false:true; if(Signal_01)sig01=(ind_01==OP_SELL)?true:false; if(Signal_02)sig02=(ind_02==OP_SELL)?true:false; if(Signal_03)sig03=(ind_03==OP_SELL)?true:false; if(Signal_04)sig04=(ind_04==OP_SELL)?true:false; if(Signal_05)sig05=(ind_05==OP_SELL)?true:false; if(Signal_06)sig06=(ind_06==OP_SELL)?true:false; if(Signal_07)sig07=(ind_07==OP_SELL)?true:false; if(Signal_08)sig08=(ind_08==OP_SELL)?true:false; if(Signal_09)sig09=(ind_09==OP_SELL)?true:false; if(!sig01)return(false); if(!sig02)return(false); if(!sig03)return(false); if(!sig04)return(false); if(!sig05)return(false); if(!sig06)return(false); if(!sig07)return(false); if(!sig08)return(false); if(!sig09)return(false); return(true); } //+------------------------------------------------------------------+ int indicator_01() { double ma1 = iMA(_Symbol,_Period,ma_period,ma_shift,ma_method,ma_price,1); double ma2 = iMA(_Symbol,_Period,ma_period,ma_shift,ma_method,ma_price,2); double p_close1 = iClose(_Symbol,_Period,1); double p_close2 = iClose(_Symbol,_Period,2); if(p_close1>ma1&&p_close2<ma2)return(OP_BUY); if(p_close1<ma1&&p_close2>ma2)return(OP_SELL); return(-1); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int indicator_02() { double rsi=iRSI(_Symbol,_Period,rsi_period,rsi_price,1); if(rsi<=rsi_level_dw)return(OP_BUY); if(rsi>=rsi_level_up)return(OP_SELL); return(-1); } //+------------------------------------------------------------------+
Тоже очень долго голову ломал над этим, в итоге написал следующее
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть вот кусок кода, пытаюсь разобраться чтобы эти индюки работали вместе к примеру включаем 2 индикатора нужно 2 сигнала чтобы открылась продажа или покупка или 3 индикатора значит 3 сигнала
кто поможет пожалуйста