El Scalper Nocturno Multi es un asistente de trading que opera en múltiples divisas hasta la medianoche (0 am) hora del terminal. Su estrategia se basa en un rango estrecho (r), determinado con el indicador de 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 posición se abre después de la hora especificada en Inicio, y solo si no hay posiciones abiertas en el símbolo.
if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
Compra si el precio es menor que el límite inferior de Bollinger Bands y el rango es menor que el especificado en la variable Razmah.
if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
Vende si el precio está por encima del límite superior de Bollinger Bands y el rango es menor que el especificado en la variable Razmah.
if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
Las posiciones se cierran mediante stop losses o se forzan a cerrar después de la medianoche.
elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
Las operaciones de trading se realizan utilizando la función SymbolTrade y la clase С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); }
Las operaciones se ejecutan en una nueva 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);
Configuraciones:
inputstring Symbol1 = "USDCAD"; // Nombre del Símbolo 1inputint StopLoss1 = 370; // StopLoss 1inputint TakeProfit1 = 20; // TakeProfit 1inputint BBPeriod1 = 40; // Periodo de Bands 1inputdouble BBDev1 = 1; // Desviación de Bands 1inputdouble Razmah1 = 450; // Desviación de Bands 1 en Puntosinputint Start1 = 19; // Hora de Inicio 1inputstring Symbol2 = "GBPUSD"; // Nombre del Símbolo 2inputint StopLoss2 = 450; // StopLoss 2inputint TakeProfit2 = 80; // TakeProfit 2inputint BBPeriod2 = 8; // Periodo de Bands 2inputdouble BBDev2 = 1; // Desviación de Bands 2inputdouble Razmah2 = 200; // Desviación de Bands 2 en Puntosinputint Start2 = 20; // Hora de Inicio 2inputstring Symbol3 = "NZDUSD"; // Nombre del Símbolo 3inputint StopLoss3 = 410; // StopLoss 3inputint TakeProfit3 = 40; // TakeProfit 3inputint BBPeriod3 = 4; // Periodo de Bands 3inputdouble BBDev3 = 1.2; // Desviación de Bands 3inputdouble Razmah3 = 450; // Desviación de Bands 3 en Puntosinputint Start3 = 19; // Hora de Inicio 3inputstring Symbol4 = ""; // Nombre del Símbolo 4inputint StopLoss4 = 500; // StopLoss 4inputint TakeProfit4 = 40; // TakeProfit 4inputint BBPeriod4 = 24; // Periodo de Bands 4inputdouble BBDev4 = 1; // Desviación de Bands 4inputdouble Razmah4 = 200; // Desviación de Bands 4 en Puntosinputint Start4 = 20; // Hora de Inicio 4inputstring Symbol5 = ""; // Nombre del Símbolo 5inputint StopLoss5 = 500; // StopLoss 5inputint TakeProfit5 = 40; // TakeProfit 5inputint BBPeriod5 = 24; // Periodo de Bands 5inputdouble BBDev5 = 1; // Desviación de Bands 5inputdouble Razmah5 = 200; // Desviación de Bands 5 en Puntosinputint Start5 = 20; // Hora de Inicio 5inputstring Symbol6 = ""; // Nombre del Símbolo 6inputint StopLoss6 = 500; // StopLoss 6inputint TakeProfit6 = 40; // TakeProfit 6inputint BBPeriod6 = 24; // Periodo de Bands 6inputdouble BBDev6 = 1; // Desviación de Bands 6inputdouble Razmah6 = 200; // Desviación de Bands 6 en Puntosinputint Start6 = 20; // Hora de Inicio 6inputstring Symbol7 = ""; // Nombre del Símbolo 7inputint StopLoss7 = 500; // StopLoss 7inputint TakeProfit7 = 40; // TakeProfit 7inputint BBPeriod7 = 24; // Periodo de Bands 7inputdouble BBDev7 = 1; // Desviación de Bands 7inputdouble Razmah7 = 200; // Desviación de Bands 7 en Puntosinputint Start7 = 20; // Hora de Inicio 7inputstring Symbol8 = ""; // Nombre del Símbolo 8inputint StopLoss8 = 500; // StopLoss 8inputint TakeProfit8 = 40; // TakeProfit 8inputint BBPeriod8 = 24; // Periodo de Bands 8inputdouble BBDev8 = 1; // Desviación de Bands 8inputdouble Razmah8 = 200; // Desviación de Bands 8 en Puntosinputint Start8 = 20; // Hora de Inicio 8inputstring Symbol9 = ""; // Nombre del Símbolo 9inputint StopLoss9 = 500; // StopLoss 9inputint TakeProfit9 = 40; // TakeProfit 9inputint BBPeriod9 = 24; // Periodo de Bands 9inputdouble BBDev9 = 1 // Desviación de Bands 9inputdouble Razmah9 = 200 // Desviación de Bands 9 en Puntosinputint Start9 = 20 // Hora de Inicio 9inputdouble Lot = 1 // Volumen de Trade

Fig1. Resultado del trading del EA. EURUSD, H1

Fig.2. Operaciones del EA en el diario

Fig.3. Resultados del trading del EA y optimización del 11.01.2016 al 13.09.2016. USDCAD, GBPUSD, NZDUSD, H1
Consejos:
- Se recomienda usar el EA como asistente de trading y para desarrollar tus propias estrategias.

Comentarios 0