Números mágicos para múltiples EA
Números mágicos para múltiples EA

 

Publi

Resultados 1 al 10 de 10

Tema: Números mágicos para múltiples EA

  1. #1
    Tengo una cuenta demo en InterbankFX y creé varias copias de un EA. Cada EA tiene su propio Número Mágico. Adjunté un EA separado a diferentes gráficos, pero no puedo abrir varias posiciones al mismo tiempo para diferentes monedas. Parece que sólo puede funcionar con una moneda a la vez. Tan pronto como cierro una posición, automáticamente se abre otra posición para otra divisa. ¿Hay alguna configuración en MQ que me falta? Gracias por cualquier ayuda. nevado2

  2.                         
    Publicidad
  3. #2
    Gracias por señalar mi error. Pensé que la prueba para la orden abierta era solo para el EA/moneda específica. Ajusto mi código. Gracias de nuevo. nevado2

  4. #3
    así es como compruebo si tengo algún pedido abierto para una determinada moneda: Código insertado for(i=0;ilt;total;i ) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); { if(OrderSymbol()==Símbolo()) { abrir ; } } } Su código está verificando en toda la terminal para ver si hay órdenes abiertas, solo desea verificar en todo el símbolo.

  5. #4
    Estoy pensando en aprender a codificar EA, pero veo que sería un gran trabajo. Ojalá hubiera más documentación para principiantes con ejemplos... ¡o desearía que Tesla no estuviera tan ocupado y pudiera codificar por mí!

  6. #5
    Su código le indica que solo abra una orden si no hay otras órdenes abiertas. si(total;1) lt;lt; Esto rodea su rutina abierta, no puede buscar otra condición de apertura de orden si una orden está abierta actualmente. Además, tu rutina cercana está un poco desordenada.

  7. #6
    Hola Telsa, Aquí tienes el EA con el código del Número Mágico. Nuevamente, para diferentes monedas, incluso con diferentes números Magic, solo funciona para una moneda a la vez. Estoy perdido. Gracias, Snowy2/ ---------------------------------------------------- ---------------------- /| Número mágico MACD.mq4 |/| |/ -------------------------------------------------------------- ------------------- int Número Mágico = 260384; TakeProfit doble externo = 40; Lotes dobles externos = 0,01; TrailingStop doble externo = 20; doble externo MACDOpenLevel=3; doble externo MACDCloseLevel=2; doble externo MATrendPeriod=26;/ -------------------------------------------------------------- ------------------- /| |/ -------------------------------------------------------------- ------------------- int start() { double MacdCurrent, MacdPrevious, SignalCurrent; doble SeñalPrevio, MaCurrent, MaPrevious; int cnt, billete, total;/comprobaciones iniciales de datos/es importante asegurarse de que el experto trabaja con un/gráfico normal y que el usuario no cometió ningún error al configurar/variables externas (Lots, StopLoss, TakeProfit,/TrailingStop) en nuestro caso , comprobamos TakeProfit/en un gráfico de menos de 100 barras if(Barslt;100) { Print(bars less than 100); retorno(0); } if(TakeProfitlt;10) { Imprimir(TakeProfit menos de 10); retorno(0);/verifique TakeProfit }/para simplificar la codificación y acelerar el acceso/los datos se colocan en variables internas MacdCurrent=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MODE_ MAIN,0); MacdPrevious=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MODE _MAIN,1); SignalCurrent=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MOD E_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,24,9,PRICE_CLOSE,MO DE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRIC E_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRI CE_CLOSE,1); total=PedidosTotal(); if(totallt;1) {/no se han identificado pedidos abiertos if(AccountFreeMargin()lt;(1000*Lots)) { Print(No tenemos dinero. Margen libre = , AccountFreeMargin()); retorno(0); }/comprueba la posibilidad de posición larga (COMPRA) if(MacdCurrentlt;0 MacdCurrentgt;SignalCurrent MacdPreviouslt;SignalPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask TakeProfit*Point,MagicNoTest, Número Mágico, 0, Verde); if(ticketgt;0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print(orden de COMPRA abierta: ,OrderOpenPrice()); } else Print(Error al abrir la orden de COMPRA: GetLastError()); retorno(0); }/comprueba la posibilidad de posición corta (VENTA) if(MacdCurrentgt;0 MacdCurrentlt;SignalCurrent MacdPreviousgt;SignalPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,MagicNoTest, Número Mágico, 0, Rojo);if(ticketgt;0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print(VENTA de orden abierta: ,OrderOpenPrice()); } else Print(Error al abrir la orden de VENTA: GetLastError()); retorno(0); } retorno(0); }/es importante entrar correctamente al mercado,/pero es más importante salir correctamente... for(cnt=0;cntlt;total;cnt ) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()lt;=OP_SELL/comprueba la posición abierta OrderSymbol()==Symbol() OrderMagicNumber()==MagicNumber)/comprueba el símbolo { if(OrderType()==OP_BUY)/la posición larga es abierto {/¿debería estar cerrado? if(MacdCurrentgt;0 MacdCurrentlt;SignalCurrent MacdPreviousgt;SignalPrevious) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;/cerrar posición return(0);/salir }/comprobar el tope final if(TrailingStopgt;0) { if(Bid-OrderOpenPrice()gt;Point*TrailingStop) { if(OrderStopLoss()lt;Bid-Point*TrailingStop) { OrderModify(OrderTicket() ,OrderOpenPrice(),Punto de oferta*TrailingStop,OrderTakeProfit(),0,Green); retorno(0); } } } } else/ir a la posición corta {/¿debería cerrarse? if(MacdCurrentlt;0 MacdCurrentgt;SignalCurrent MacdPreviouslt;SignalPrevious) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;/cerrar posición return(0);/salir }/comprobar si hay parada final if(TrailingStopgt;0) { if((OrderOpenPrice()-Ask)gt;(Point*TrailingStop)) { if((OrderStopLoss()gt;(Ask Point*TrailingStop) ) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Pregunt ar Punto*TrailingStop,OrderTakeProfit(),0,Red); retorno(0); } } } } } } retorno(0); }/el fin.

  8. #7
    No hay suficiente información para ver cuál es el problema. No seas tímido, publica el EA.

  9. #8
    En Blackberry, respuesta breve. Supongo que EA no está codificado de forma sólida. Publícalo y recibirás comentarios.

  10. #9
    Codificación para el número mágico. int Número Mágico = 260384; TakeProfit doble externo = 40; Lotes dobles externos = 0,01; TrailingStop doble externo = 20; doble externo MACDOpenLevel=3; ... if(MacdCurrentlt;0 MacdCurrentgt;SignalCurrent MacdPreviouslt;SignalPrevious) { Alerta(Estás comprando aquí.); ticket=OrderSend(Symbol(),OP_BUY,Lotes,Ask,3,0,Ask TakeProfit*Point,EAMACD,MagicNumber,0,Green); if(ticketgt;0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print(orden de COMPRA abierta: ,OrderOpenPrice()); } else Print(Error al abrir la orden de COMPRA: GetLastError()); retorno(0); } Gracias.

  11. #10
    Aquí hay una función rápida a la que puede hacer referencia y que devolverá un recuento de las órdenes que EA tiene abiertas en el símbolo actual. Código insertado #define MAGIC_NUMBER 8675309 int getOpenOrders() {/establece el recuento de pedidos inicial en cero int iOrders = 0;/iterar todas las órdenes abiertas para (int i=OrdersTotal()-1;igt;=0;i--) {/seleccionar la orden OrderSelect(i,SELECT_BY_POS);/si el pedido no coincide con este símbolo o EA, continúa con el siguiente pedido if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC_NUMBER) continue;/es una coincidencia, suma 1 para contar iOrders ; }/devuelve el recuento de pedidos return(iOrders); }

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.