Need logic help
-
Can someone please tell me how to put this into FxDreema.
I have my custom RSI MA indicator. I just don't understand the logic behind this...
extern int RSIPeriod=14; extern int Short_RSI_MA_periods=9; extern int Long_RSI_MA_periods=45; int arraysize=200; double RSI[]; double RSI_SMA[]; ArrayResize(RSI,arraysize); ArrayResize(RSI_SMA,arraysize); ArraySetAsSeries(RSI,true); for(int i3=arraysize-1;i3>=0;i3--) RSI[i3]=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i3); for(i3=arraysize-1;i3>=0;i3--) RSI_SMA[i3]=iMAOnArray(RSI,0,Short_RSI_MA_periods,0,MODE_SMA,i3); double RSI9 =RSI_SMA[1]; for(i3=arraysize-1;i3>=0;i3--) RSI[i3]=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i3); for(i3=arraysize-1;i3>=0;i3--) RSI_SMA[i3]=iMAOnArray(RSI,0,Long_RSI_MA_periods,0,MODE_SMA,i3); double RSI45 =RSI_SMA[1]; f(RSI9>RSI45) Long=true; if(RSI9<RSI45) Short=true;I think RSI9 is basically the RSI MA 9 line
and RSI45 is RSI MA 45 lineso if RSI9>RSI45 then go long and vice versa. Is it that simple?
Is the i3 the candle ID?
and what is the arraysize and Arrayresize and ArraySetSeries all about? -
You are asking programming questions, but I'm not sure that you will understand what is going on even if we tell you

i3 is just some temporary variable that is used in these "for" loops as an index. For each iteration of the loop this variable contains different value. 199, 198, 197... 2, 1, 0. Why this variable is called i3, I don't know.
Those "Long" and "Short" variables are just variables that are set to true (or not). They are not even defined in this code, so you would get error messages because of that. The whole code was bigger and these variables were used somewhere for some logic. Here in this example they do exactly nothing.
Arrayresize() is a function to resize an array. But do you know what is an array...
ArraySetSeries() - better read the documentation for this function. Even I don't understand it fully

-
Thanks for the reply,
You are right I still don't understand,
that code is only a sniped of a free EA I got... Don't know where...
I figured out the rest of it, but that I just don't know, I thought I got it...
This very basic EA is running but I want to use with something else...
Here is the whole code... I just want to know, if it is possible, how to get The value of RSI9 and RSI45. I thought is was just the basic Moving average of the RSI, but I'm not getting the same results...
extern int RSIPeriod=14; extern int Short_price_MA_periods=9; extern int Long_price_MA_periods=45; extern int Short_RSI_MA_periods=9; extern int Long_RSI_MA_periods=45; extern int Slippage=3; extern int pisto=0; //Stochastic Indicator period extern int pistok=5; // Stochastic Period(amount of bars) for the calculation of %K line extern int pistod=3; //Stochastic Averaging period for the calculation of %D line extern int istslow=3; //Stochastic Value of slowdown extern int pimacd=0; //Indicator period extern int fastpimacd=12; //Averaging period for calculation of a quick MA extern int slowpimacd=26; //Averaging period for calculation of a slow MA extern int signalpimacd=9; //Averaging period for calculation of a signal line extern int piwpr=0; //WPR Indicator period extern int piwprbar=14; //WPR Period (amount of bars) for indicator calculation extern int pidem=0; //Indicator period extern int pidemu=14; //Period of averaging for indicator calculation double Lots=1; // that mean 0.1 value if you want 1 lot type 10 double tp=17; // take profit double sl=7777; // stop loss int start() { int arraysize=200; double RSI[]; double RSI_SMA[]; ArrayResize(RSI,arraysize); ArrayResize(RSI_SMA,arraysize); ArraySetAsSeries(RSI,true); for(int i3=arraysize-1;i3>=0;i3--) RSI[i3]=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i3); for(i3=arraysize-1;i3>=0;i3--) RSI_SMA[i3]=iMAOnArray(RSI,0,Short_RSI_MA_periods,0,MODE_SMA,i3); double RSI9 =RSI_SMA[1]; for(i3=arraysize-1;i3>=0;i3--) RSI[i3]=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i3); for(i3=arraysize-1;i3>=0;i3--) RSI_SMA[i3]=iMAOnArray(RSI,0,Long_RSI_MA_periods,0,MODE_SMA,i3); double RSI45 =RSI_SMA[1]; double Price45=iMA(NULL,0, Long_price_MA_periods ,0,MODE_LWMA,PRICE_CLOSE,1); double Price9 =iMA(NULL,0, Short_price_MA_periods,0,MODE_SMA,PRICE_CLOSE,1); bool Long=false; bool Short=false; bool Sideways=false; if(Price9>Price45 && RSI9>RSI45) Long=true; if(Price9<Price45 && RSI9<RSI45) Short=true; if(Price9>Price45 && RSI9<RSI45) Sideways=true; if(Price9<Price45 && RSI9>RSI45) Sideways=true; if(Long==true && OrdersTotal()==0) { if(iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,1)<19&&iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,0)>=19) { if(iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,1)<iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_SIGNAL,1)&&iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,0)>=iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_SIGNAL,0)) { if(iDeMarker(NULL,pidem,pidemu,1)<0.35&&iDeMarker(NULL,pidem,pidemu,0)>=0.35) { if (iWPR(NULL,piwpr,piwprbar,1)<-81&&iWPR(NULL,piwpr,piwprbar,0)>=-81) {OrderSend(Symbol(),OP_BUY,Lots/10,Ask,Slippage,Ask-sl*Point,Ask+tp*Point,"Piotrek Buy");} } } } } if(Short==true && OrdersTotal()==0) { if(iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,1)>81&&iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,0)<=81) { if(iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,1)>iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_SIGNAL,1)&&iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_MAIN,0)<=iStochastic(NULL,pisto,pistok,pistod,istslow,MODE_EMA,0,MODE_SIGNAL,0)) { if(iDeMarker(NULL,pidem,pidemu,1)>0.63&&iDeMarker(NULL,pidem,pidemu,0)<=0.63) { if (iWPR(NULL,piwpr,piwprbar,1)>-19&&iWPR(NULL,piwpr,piwprbar,0)<=-19) {OrderSend(Symbol(),OP_SELL,Lots/10,Bid,Slippage,Bid+sl*Point,Bid-tp*Point,"Piotrek Sell");} } } } } }This is what I have...