//+------------------------------------------------------------------+ //| Perceptron.mq5 | //| Copyright 2010, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2010, Rafael Maia de Amorim." #property copyright "rdamorim@click21.com.br" #property link "http://www.mql5.com" #property version "1.00" #include MqlTradeRequest trReq; MqlTradeResult trRez; input int SL=100; // Stop Loss input int TP=40; // Take Profit input int SinMax=5; input int SinMin=0; input int MAGIC=999; // MAGIC number input double SinPlus=0.03; input double SinMinus=0.03; int LastTradeType=0; int sl; int tp; double Balance=0; double LastBalance=0; //ma signal (IND1) input int ma1 = 5; input int ma2 = 9; int h_ma1=0; double ma1_buffer[]; int h_ma2=0; double ma2_buffer[]; //end of ma signal //RSI signal (IND2) input int RSI=14; int h_rsi=0; double rsi_buffer[]; //end RSI Signal //CCI signal (IND3) input int CCI=14; int h_cci=0; double cci_buffer[]; //end CCI Signal //ma signal (IND4) input int ma_a=5; int h_ma_a=0; double ma1_buffer_a[]; //end of ma signal //IAO Signal input int IAO=20; int h_ao=0; double ao_buffer[]; //end IAO Signal //start of Height Indicators double NNS1IND2 = 1; double NNS1IND3 = 1; double NNS1IND4 = 1; double NNS1IND5 = 1; double NNS2IND1 = 1; double NNS2IND3 = 1; double NNS2IND4 = 1; double NNS2IND5 = 1; double NNS3IND1 = 1; double NNS3IND2 = 1; double NNS3IND4 = 1; double NNS3IND5 = 1; double NNS4IND1 = 1; double NNS4IND2 = 1; double NNS4IND3 = 1; double NNS4IND5 = 1; double NNS5IND1 = 1; double NNS5IND2 = 1; double NNS5IND3 = 1; double NNS5IND4 = 1; //end of Height Indicators //start of Height NeuralNetworks double NNS1 = 1; double NNS2 = 1; double NNS3 = 1; double NNS4 = 1; double NNS5 = 1; //end of Height NeuralNetworks //last start of Height Indicators int LAST1IND2 = 0; int LAST1IND3 = 0; int LAST1IND4 = 0; int LAST1IND5 = 0; int LAST2IND1 = 0; int LAST2IND3 = 0; int LAST2IND4 = 0; int LAST2IND5 = 0; int LAST3IND1 = 0; int LAST3IND2 = 0; int LAST3IND4 = 0; int LAST3IND5 = 0; int LAST4IND1 = 0; int LAST4IND2 = 0; int LAST4IND3 = 0; int LAST4IND5 = 0; int LAST5IND1 = 0; int LAST5IND2 = 0; int LAST5IND3 = 0; int LAST5IND4 = 0; //end last of Height Indicators //last start of Height NeuralNetworks double LASTNNS1 = 1; double LASTNNS2 = 1; double LASTNNS3 = 1; double LASTNNS4 = 1; double LASTNNS5 = 1; //end last of Height NeuralNetworks //last profit double LASTPROFIT=0; int LASTTYPEORDER=0; int setLast=0; double StartBrainReturn=0; double NNReturn=0; double brainReturn=0; int IND1_V = 0; int IND2_V = 0; int IND3_V = 0; int IND4_V = 0; int IND5_V = 0; double NN1_V = 0; double NN2_V = 0; double NN3_V = 0; double NN4_V = 0; double NN5_V = 0; string Valor = ""; double profit= 0; //ned of last profit //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ZeroMemory(trReq); //Set default vaules for all new order requests trReq.action=TRADE_ACTION_DEAL; trReq.magic=MAGIC; trReq.symbol=Symbol(); // Trade symbol trReq.volume=0.1; // Requested volume for a deal in lots trReq.deviation=1; // Maximal possible deviation from the requested price trReq.type_filling=ORDER_FILLING_FOK; // Order execution type trReq.type_time=ORDER_TIME_GTC; // Order execution time trReq.comment="Ultimate Neural"; h_ma1=iMA(Symbol(),Period(),ma1,0,MODE_SMA,PRICE_CLOSE); h_ma2=iMA(Symbol(),Period(),ma2,0,MODE_SMA,PRICE_CLOSE); h_rsi=iRSI(Symbol(),Period(),RSI,PRICE_CLOSE); h_cci=iCCI(Symbol(),Period(),CCI,PRICE_TYPICAL); h_ma_a=iMA(Symbol(),Period(),ma_a,0,MODE_SMA,PRICE_CLOSE); h_ao=iAO(Symbol(),Period()); //input parameters are ReadOnly tp=TP; sl=SL; //end //Suppoprt for acount with 5 decimals if(_Digits==5) { sl*=10; tp*=10; } //end LastBalance=AccountInfoDouble(ACCOUNT_BALANCE); return(0); //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { MqlTick tick; //variable for tick info if(!SymbolInfoTick(Symbol(),tick)) { Print("Failed to get Symbol info!"); return; } IND1_V = 0; IND2_V = 0; IND3_V = 0; IND4_V = 0; IND5_V = 0; IND1_V = IND1(); IND2_V = IND2(); IND3_V = IND3(); IND4_V = IND4(); IND5_V = IND5(); int orders=OrdersTotal(); NN1_V = 0; NN2_V = 0; NN3_V = 0; NN4_V = 0; NN5_V = 0; NN1_V = NN1(IND2_V,IND3_V,IND4_V,IND5_V); NN2_V = NN2(IND1_V,IND3_V,IND4_V,IND5_V); NN3_V = NN3(IND1_V,IND2_V,IND4_V,IND5_V); NN4_V = NN4(IND1_V,IND2_V,IND3_V,IND5_V); NN5_V = NN5(IND1_V,IND2_V,IND3_V,IND4_V); brainReturn=StartBrain(NN1_V,NN2_V,NN3_V,NN4_V,NN5_V); if(brainReturn>0 && LastTradeType!=2 && !PositionSelect(_Symbol)) { printf(Valor); SetLastIndNN(IND1_V,IND2_V,IND3_V,IND4_V,IND5_V,NN1_V,NN2_V,NN3_V,NN4_V,NN5_V); setLast=1; trReq.price=tick.ask; // SymbolInfoDouble(NULL,SYMBOL_ASK); trReq.sl=tick.ask-_Point*sl; // Stop Loss level of the order trReq.tp=tick.ask+_Point*tp; // Take Profit level of the order trReq.type=ORDER_TYPE_BUY; // Order type LastTradeType=2; OrderSend(trReq,trRez); } else if(brainReturn<0 && LastTradeType!=1 && !PositionSelect(_Symbol)) { printf(Valor); SetLastIndNN(IND1_V,IND2_V,IND3_V,IND4_V,IND5_V,NN1_V,NN2_V,NN3_V,NN4_V,NN5_V); setLast=1; trReq.price=tick.bid; trReq.sl=tick.bid+_Point*sl; // Stop Loss level of the order trReq.tp=tick.bid-_Point*tp; // Take Profit level of the order trReq.type=ORDER_TYPE_SELL; // Order type LastTradeType=1; OrderSend(trReq,trRez); Valor=""; } } //+------------------------------------------------------------------+ //| Call PERCEPTRON Neural Networks | //+------------------------------------------------------------------+ double StartBrain(double NN1_V,double NN2_V,double NN3_V,double NN4_V,double NN5_V) { StartBrainReturn = 0; StartBrainReturn = (NN1_V * NNS1) + (NN2_V * NNS2) + (NN3_V * NNS3) + (NN4_V * NNS4) + (NN5_V * NNS5); return(StartBrainReturn); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double NN1(int IND2_V,int IND3_V,int IND4_V,int IND5_V) { NNReturn = 0; NNReturn = (IND2_V * NNS1IND2) + (IND3_V * NNS1IND3) + (IND4_V * NNS1IND4) + (IND5_V * NNS1IND5); return(NNReturn); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double NN2(int IND1_V,int IND3_V,int IND4_V,int IND5_V) { NNReturn = 0; NNReturn = (IND1_V * NNS2IND1) + (IND3_V * NNS2IND3) + (IND4_V * NNS2IND4) + (IND5_V * NNS2IND5); return(NNReturn); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double NN3(int IND1_V,int IND2_V,int IND4_V,int IND5_V) { NNReturn = 0; NNReturn = (IND1_V * NNS3IND1) + (IND2_V * NNS3IND2) + (IND4_V * NNS3IND4) + (IND5_V * NNS3IND5); return(NNReturn); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double NN4(int IND1_V,int IND2_V,int IND3_V,int IND5_V) { NNReturn = 0; NNReturn = (IND1_V * NNS4IND1) + (IND2_V * NNS4IND2) + (IND3_V * NNS4IND3) + (IND5_V * NNS4IND5); return(NNReturn); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double NN5(int IND1_V,int IND2_V,int IND3_V,int IND4_V) { NNReturn = 0; NNReturn = (IND1_V * NNS5IND1) + (IND2_V * NNS5IND2) + (IND3_V * NNS5IND3) + (IND4_V * NNS5IND4); return(NNReturn); } //+------------------------------------------------------------------+ //| Trade Signals | //+------------------------------------------------------------------+ int IND1(void)//Cross Moving Average { int sig=0; if(CopyBuffer(h_ma1,0,0,3,ma1_buffer)<3) return(0); if(!ArraySetAsSeries(ma1_buffer,true)) return(0); if(CopyBuffer(h_ma2,0,0,2,ma2_buffer)<2) return(0); if(!ArraySetAsSeries(ma1_buffer,true)) return(0); if(ma1_buffer[2]ma2_buffer[1]) sig=1; else if(ma1_buffer[2]>ma2_buffer[1] && ma1_buffer[1]30) sig=1; else if(rsi_buffer[2]>70 && rsi_buffer[1]<70) sig=-1; else sig=0; return(sig); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int IND3() { int sig=0; if(CopyBuffer(h_cci,0,0,3,cci_buffer)<3) return(0); if(!ArraySetAsSeries(cci_buffer,true)) return(0); //--- check the condition and set a value for sig if(cci_buffer[2]<-100 && cci_buffer[1]>-100) sig=1; else if(cci_buffer[2]>100 && cci_buffer[1]<100) sig=-1; else sig=0; //--- return the trade signal return(sig); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int IND4(void) { int sig=0; if(CopyBuffer(h_ma1,0,0,3,ma1_buffer_a)<3) return(0); if(!ArraySetAsSeries(ma1_buffer_a,true)) return(0); if(ma1_buffer_a[1]>ma1_buffer_a[2]) sig=1; else if(ma1_buffer_a[1]0.0 && LastTradeType==1) { setLast=0; //NN1 if(LASTNNS1>0) { if(NNS10) { NNS1IND2=NNS1IND2+SinPlus; } else if(LAST1IND2<0) { NNS1IND2=NNS1IND2-SinMinus; } if(LAST1IND3>0) { NNS1IND3=NNS1IND3+SinPlus; } else if(LAST1IND3<0) { NNS1IND3=NNS1IND3-SinMinus; } if(LAST1IND4>0) { NNS1IND4=NNS1IND4+SinPlus; } else if(LAST1IND4<0) { NNS1IND4=NNS1IND4-SinMinus; } if(LAST1IND5>0) { NNS1IND5=NNS1IND5+SinPlus; } else if(LAST1IND5<0) { NNS1IND5=NNS1IND5-SinMinus; } } else if(LASTNNS1<0) { if(NNS1>SinMin) NNS1=NNS1-SinMinus; if(LAST1IND2>0) { NNS1IND2=NNS1IND2+SinPlus; } else if(LAST1IND2<0) { NNS1IND2=NNS1IND2-SinMinus; } if(LAST1IND3>0) { NNS1IND3=NNS1IND3+SinPlus; } else if(LAST1IND3<0) { NNS1IND3=NNS1IND3-SinMinus; } if(LAST1IND4>0) { NNS1IND4=NNS1IND4+SinPlus; } else if(LAST1IND4<0) { NNS1IND4=NNS1IND4-SinMinus; } if(LAST1IND5>0) { NNS1IND5=NNS1IND5+SinPlus; } else if(LAST1IND5<0) { NNS1IND5=NNS1IND5-SinMinus; } } //NN2 if(LASTNNS2>0) { if(NNS20) { NNS2IND1=NNS2IND1+SinPlus; } else if(LAST2IND1<0) { NNS2IND1=NNS2IND1-SinMinus; } if(LAST2IND3>0) { NNS2IND3=NNS2IND3+SinPlus; } else if(LAST2IND3<0) { NNS2IND3=NNS2IND3-SinMinus; } if(LAST2IND4>0) { NNS2IND4=NNS2IND4+SinPlus; } else if(LAST2IND4<0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST2IND5>0) { NNS2IND5=NNS2IND5+SinPlus; } else if(LAST2IND5<0) { NNS2IND5=NNS2IND5-SinMinus; } } else if(LASTNNS2<0) { if(NNS2>SinMin) NNS2=NNS2-SinMinus; if(LAST2IND1>0) { NNS2IND1=NNS2IND1+SinPlus; } else if(LAST2IND1<0) { NNS2IND1=NNS2IND1-SinMinus; } if(LAST2IND3>0) { NNS2IND3=NNS2IND3+SinPlus; } else if(LAST2IND3<0) { NNS2IND3=NNS2IND3-SinMinus; } if(LAST2IND4>0) { NNS2IND4=NNS2IND4+SinPlus; } else if(LAST2IND4<0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST2IND5>0) { NNS2IND5=NNS2IND5+SinPlus; } else if(LAST2IND5<0) { NNS2IND5=NNS2IND5-SinMinus; } } //NN3 if(LASTNNS3>0) { if(NNS30) { NNS3IND1=NNS3IND1+SinPlus; } else if(LAST3IND1<0) { NNS3IND1=NNS3IND1-SinMinus; } if(LAST3IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST3IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST3IND4>0) { NNS3IND4=NNS3IND4+SinPlus; } else if(LAST3IND4<0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST3IND5>0) { NNS3IND5=NNS3IND5+SinPlus; } else if(LAST3IND5<0) { NNS3IND5=NNS3IND5-SinMinus; } } else if(LASTNNS3<0) { if(NNS3>SinMin) NNS3=NNS3-SinMinus; if(LAST3IND1>0) { NNS3IND1=NNS3IND1+SinPlus; } else if(LAST3IND1<0) { NNS3IND1=NNS3IND1-SinMinus; } if(LAST3IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST3IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST3IND4>0) { NNS3IND4=NNS3IND4+SinPlus; } else if(LAST3IND4<0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST3IND5>0) { NNS3IND5=NNS3IND5+SinPlus; } else if(LAST3IND5<0) { NNS3IND5=NNS3IND5-SinMinus; } } //NN4 if(LASTNNS4>0) { if(NNS40) { NNS4IND1=NNS4IND1+SinPlus; } else if(LAST4IND1<0) { NNS4IND1=NNS4IND1-SinMinus; } if(LAST4IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST4IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST4IND3>0) { NNS4IND3=NNS4IND3+SinPlus; } else if(LAST4IND3<0) { NNS4IND3=NNS4IND3-SinMinus; } if(LAST4IND5>0) { NNS4IND5=NNS4IND5+SinPlus; } else if(LAST4IND5<0) { NNS4IND5=NNS4IND5-SinMinus; } } else if(LASTNNS4<0) { if(NNS4>SinMin) NNS4=NNS4-SinMinus; if(LAST4IND1>0) { NNS4IND1=NNS4IND1+SinPlus; } else if(LAST4IND1<0) { NNS4IND1=NNS4IND1-SinMinus; } if(LAST4IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST4IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST4IND3>0) { NNS4IND3=NNS4IND3+SinPlus; } else if(LAST4IND3<0) { NNS4IND3=NNS4IND3-SinMinus; } if(LAST4IND5>0) { NNS4IND5=NNS4IND5+SinPlus; } else if(LAST4IND5<0) { NNS4IND5=NNS4IND5-SinMinus; } } //NN5 if(LASTNNS5>0) { if(NNS50) { NNS5IND1=NNS5IND1+SinPlus; } else if(LAST5IND1<0) { NNS5IND1=NNS5IND1-SinMinus; } if(LAST5IND2>0) { NNS5IND2=NNS5IND2+SinPlus; } else if(LAST5IND2<0) { NNS5IND2=NNS5IND2-SinMinus; } if(LAST5IND3>0) { NNS5IND3=NNS5IND3+SinPlus; } else if(LAST5IND3<0) { NNS5IND3=NNS5IND3-SinMinus; } if(LAST5IND4>0) { NNS5IND4=NNS5IND4+SinPlus; } else if(LAST5IND4<0) { NNS5IND4=NNS5IND4-SinMinus; } } else if(LASTNNS5<0) { if(NNS5>SinMin) NNS5=NNS5-SinMinus; if(LAST5IND1>0) { NNS5IND1=NNS5IND1+SinPlus; } else if(LAST5IND1<0) { NNS5IND1=NNS5IND1-SinMinus; } if(LAST5IND2>0) { NNS5IND2=NNS5IND2+SinPlus; } else if(LAST5IND2<0) { NNS5IND2=NNS5IND2-SinMinus; } if(LAST5IND3>0) { NNS5IND3=NNS5IND3+SinPlus; } else if(LAST5IND3<0) { NNS5IND3=NNS5IND3-SinMinus; } if(LAST5IND4>0) { NNS5IND4=NNS5IND4+SinPlus; } else if(LAST5IND4<0) { NNS5IND4=NNS5IND4-SinMinus; } } } if(profit>0.0 && LastTradeType==2) { setLast=0; //NN1 if(LASTNNS1<0) { if(NNS10) { NNS1IND2=NNS1IND2-SinMinus; } if(LAST1IND3<0) { NNS1IND3=NNS1IND3+SinPlus; } else if(LAST1IND3>0) { NNS1IND3=NNS1IND3-SinMinus; } if(LAST1IND4<0) { NNS1IND4=NNS1IND4+SinPlus; } else if(LAST1IND4>0) { NNS1IND4=NNS1IND4-SinMinus; } if(LAST1IND5<0) { NNS1IND5=NNS1IND5+SinPlus; } else if(LAST1IND5>0) { NNS1IND5=NNS1IND5-SinMinus; } } else if(LASTNNS1>0) { if(NNS1>SinMin) NNS1=NNS1-SinMinus; if(LAST1IND2<0) { NNS1IND2=NNS1IND2+SinPlus; } else if(LAST1IND2>0) { NNS1IND2=NNS1IND2-SinMinus; } if(LAST1IND3<0) { NNS1IND3=NNS1IND3+SinPlus; } else if(LAST1IND3>0) { NNS1IND3=NNS1IND3-SinMinus; } if(LAST1IND4<0) { NNS1IND4=NNS1IND4+SinPlus; } else if(LAST1IND4>0) { NNS1IND4=NNS1IND4-SinMinus; } if(LAST1IND5<0) { NNS1IND5=NNS1IND5+SinPlus; } else if(LAST1IND5>0) { NNS1IND5=NNS1IND5-SinMinus; } } //NN2 if(LASTNNS2<0) { if(NNS20) { NNS2IND1=NNS2IND1-SinMinus; } if(LAST2IND3<0) { NNS2IND3=NNS2IND3+SinPlus; } else if(LAST2IND3>0) { NNS2IND3=NNS2IND3-SinMinus; } if(LAST2IND4<0) { NNS2IND4=NNS2IND4+SinPlus; } else if(LAST2IND4>0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST2IND5<0) { NNS2IND5=NNS2IND5+SinPlus; } else if(LAST2IND5>0) { NNS2IND5=NNS2IND5-SinMinus; } } else if(LASTNNS2>0) { if(NNS2>SinMin) NNS2=NNS2-SinMinus; if(LAST2IND1<0) { NNS2IND1=NNS2IND1+SinPlus; } else if(LAST2IND1>0) { NNS2IND1=NNS2IND1-SinMinus; } if(LAST2IND3<0) { NNS2IND3=NNS2IND3+SinPlus; } else if(LAST2IND3>0) { NNS2IND3=NNS2IND3-SinMinus; } if(LAST2IND4<0) { NNS2IND4=NNS2IND4+SinPlus; } else if(LAST2IND4>0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST2IND5<0) { NNS2IND5=NNS2IND5+SinPlus; } else if(LAST2IND5>0) { NNS2IND5=NNS2IND5-SinMinus; } } //NN3 if(LASTNNS3<0) { if(NNS30) { NNS3IND1=NNS3IND1-SinMinus; } if(LAST3IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST3IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST3IND4<0) { NNS3IND4=NNS3IND4+SinPlus; } else if(LAST3IND4>0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST3IND5<0) { NNS3IND5=NNS3IND5+SinPlus; } else if(LAST3IND5>0) { NNS3IND5=NNS3IND5-SinMinus; } } else if(LASTNNS3>0) { if(NNS3>SinMin) NNS3=NNS3-SinMinus; if(LAST3IND1<0) { NNS3IND1=NNS3IND1+SinPlus; } else if(LAST3IND1>0) { NNS3IND1=NNS3IND1-SinMinus; } if(LAST3IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST3IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST3IND4<0) { NNS3IND4=NNS3IND4+SinPlus; } else if(LAST3IND4>0) { NNS2IND4=NNS2IND4-SinMinus; } if(LAST3IND5<0) { NNS3IND5=NNS3IND5+SinPlus; } else if(LAST3IND5>0) { NNS3IND5=NNS3IND5-SinMinus; } } //NN4 if(LASTNNS4<0) { if(NNS40) { NNS4IND1=NNS4IND1-SinMinus; } if(LAST4IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST4IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST4IND3<0) { NNS4IND3=NNS4IND3+SinPlus; } else if(LAST4IND3>0) { NNS4IND3=NNS4IND3-SinMinus; } if(LAST4IND5<0) { NNS4IND5=NNS4IND5+SinPlus; } else if(LAST4IND5>0) { NNS4IND5=NNS4IND5-SinMinus; } } else if(LASTNNS4>0) { if(NNS4>SinMin) NNS4=NNS4-SinMinus; if(LAST4IND1<0) { NNS4IND1=NNS4IND1+SinPlus; } else if(LAST4IND1>0) { NNS4IND1=NNS4IND1-SinMinus; } if(LAST4IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } else if(LAST4IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } if(LAST4IND3<0) { NNS4IND3=NNS4IND3+SinPlus; } else if(LAST4IND3>0) { NNS4IND3=NNS4IND3-SinMinus; } if(LAST4IND5<0) { NNS4IND5=NNS4IND5+SinPlus; } else if(LAST4IND5>0) { NNS4IND5=NNS4IND5-SinMinus; } } //NN5 if(LASTNNS5<0) { if(NNS50) { NNS5IND1=NNS5IND1-SinMinus; } if(LAST5IND2<0) { NNS5IND2=NNS5IND2+SinPlus; } else if(LAST5IND2>0) { NNS5IND2=NNS5IND2-SinMinus; } if(LAST5IND3<0) { NNS5IND3=NNS5IND3+SinPlus; } else if(LAST5IND3>0) { NNS5IND3=NNS5IND3-SinMinus; } if(LAST5IND4<0) { NNS5IND4=NNS5IND4+SinPlus; } else if(LAST5IND4>0) { NNS5IND4=NNS5IND4-SinMinus; } } else if(LASTNNS5>0) { if(NNS5>SinMin) NNS5=NNS5-SinMinus; if(LAST5IND1<0) { NNS5IND1=NNS5IND1+SinPlus; } else if(LAST5IND1>0) { NNS5IND1=NNS5IND1-SinMinus; } if(LAST5IND2<0) { NNS5IND2=NNS5IND2+SinPlus; } else if(LAST5IND2>0) { NNS5IND2=NNS5IND2-SinMinus; } if(LAST5IND3<0) { NNS5IND3=NNS5IND3+SinPlus; } else if(LAST5IND3>0) { NNS5IND3=NNS5IND3-SinMinus; } if(LAST5IND4<0) { NNS5IND4=NNS5IND4+SinPlus; } else if(LAST5IND4>0) { NNS5IND4=NNS5IND4-SinMinus; } } } //tratamento sinopses para perdas //1 = buy, 2 == sell if(profit<0.0 && LastTradeType==1) { setLast=0; //NN1 if(LASTNNS1>0) { if(NNS10) { NNS1IND2=NNS1IND2-SinMinus; } else if(LAST1IND2<0) { NNS1IND2=NNS1IND2+SinPlus; } if(LAST1IND3>0) { NNS1IND3=NNS1IND3-SinMinus; } else if(LAST1IND3<0) { NNS1IND3=NNS1IND3+SinPlus; } if(LAST1IND4>0) { NNS1IND4=NNS1IND4-SinMinus; } else if(LAST1IND4<0) { NNS1IND4=NNS1IND4+SinPlus; } if(LAST1IND5>0) { NNS1IND5=NNS1IND5-SinMinus; } else if(LAST1IND5<0) { NNS1IND5=NNS1IND5+SinPlus; } } else if(LASTNNS1<0) { if(NNS1>SinMin) NNS1=NNS1+SinPlus; if(LAST1IND2>0) { NNS1IND2=NNS1IND2-SinMinus; } else if(LAST1IND2<0) { NNS1IND2=NNS1IND2+SinPlus; } if(LAST1IND3>0) { NNS1IND3=NNS1IND3-SinMinus; } else if(LAST1IND3<0) { NNS1IND3=NNS1IND3+SinPlus; } if(LAST1IND4>0) { NNS1IND4=NNS1IND4-SinMinus; } else if(LAST1IND4<0) { NNS1IND4=NNS1IND4+SinPlus; } if(LAST1IND5>0) { NNS1IND5=NNS1IND5-SinMinus; } else if(LAST1IND5<0) { NNS1IND5=NNS1IND5+SinPlus; } } //NN2 if(LASTNNS2>0) { if(NNS20) { NNS2IND1=NNS2IND1-SinMinus; } else if(LAST2IND1<0) { NNS2IND1=NNS2IND1+SinPlus; } if(LAST2IND3>0) { NNS2IND3=NNS2IND3-SinMinus; } else if(LAST2IND3<0) { NNS2IND3=NNS2IND3+SinPlus; } if(LAST2IND4>0) { NNS2IND4=NNS2IND4-SinMinus; } else if(LAST2IND4<0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST2IND5>0) { NNS2IND5=NNS2IND5-SinMinus; } else if(LAST2IND5<0) { NNS2IND5=NNS2IND5+SinPlus; } } else if(LASTNNS2<0) { if(NNS2>SinMin) NNS2=NNS2+SinPlus; if(LAST2IND1>0) { NNS2IND1=NNS2IND1-SinMinus; } else if(LAST2IND1<0) { NNS2IND1=NNS2IND1+SinPlus; } if(LAST2IND3>0) { NNS2IND3=NNS2IND3-SinMinus; } else if(LAST2IND3<0) { NNS2IND3=NNS2IND3+SinPlus; } if(LAST2IND4>0) { NNS2IND4=NNS2IND4-SinMinus; } else if(LAST2IND4<0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST2IND5>0) { NNS2IND5=NNS2IND5-SinMinus; } else if(LAST2IND5<0) { NNS2IND5=NNS2IND5+SinPlus; } } //NN3 if(LASTNNS3>0) { if(NNS30) { NNS3IND1=NNS3IND1-SinMinus; } else if(LAST3IND1<0) { NNS3IND1=NNS3IND1+SinPlus; } if(LAST3IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST3IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST3IND4>0) { NNS3IND4=NNS3IND4-SinMinus; } else if(LAST3IND4<0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST3IND5>0) { NNS3IND5=NNS3IND5-SinMinus; } else if(LAST3IND5<0) { NNS3IND5=NNS3IND5+SinPlus; } } else if(LASTNNS3<0) { if(NNS3>SinMin) NNS3=NNS3+SinPlus; if(LAST3IND1>0) { NNS3IND1=NNS3IND1-SinMinus; } else if(LAST3IND1<0) { NNS3IND1=NNS3IND1+SinPlus; } if(LAST3IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST3IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST3IND4>0) { NNS3IND4=NNS3IND4-SinMinus; } else if(LAST3IND4<0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST3IND5>0) { NNS3IND5=NNS3IND5-SinMinus; } else if(LAST3IND5<0) { NNS3IND5=NNS3IND5+SinPlus; } } //NN4 if(LASTNNS4>0) { if(NNS40) { NNS4IND1=NNS4IND1-SinMinus; } else if(LAST4IND1<0) { NNS4IND1=NNS4IND1+SinPlus; } if(LAST4IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST4IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST4IND3>0) { NNS4IND3=NNS4IND3-SinMinus; } else if(LAST4IND3<0) { NNS4IND3=NNS4IND3+SinPlus; } if(LAST4IND5>0) { NNS4IND5=NNS4IND5-SinMinus; } else if(LAST4IND5<0) { NNS4IND5=NNS4IND5+SinPlus; } } else if(LASTNNS4<0) { if(NNS4>SinMin) NNS4=NNS4+SinPlus; if(LAST4IND1>0) { NNS4IND1=NNS4IND1-SinMinus; } else if(LAST4IND1<0) { NNS4IND1=NNS4IND1+SinPlus; } if(LAST4IND2>0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST4IND2<0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST4IND3>0) { NNS4IND3=NNS4IND3-SinMinus; } else if(LAST4IND3<0) { NNS4IND3=NNS4IND3+SinPlus; } if(LAST4IND5>0) { NNS4IND5=NNS4IND5-SinMinus; } else if(LAST4IND5<0) { NNS4IND5=NNS4IND5+SinPlus; } } //NN5 if(LASTNNS5>0) { if(NNS50) { NNS5IND1=NNS5IND1-SinMinus; } else if(LAST5IND1<0) { NNS5IND1=NNS5IND1+SinPlus; } if(LAST5IND2>0) { NNS5IND2=NNS5IND2-SinMinus; } else if(LAST5IND2<0) { NNS5IND2=NNS5IND2+SinPlus; } if(LAST5IND3>0) { NNS5IND3=NNS5IND3-SinMinus; } else if(LAST5IND3<0) { NNS5IND3=NNS5IND3+SinPlus; } if(LAST5IND4>0) { NNS5IND4=NNS5IND4-SinMinus; } else if(LAST5IND4<0) { NNS5IND4=NNS5IND4+SinPlus; } } else if(LASTNNS5<0) { if(NNS5>SinMin) NNS5=NNS5+SinPlus; if(LAST5IND1>0) { NNS5IND1=NNS5IND1-SinMinus; } else if(LAST5IND1<0) { NNS5IND1=NNS5IND1+SinPlus; } if(LAST5IND2>0) { NNS5IND2=NNS5IND2-SinMinus; } else if(LAST5IND2<0) { NNS5IND2=NNS5IND2+SinPlus; } if(LAST5IND3>0) { NNS5IND3=NNS5IND3-SinMinus; } else if(LAST5IND3<0) { NNS5IND3=NNS5IND3+SinPlus; } if(LAST5IND4>0) { NNS5IND4=NNS5IND4-SinMinus; } else if(LAST5IND4<0) { NNS5IND4=NNS5IND4+SinPlus; } } } if(profit<0.0 && LastTradeType==2) { setLast=0; //NN1 if(LASTNNS1<0) { if(NNS10) { NNS1IND2=NNS1IND2+SinPlus; } if(LAST1IND3<0) { NNS1IND3=NNS1IND3-SinMinus; } else if(LAST1IND3>0) { NNS1IND3=NNS1IND3+SinPlus; } if(LAST1IND4<0) { NNS1IND4=NNS1IND4-SinMinus; } else if(LAST1IND4>0) { NNS1IND4=NNS1IND4+SinPlus; } if(LAST1IND5<0) { NNS1IND5=NNS1IND5-SinMinus; } else if(LAST1IND5>0) { NNS1IND5=NNS1IND5+SinPlus; } } else if(LASTNNS1>0) { if(NNS1>SinMin) NNS1=NNS1+SinPlus; if(LAST1IND2<0) { NNS1IND2=NNS1IND2-SinMinus; } else if(LAST1IND2>0) { NNS1IND2=NNS1IND2+SinPlus; } if(LAST1IND3<0) { NNS1IND3=NNS1IND3-SinMinus; } else if(LAST1IND3>0) { NNS1IND3=NNS1IND3+SinPlus; } if(LAST1IND4<0) { NNS1IND4=NNS1IND4-SinMinus; } else if(LAST1IND4>0) { NNS1IND4=NNS1IND4+SinPlus; } if(LAST1IND5<0) { NNS1IND5=NNS1IND5-SinMinus; } else if(LAST1IND5>0) { NNS1IND5=NNS1IND5+SinPlus; } } //NN2 if(LASTNNS2<0) { if(NNS20) { NNS2IND1=NNS2IND1+SinPlus; } if(LAST2IND3<0) { NNS2IND3=NNS2IND3-SinMinus; } else if(LAST2IND3>0) { NNS2IND3=NNS2IND3+SinPlus; } if(LAST2IND4<0) { NNS2IND4=NNS2IND4-SinMinus; } else if(LAST2IND4>0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST2IND5<0) { NNS2IND5=NNS2IND5-SinMinus; } else if(LAST2IND5>0) { NNS2IND5=NNS2IND5+SinPlus; } } else if(LASTNNS2>0) { if(NNS2>SinMin) NNS2=NNS2+SinPlus; if(LAST2IND1<0) { NNS2IND1=NNS2IND1-SinMinus; } else if(LAST2IND1>0) { NNS2IND1=NNS2IND1+SinPlus; } if(LAST2IND3<0) { NNS2IND3=NNS2IND3-SinMinus; } else if(LAST2IND3>0) { NNS2IND3=NNS2IND3+SinPlus; } if(LAST2IND4<0) { NNS2IND4=NNS2IND4-SinMinus; } else if(LAST2IND4>0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST2IND5<0) { NNS2IND5=NNS2IND5-SinMinus; } else if(LAST2IND5>0) { NNS2IND5=NNS2IND5+SinPlus; } } //NN3 if(LASTNNS3<0) { if(NNS30) { NNS3IND1=NNS3IND1+SinPlus; } if(LAST3IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST3IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST3IND4<0) { NNS3IND4=NNS3IND4-SinMinus; } else if(LAST3IND4>0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST3IND5<0) { NNS3IND5=NNS3IND5-SinMinus; } else if(LAST3IND5>0) { NNS3IND5=NNS3IND5+SinPlus; } } else if(LASTNNS3>0) { if(NNS3>SinMin) NNS3=NNS3+SinPlus; if(LAST3IND1<0) { NNS3IND1=NNS3IND1-SinMinus; } else if(LAST3IND1>0) { NNS3IND1=NNS3IND1+SinPlus; } if(LAST3IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST3IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST3IND4<0) { NNS3IND4=NNS3IND4-SinMinus; } else if(LAST3IND4>0) { NNS2IND4=NNS2IND4+SinPlus; } if(LAST3IND5<0) { NNS3IND5=NNS3IND5-SinMinus; } else if(LAST3IND5>0) { NNS3IND5=NNS3IND5+SinPlus; } } //NN4 if(LASTNNS4<0) { if(NNS40) { NNS4IND1=NNS4IND1+SinPlus; } if(LAST4IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST4IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST4IND3<0) { NNS4IND3=NNS4IND3-SinMinus; } else if(LAST4IND3>0) { NNS4IND3=NNS4IND3+SinPlus; } if(LAST4IND5<0) { NNS4IND5=NNS4IND5-SinMinus; } else if(LAST4IND5>0) { NNS4IND5=NNS4IND5+SinPlus; } } else if(LASTNNS4>0) { if(NNS4>SinMin) NNS4=NNS4+SinPlus; if(LAST4IND1<0) { NNS4IND1=NNS4IND1-SinMinus; } else if(LAST4IND1>0) { NNS4IND1=NNS4IND1+SinPlus; } if(LAST4IND2<0) { NNS3IND2=NNS3IND2-SinMinus; } else if(LAST4IND2>0) { NNS3IND2=NNS3IND2+SinPlus; } if(LAST4IND3<0) { NNS4IND3=NNS4IND3-SinMinus; } else if(LAST4IND3>0) { NNS4IND3=NNS4IND3+SinPlus; } if(LAST4IND5<0) { NNS4IND5=NNS4IND5-SinMinus; } else if(LAST4IND5>0) { NNS4IND5=NNS4IND5+SinPlus; } } //NN5 if(LASTNNS5<0) { if(NNS50) { NNS5IND1=NNS5IND1+SinPlus; } if(LAST5IND2<0) { NNS5IND2=NNS5IND2-SinMinus; } else if(LAST5IND2>0) { NNS5IND2=NNS5IND2+SinPlus; } if(LAST5IND3<0) { NNS5IND3=NNS5IND3-SinMinus; } else if(LAST5IND3>0) { NNS5IND3=NNS5IND3+SinPlus; } if(LAST5IND4<0) { NNS5IND4=NNS5IND4-SinMinus; } else if(LAST5IND4>0) { NNS5IND4=NNS5IND4+SinPlus; } } else if(LASTNNS5>0) { if(NNS5>SinMin) NNS5=NNS5+SinPlus; if(LAST5IND1<0) { NNS5IND1=NNS5IND1-SinMinus; } else if(LAST5IND1>0) { NNS5IND1=NNS5IND1+SinPlus; } if(LAST5IND2<0) { NNS5IND2=NNS5IND2-SinMinus; } else if(LAST5IND2>0) { NNS5IND2=NNS5IND2+SinPlus; } if(LAST5IND3<0) { NNS5IND3=NNS5IND3-SinMinus; } else if(LAST5IND3>0) { NNS5IND3=NNS5IND3+SinPlus; } if(LAST5IND4<0) { NNS5IND4=NNS5IND4-SinMinus; } else if(LAST5IND4>0) { NNS5IND4=NNS5IND4+SinPlus; } } } } //+------------------------------------------------------------------+