Il Night Scalper Multi è un sistema di trading notturno multi-valuta che opera fino alle 0:00 ora del terminale, all'interno di un range ristretto (r), determinato utilizzando l'indicatore Bollinger Bands.
BBHandle=iBands(symb,0,per,0,dev,0); CopyBuffer(BBHandle,1,0,1,up); CopyBuffer(BBHandle,2,0,1,dn); double r=up[0]-dn[0];
La posizione viene aperta dopo l'ora specificata in Start, e solo se non ci sono posizioni aperte sul simbolo.
if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
Comprare se il prezzo è inferiore al limite inferiore delle Bollinger Bands e il canale è più piccolo del range specificato nella variabile Razmah.
if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
Vendere se il prezzo è superiore al limite superiore delle Bollinger Bands e il canale è più piccolo del range specificato nella variabile Razmah.
if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
Le posizioni vengono chiuse tramite stop loss o forzatamente dopo le 0:00.
elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
I trade vengono eseguiti grazie alla funzione SymbolTrade e utilizzano la classe СTrade:
void SymbolTrade(string symb,int stop,int take,int per,double dev,double razmah,int start) { string s=(string)start+":00"; doubleAsk=SymbolInfoDouble(symb,SYMBOL_ASK); doubleBid=SymbolInfoDouble(symb,SYMBOL_BID); BBHandle=iBands(symb,0,per,0,dev,0); CopyBuffer(BBHandle,1,0,1,up); CopyBuffer(BBHandle,2,0,1,dn); double r=up[0]-dn[0]; if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s)) { if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point); if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point); } elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb); }
Le operazioni di trading vengono eseguite su una nuova barra.
if(bars!=Bars(NULL,0)) { if(Symbol1!="") SymbolTrade(Symbol1,StopLoss1,TakeProfit1,BBPeriod1,BBDev1,Razmah1,Start1); if(Symbol2!="") SymbolTrade(Symbol2,StopLoss2,TakeProfit2,BBPeriod2,BBDev2,Razmah2,Start2); if(Symbol3!="") SymbolTrade(Symbol3,StopLoss3,TakeProfit3,BBPeriod3,BBDev3,Razmah3,Start3); ... } bars=Bars(NULL,0);
Impostazioni:
inputstring Symbol1 = "USDCAD"; // Nome Simbolo1inputint StopLoss1 = 370; // StopLoss1inputint TakeProfit1 = 20; // TakeProfit1inputint BBPeriod1 = 40; // Periodo Bande1inputdouble BBDev1 = 1; // Deviazione Bande1inputdouble Razmah1 = 450; // Deviazione Bande1 in Puntiinputint Start1 = 19; // Ora Inizio1inputstring Symbol2 = "GBPUSD"; // Nome Simbolo2inputint StopLoss2 = 450; // StopLoss2inputint TakeProfit2 = 80; // TakeProfit2inputint BBPeriod2 = 8; // Periodo Bande2inputdouble BBDev2 = 1; // Deviazione Bande2inputdouble Razmah2 = 200; // Deviazione Bande2 in Puntiinputint Start2 = 20; // Ora Inizio2inputstring Symbol3 = "NZDUSD"; // Nome Simbolo3inputint StopLoss3 = 410; // StopLoss3inputint TakeProfit3 = 40; // TakeProfit3inputint BBPeriod3 = 4; // Periodo Bande3inputdouble BBDev3 = 1.2; // Deviazione Bande3inputdouble Razmah3 = 450; // Deviazione Bande3 in Puntiinputint Start3 = 19; // Ora Inizio3inputstring Symbol4 = ""; // Nome Simbolo4inputint StopLoss4 = 500; // StopLoss4inputint TakeProfit4 = 40; // TakeProfit4inputint BBPeriod4 = 24; // Periodo Bande4inputdouble BBDev4 = 1; // Deviazione Bande4inputdouble Razmah4 = 200; // Deviazione Bande4 in Puntiinputint Start4 = 20; // Ora Inizio4inputstring Symbol5 = ""; // Nome Simbolo5inputint StopLoss5 = 500; // StopLoss5inputint TakeProfit5 = 40; // TakeProfit5inputint BBPeriod5 = 24; // Periodo Bande5inputdouble BBDev5 = 1; // Deviazione Bande5inputdouble Razmah5 = 200; // Deviazione Bande5 in Puntiinputint Start5 = 20; // Ora Inizio5inputstring Symbol6 = ""; // Nome Simbolo6inputint StopLoss6 = 500; // StopLoss6inputint TakeProfit6 = 40; // TakeProfit6inputint BBPeriod6 = 24; // Periodo Bande6inputdouble BBDev6 = 1; // Deviazione Bande6inputdouble Razmah6 = 200; // Deviazione Bande6 in Puntiinputint Start6 = 20; // Ora Inizio6inputstring Symbol7 = ""; // Nome Simbolo7inputint StopLoss7 = 500; // StopLoss7inputint TakeProfit7 = 40; // TakeProfit7inputint BBPeriod7 = 24; // Periodo Bande7inputdouble BBDev7 = 1; // Deviazione Bande7inputdouble Razmah7 = 200; // Deviazione Bande7 in Puntiinputint Start7 = 20; // Ora Inizio7inputstring Symbol8 = ""; // Nome Simbolo8inputint StopLoss8 = 500; // StopLoss8inputint TakeProfit8 = 40; // TakeProfit8inputint BBPeriod8 = 24; // Periodo Bande8inputdouble BBDev8 = 1; // Deviazione Bande8inputdouble Razmah8 = 200; // Deviazione Bande8 in Puntiinputint Start8 = 20; // Ora Inizio8inputstring Symbol9 = ""; // Nome Simbolo9inputint StopLoss9 = 500; // StopLoss9inputint TakeProfit9 = 40; // TakeProfit9inputint BBPeriod9 = 24; // Periodo Bande9inputdouble BBDev9 = 1; // Deviazione Bande9inputdouble Razmah9 = 200; // Deviazione Bande9 in Puntiinputint Start9 = 20; // Ora Inizio9inputdouble Lot = 1; // Volume Trade

Fig.1. Risultato del trading dell'EA. EURUSD, H1

Fig.2. Operazioni dell'EA nel diario

Fig.3. Risultati del trading e ottimizzazione dell'EA dal 11.01.2016 al 13.09.2016. USDCAD, GBPUSD, NZDUSD, H1
Consigli:
- Si consiglia di utilizzare l'EA come assistente al trading e per sviluppare le proprie strategie.

Commento 0