Ayuda a depurar mi EA Creo que la solución es demasiado simple.
Ayuda a depurar mi EA Creo que la solución es demasiado simple.

 

Publi

Resultados 1 al 2 de 2

Tema: Ayuda a depurar mi EA Creo que la solución es demasiado simple.

  1. #1
    A continuación hay una copia del código de mi EA. Cada vez que lo adjunto a un gráfico, simplemente permanece allí, no abre ni cierra ninguna operación. Está configurado para vivir el comercio sin confirmación manual.

    ¿Alguna idea?







    Cita Iniciado por ;
    # define SIGNAL_NONE 0
    # define SIGNAL_BUY 1
    # define SIGNAL_SELL 2
    # define SIGNAL_CLOSEBUY 3
    # define SIGNAL_CLOSESELL 4
    #property copyright USTED
    extern int MagicNumber = 0;
    extern bool SignalMail = False;
    extern bool EachTickMode = True;
    Lotes dobles externos = 5.0;
    extern int Slippage = 0;
    extern bool StopLossMode = False;
    extern int StopLoss = 0;
    extern bool TakeProfitMode = False;
    extern int TakeProfit = 0;
    extern bool TrailingStopMode = False;
    extern int TrailingStop = 0;
    int BarCount;
    Int Corriente;
    bool TickCheck = False;
    // ----------------------------------------------- -------------------
    //| función de inicialización experta |
    // ----------------------------------------------- -------------------
    int init () {
    BarCount = Bars;
    if (EachTickMode) Actual = 0; else Current = 1;
    retorno (0);
    }
    // ----------------------------------------------- -------------------
    //| función de desinicialización experta |
    // ----------------------------------------------- -------------------
    int deinit () {
    retorno (0);
    }
    // ----------------------------------------------- -------------------
    //| función de inicio experto |
    // ----------------------------------------------- -------------------
    int start () {
    orden de int = SIGNAL_NONE;
    int total, boleto;
    doble StopLossLevel, TakeProfitLevel;

    if (EachTickMode Bars! = BarCount) TickCheck = False;
    Total = OrdersTotal ();
    Orden = SIGNAL_NONE;
    // ----------------------------------------------- -------------------
    //| Inicio variable |
    // ----------------------------------------------- -------------------
    doble Var1 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_SIGNAL, Current 0);
    doble Var2 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_MAIN, Current 0);
    doble Var3 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_SIGNAL, Current 1);
    doble Var4 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_MAIN, Current 1);
    doble Buy1_1 = Var1 lt; Var2;
    doble Buy2_1 = Var3 gt; Var4;
    Doble Sell1_1 = Var1 gt; Var2;
    Doble Sell2_1 = Var3 lt; Var4;
    doble CloseBuy1_1 = Var1 gt; Var2;
    doble CloseBuy2_1 = Var3 lt; Var4;
    doble CloseSell1_1 = Var1 lt; Var2;
    doble CloseSell2_1 = Var3 gt; Var4;

    // ----------------------------------------------- -------------------
    //| Final variable |
    // ----------------------------------------------- -------------------
    //comprobar posición
    bool IsTrade = Falso;
    para (int i = 0; i lt; Total; i ) {
    OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
    if (OrderType () lt; = OP_SELL OrderSymbol () == Symbol ()) {
    IsTrade = Verdadero;
    if (OrderType () == OP_BUY) {
    //Cerrar
    // ----------------------------------------------- -------------------
    //| Inicio de señal (salida de compra) |
    // ----------------------------------------------- -------------------
    si (Falso Falso) Orden = SIGNAL_CLOSEBUY;

    // ----------------------------------------------- -------------------
    //| Fin de Señal (Salir de Compra) |
    // ----------------------------------------------- -------------------
    if (Order == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    OrderClose (OrderTicket (), OrderLots (), Bid, Slippage, MediumSeaGreen);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Bid, Digits) Close Buy);
    if (! EachTickMode) BarCount = Bars;
    IsTrade = Falso;
    continuar;
    }
    //parada final
    if (TrailingStopMode TrailingStop gt; 0) {
    if (Bid - OrderOpenPrice () gt; Point * TrailingStop) {
    if (OrderStopLoss () lt; Bid - Point * TrailingStop) {
    OrderModify (OrderTicket (), OrderOpenPrice (), Bid - Point * TrailingStop, OrderTakeProfit (), 0, MediumSeaGreen);
    if (! EachTickMode) BarCount = Bars;
    continuar;
    }
    }
    }
    } else {
    //Cerrar
    // ----------------------------------------------- -------------------
    //| Inicio de Señal (Salir de Venta) |
    // ----------------------------------------------- -------------------
    si (Falso Falso) Orden = SIGNAL_CLOSESELL;

    // ----------------------------------------------- -------------------
    //| Señal de fin (venta de salida) |
    // ----------------------------------------------- -------------------
    if (Order == SIGNAL_CLOSESELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    OrderClose (OrderTicket (), OrderLots (), Ask, Slippage, DarkOrange);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Ask, Digits) Close Sell);
    if (! EachTickMode) BarCount = Bars;
    IsTrade = Falso;
    continuar;
    }
    //parada final
    if (TrailingStopMode TrailingStop gt; 0) {
    if ((OrderOpenPrice () - Ask) gt; (Point * TrailingStop)) {
    if ((OrderStopLoss () gt; (Ask Point * TrailingStop)) || (OrderStopLoss () == 0)) {
    OrderModify (OrderTicket (), OrderOpenPrice (), Ask Point * TrailingStop, OrderTakeProfit (), 0, DarkOrange);
    if (! EachTickMode) BarCount = Bars;
    continuar;
    }
    }
    }
    }
    }
    }
    // ----------------------------------------------- -------------------
    //| Inicio de Señal (Entrada) |
    // ----------------------------------------------- -------------------
    si (Falso Falso) Orden = SE??AL_BUY;
    si (Falso Falso) Orden = SIGNAL_SELL;

    // ----------------------------------------------- -------------------
    //| Señal de fin |
    // ----------------------------------------------- -------------------
    //Comprar
    if (Order == SIGNAL_BUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    si (! IsTrade) {
    //Marcar margen libre
    if (AccountFreeMargin () lt; (1)) {
    Imprimir (No tenemos dinero. Margen libre =, AccountFreeMargin ());
    retorno (0);
    }
    if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; de lo contrario, StopLossLevel = 0.0;
    if (TakeProfitMode) TakeProfitLevel = Ask TakeProfit * Point; de lo contrario TakeProfitLevel = 0.0;
    Ticket = OrderSend (Symbol (), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy (# MagicNumber ), MagicNumber, 0, DodgerBlue);
    si (Ticket gt; 0) {
    if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    Imprimir (COMPRAR orden abierto:, OrderOpenPrice ());
    SetIndexStyle (3, DRAW_ARROW, EMPTY, 2, Green);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Ask, Digits) Open Buy);
    } else {
    Imprimir (Error al abrir la orden de COMPRA:, GetLastError ());
    }
    }
    if (EachTickMode) TickCheck = True;
    if (! EachTickMode) BarCount = Bars;
    retorno (0);
    }
    }
    //Vender
    if (Order == SIGNAL_SELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    si (! IsTrade) {
    //Marcar margen libre
    if (AccountFreeMargin () lt; (1)) {
    Imprimir (No tenemos dinero. Margen libre =, AccountFreeMargin ());
    retorno (0);
    }
    if (StopLossMode) StopLossLevel = Bid ?????? StopLoss * Point; de lo contrario, StopLossLevel = 0.0;
    if (TakeProfitMode) TakeProfitLevel = Bid ??????- TakeProfit * Point; de lo contrario TakeProfitLevel = 0.0;
    Ticket = OrderSend (Symbol (), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell (# MagicNumber ), MagicNumber, 0, DeepPink);
    si (Ticket gt; 0) {
    if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    Imprimir (Orden de VENTA abierta:, OrderOpenPrice ());
    SetIndexStyle (3, DRAW_ARROW, EMPTY, 2, Red);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Bid, Digits) Open Sell);
    } else {
    Imprimir (Error al abrir la orden de VENTA:, GetLastError ());
    }
    }
    if (EachTickMode) TickCheck = True;
    if (! EachTickMode) BarCount = Bars;
    retorno (0);
    }
    }
    if (! EachTickMode) BarCount = Bars;
    retorno (0);
    }
    // ----------------------------------------------- -------------------
    Cita Iniciado por ;
    # define SIGNAL_NONE 0
    # define SIGNAL_BUY 1
    # define SIGNAL_SELL 2
    # define SIGNAL_CLOSEBUY 3
    # define SIGNAL_CLOSESELL 4
    #property copyright USTED
    extern int MagicNumber = 0;
    extern bool SignalMail = False;
    extern bool EachTickMode = True;
    Lotes dobles externos = 5.0;
    extern int Slippage = 0;
    extern bool StopLossMode = False;
    extern int StopLoss = 0;
    extern bool TakeProfitMode = False;
    extern int TakeProfit = 0;
    extern bool TrailingStopMode = False;
    extern int TrailingStop = 0;
    int BarCount;
    Int Corriente;
    bool TickCheck = False;
    // ----------------------------------------------- -------------------
    //| función de inicialización experta |
    // ----------------------------------------------- -------------------
    int init () {
    BarCount = Bars;
    if (EachTickMode) Actual = 0; else Current = 1;
    retorno (0);
    }
    // ----------------------------------------------- -------------------
    //| función de desinicialización experta |
    // ----------------------------------------------- -------------------
    int deinit () {
    retorno (0);
    }
    // ----------------------------------------------- -------------------
    //| función de inicio experto |
    // ----------------------------------------------- -------------------
    int start () {
    orden de int = SIGNAL_NONE;
    int total, boleto;
    doble StopLossLevel, TakeProfitLevel;

    if (EachTickMode Bars! = BarCount) TickCheck = False;
    Total = OrdersTotal ();
    Orden = SIGNAL_NONE;
    // ----------------------------------------------- -------------------
    //| Inicio variable |
    // ----------------------------------------------- -------------------
    doble Var1 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_SIGNAL, Current 0);
    doble Var2 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_MAIN, Current 0);
    doble Var3 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_SIGNAL, Current 1);
    doble Var4 = iMACD (NULL, 0, 8, 17, 9, PRICE_CLOSE, MODE_MAIN, Current 1);
    doble Buy1_1 = Var1 lt; Var2;
    doble Buy2_1 = Var3 gt; Var4;
    Doble Sell1_1 = Var1 gt; Var2;
    Doble Sell2_1 = Var3 lt; Var4;
    doble CloseBuy1_1 = Var1 gt; Var2;
    doble CloseBuy2_1 = Var3 lt; Var4;
    doble CloseSell1_1 = Var1 lt; Var2;
    doble CloseSell2_1 = Var3 gt; Var4;

    // ----------------------------------------------- -------------------
    //| Final variable |
    // ----------------------------------------------- -------------------
    //comprobar posición
    bool IsTrade = Falso;
    para (int i = 0; i lt; Total; i ) {
    OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
    if (OrderType () lt; = OP_SELL OrderSymbol () == Symbol ()) {
    IsTrade = Verdadero;
    if (OrderType () == OP_BUY) {
    //Cerrar
    // ----------------------------------------------- -------------------
    //| Inicio de señal (salida de compra) |
    // ----------------------------------------------- -------------------
    si (Falso Falso) Orden = SIGNAL_CLOSEBUY;

    // ----------------------------------------------- -------------------
    //| Fin de Señal (Salir de Compra) |
    // ----------------------------------------------- -------------------
    if (Order == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    OrderClose (OrderTicket (), OrderLots (), Bid, Slippage, MediumSeaGreen);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Bid, Digits) Close Buy);
    if (! EachTickMode) BarCount = Bars;
    IsTrade = Falso;
    continuar;
    }
    //parada final
    if (TrailingStopMode TrailingStop gt; 0) {
    if (Bid - OrderOpenPrice () gt; Point * TrailingStop) {
    if (OrderStopLoss () lt; Bid - Point * TrailingStop) {
    OrderModify (OrderTicket (), OrderOpenPrice (), Bid - Point * TrailingStop, OrderTakeProfit (), 0, MediumSeaGreen);
    if (! EachTickMode) BarCount = Bars;
    continuar;
    }
    }
    }
    } else {
    //Cerrar
    // ----------------------------------------------- -------------------
    //| Inicio de Señal (Salir de Venta) |
    // ----------------------------------------------- -------------------
    si (Falso Falso) Orden = SIGNAL_CLOSESELL;

    // ----------------------------------------------- -------------------
    //| Señal de fin (venta de salida) |
    // ----------------------------------------------- -------------------
    if (Order == SIGNAL_CLOSESELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    OrderClose (OrderTicket (), OrderLots (), Ask, Slippage, DarkOrange);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Ask, Digits) Close Sell);
    if (! EachTickMode) BarCount = Bars;
    IsTrade = Falso;
    continuar;
    }
    //parada final
    if (TrailingStopMode TrailingStop gt; 0) {
    if ((OrderOpenPrice () - Ask) gt; (Point * TrailingStop)) {
    if ((OrderStopLoss () gt; (Ask Point * TrailingStop)) || (OrderStopLoss () == 0)) {
    OrderModify (OrderTicket (), OrderOpenPrice (), Ask Point * TrailingStop, OrderTakeProfit (), 0, DarkOrange);
    if (! EachTickMode) BarCount = Bars;
    continuar;
    }
    }
    }
    }
    }
    }
    // ----------------------------------------------- -------------------
    //| Inicio de Señal (Entrada) |
    // ----------------------------------------------- -------------------
    si (Falso Falso) Orden = SE??AL_BUY;
    si (Falso Falso) Orden = SIGNAL_SELL;

    // ----------------------------------------------- -------------------
    //| Señal de fin |
    // ----------------------------------------------- -------------------
    //Comprar
    if (Order == SIGNAL_BUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    si (! IsTrade) {
    //Marcar margen libre
    if (AccountFreeMargin () lt; (1)) {
    Imprimir (No tenemos dinero. Margen libre =, AccountFreeMargin ());
    retorno (0);
    }
    if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; de lo contrario, StopLossLevel = 0.0;
    if (TakeProfitMode) TakeProfitLevel = Ask TakeProfit * Point; de lo contrario TakeProfitLevel = 0.0;
    Ticket = OrderSend (Symbol (), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy (# MagicNumber ), MagicNumber, 0, DodgerBlue);
    si (Ticket gt; 0) {
    if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    Imprimir (COMPRAR orden abierto:, OrderOpenPrice ());
    SetIndexStyle (3, DRAW_ARROW, EMPTY, 2, Green);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Ask, Digits) Open Buy);
    } else {
    Imprimir (Error al abrir la orden de COMPRA:, GetLastError ());
    }
    }
    if (EachTickMode) TickCheck = True;
    if (! EachTickMode) BarCount = Bars;
    retorno (0);
    }
    }
    //Vender
    if (Order == SIGNAL_SELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
    si (! IsTrade) {
    //Marcar margen libre
    if (AccountFreeMargin () lt; (1)) {
    Imprimir (No tenemos dinero. Margen libre =, AccountFreeMargin ());
    retorno (0);
    }
    if (StopLossMode) StopLossLevel = Bid ?????? StopLoss * Point; de lo contrario, StopLossLevel = 0.0;
    if (TakeProfitMode) TakeProfitLevel = Bid ??????- TakeProfit * Point; de lo contrario TakeProfitLevel = 0.0;
    Ticket = OrderSend (Symbol (), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell (# MagicNumber ), MagicNumber, 0, DeepPink);
    si (Ticket gt; 0) {
    if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    Imprimir (Orden de VENTA abierta:, OrderOpenPrice ());
    SetIndexStyle (3, DRAW_ARROW, EMPTY, 2, Red);
    if (SignalMail) SendMail ([Signal Alert], [ Symbol () ] DoubleToStr (Bid, Digits) Open Sell);
    } else {
    Imprimir (Error al abrir la orden de VENTA:, GetLastError ());
    }
    }
    if (EachTickMode) TickCheck = True;
    if (! EachTickMode) BarCount = Bars;
    retorno (0);
    }
    }
    if (! EachTickMode) BarCount = Bars;
    retorno (0);
    }
    // ----------------------------------------------- -------------------

  2.                         
    Publicidad
  3. #2
    ¿Qué quiere decir con la cláusula if (Falso Falso)? No he visto eso usado antes.

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.