Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Para ganar experiencia en esta área, voy a escribir 25 EAs gratis para sus ideas y estrategias interesantes
Sólo quedan 19 EAs
Tengo un problema de este tipo, ya tengo un EA y funciona bien, el problema es con el bloqueo del trailing stop. Por alguna razón no funciona y no se abre cuando se negocia. Aquí está el propio EA. ¿Tal vez tengas alguna idea de lo que ocurre con el trailing stop? No tengo ni idea de qué hacer sin ella.
Ishimoku - MACD.mq4
//| TO |
//| http://www.forex-tradexperts-to.narod.ru |
//+------------------------------------------------------------------+
#property copyright "TO"
#enlace de propiedad "http://www.forex-tradexperts-to.narod.ru"
#include <WinUser32.mqh>
extern string Parameters=" Ichimoku";
extern intern tenkan_sen=3;
extern intern kijun_sen=48;
extern intern senkou_span_b=52;
extern string Parameters="Media móvil";
extern int maPeriod=4;
extern int ma_method=1;
extern int precio_aplicado=3;
cadena externa Parámetros=" MACD";
extern int FastEMA=22;
extern int SlowEMA=52;
extern int SeñalEMA=9;
cadena externa Parameters=" EA";
extern int TP=200;
extern int SL=500;
extern int deslizamiento=3;
extern double lot=0.1;
extern bool Add1/*(TENKANSEN resp. KIJUNSEN)*/ =true;
extern bool Add2/*(TENKANSEN revisado Ma)*/=true;
extern bool trailing=true;
extern double trailingStop=200;
extern int zashita=1;
bool buy1=false,buy2=false,buy3=false,buy4=false;
bool sell1=false,sell2=false,sell3=false,sell4=false,sell22=false; buy22=false;
int ticket=0;
int i;
datetime t1=0,t2=1,t3=1,t4=1,t5=1,t7=1,t8=1;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int inicio()
{
t1=Tiempo[0];
double MACDRED1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,1);
double MACDRED2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,2);
double MACDBLUE1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,1);
double MACDBLUE2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,2);
double IshRed1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,1);
double IshRed2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,2);
double IshBlue1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,1);
double IshBlue2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,2);
double MA1=iMA(NULL,0,maPeriod,0,ma_method,applied_price,1);
double MA2=iMA(NULL,0,MaPeriod,0,ma_method,applied_price,2);
if(MACDRED1>MACDBLUE1 && MACDRED2<MACDBLUE2 && t3!=t1)
{ // Señal de COMPRA del MACD
buy1=true;sell1=false;t3=Time[0];
}
if(MACDRED1<MACDBLUE1 && MACDRED2>MACDBLUE2 && t3!=t1)
{ // Señal de VENTA del MACD
sell1=true;buy1=false;t3=Time[0];
}
if(IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)
{ // La señal de Ishimoku cruza la MA en COMPRA
buy2=true;sell2=false;t4=Time[0];
}
if(IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)
{ // La señal de Ishimoku cruza la MA en VENTA
sell2=true;buy2=false;t4=Time[0];
}
if(IshRed1>IshBlue1 && IshRed2<IshBlue2 && t5!=t1)
{ // La señal de Ishimoku cruza rápido y lento a la COMPRA
buy3=true;sell3=false;t5=Time[0];
}
if(IshRed1<IshBlue1 && IshRed2>IshBlue2 && t5!=t1)
{ // Señal en Ishimoku Fast cruza Slow en SELL
sell3=true;buy3=false;t5=Time[0];
}
if(Add1==true && buy3==true && buy4==true && t1!=t8)
{ //abre las adiciones
PlaySound("Alert.wav");
int=MessageBox("¿Añadir una orden de compra?",MB_YESNO|MB_ICONQUESTION);
if(ret==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("¡¡¡Orden no establecida!!! error - "+GetLastError()+"set manually");}
t8=Tiempo[0];buy3=false;buy4=false;
}
if(Add1==true && sell3==true && sell4==true && t1!=t7)
{ //abre las adiciones
PlaySound("Alert.wav");
int ret2=MessageBox("¿Añadir una orden de venta?",MB_YESNO|MB_ICONQUESTION);
if(ret2==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("¡¡¡Orden no establecida!!! error - "+GetLastError()+"set manually");}
t7=Time[0];sell3=false;sell4=false;
}
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{
buy1=false;buy2=false;buy22=true;
romper;
}
}
if(Add2==true && buy22 && IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)
{ // Añadir por Ma y Tenkan_sen para comprar
PlaySound("Alert.wav");
int ret3=MessageBox("¿Añadir una orden de compra?",MB_YESNO|MB_ICONQUESTION);
if(ret3==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("¡¡¡Orden no establecida!!! error - "+GetLastError()+"set manually");}
t4=Time[0];buy22=false;
}
if(Add2==true && sell22 && IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)
{ // Añadir por Ma y Tenkan_Sen en la venta
PlaySound("Alert.wav");
int ret4=MessageBox("¿Añadir una orden de venta?",MB_YESNO|MB_ICONQUESTION);
if(ret4==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("¡¡¡Orden no establecida!!! error - "+GetLastError()+"set manually");}
t4=Time[0];sell22=false;
}
if(buy1==true && buy2==true && t1!=t2)
{ //abre las órdenes iniciales
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Gold);
}
PlaySound("Alert.wav");
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);
if(ticket>0)PlaySound("ok.wav");
if(ticket<0)Alert("¡¡¡Orden no establecida!!! error - "+GetLastError()+"set manually");
t2=Time[0];buy1=false;buy2=false;buy4=true;
}
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)
{
sell1=false;sell2=false;sell22=true;
romper;
}
}
if(sell1==true && sell2==true && t1!=t2)
{ //abre las órdenes iniciales
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Gold);
}
PlaySound("Alert.wav");
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask+SL*Point,Bid-TP*Point,NULL,0,0,Red);
if(ticket>0)PlaySound("ok.wav");
if(ticket<0)Alert("¡¡¡Orden no establecida!!! error - "+GetLastError()+"set manually");
t2=Time[0];sell1=false;sell2=false;sell4=true;buy22=false;
}
//Parada de la cola
doble SL,TP,openprice,profit;
int ticketOrder,zamok,type;
cadena de comunicación;
for(i=Total de pedidos();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
¡if(trailing==true && OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)>0 && MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop)!=0 && (OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE))>=trailingStop*MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop))
{
if(OrderType()==0){SL=Bid-trailingStop*Point;if(SL==OrderOpenPrice())SL+=zashita*Point;}
if(OrderType()==1){SL=Ask+trailingStop*Point;if(SL==OrderOpenPrice())SL-=zashita*Point;}
TP=OrderTakeProfit();
if(OrderType()==0)if(SL>=OrderStopLoss()+trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);
if(OrderType()==1)if(SL<=OrderStopLoss()-trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);
}
}
return(0);
}
No voy a responder a todas, pero sin duda es un error:
La última orden es OrdersTotal()-1.
¿se puede escribir/escribir un multi EA gratis?
El maniquí está disponible.
Hola, me gustaría pediros ayuda para prescribir T/P y Magic_Number en mi EA. Saludos Timofey.
Buenas tardes.
¿cómo escribirías un artículo como este?
doble a; //
double b; // tanto a como b pueden tomar absolutamente cualquier valor: números, lecturas de indicadores, número de ticks para 500 velas, etc.
double X; // valor de desviación +-X
si
(a+x y a-x) entra en el campo de valores (b+x y b-x)
{acción}
si no
{devuelve 0}
Buenas tardes.
¿cómo escribirías una pieza como esta?
doble a; //
double b; // tanto a como b pueden tomar absolutamente cualquier valor: números, lecturas de indicadores, número de ticks para 500 velas, etc.
double X; // valor de desviación +-X
si
(a+x y a-x) entra en el campo de valores (b+x y b-x)
{acción}
si no
{devuelve 0}
Si x es el mismo valor en todos los casos, se están comparando esencialmente dos números a y b. No se trata de entrar en un intervalo aquí.
Por ejemplo, tomemos a = 10, b = 11. Entonces, ¿quieres que el intervalo 12 a 8 caiga en el intervalo 13 a 9?
Si x es igual en todos los casos, se están comparando dos números a y b. No se trata de ningún intervalo.
Por ejemplo, tomemos a = 10, b = 11. Entonces, ¿quieres que el intervalo 12 a 8 caiga en el intervalo 13 a 9?
Así es.