Herramientas MT4 Expert Advisor que abra 1 sola operación por vela - Página 2

 

Publi

Expert Advisor que abra 1 sola operación por vela

 

Publi

Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo
Resultados 11 al 20 de 27


  1. #11




    Reputación:
    Poder de reputación: 7

    Espana
    Mensajes: 16
    Créditos: 388

    Re: Expert Advisor que abra 1 sola operación por vela


    Publi
    Aquí dejo el scrip de lo que estoy trabajando, no va mal pero necesita depuraciones; a ver donde debo meter los comandos indicados.

    extern int MagicNumber=10033;
    extern double Lots =0.2;
    extern double StopLoss=25;
    extern double TakeProfit=50;
    extern int TrailingStop=1;
    extern int InicioTrailing=5;
    extern int Slippage=3;
    //+------------------------------------------------------------------+
    // expert start function
    //+------------------------------------------------------------------+
    int start()
    {
    double MyPoint=Point;
    if(Digits==3 || Digits==5) MyPoint=Point*10;

    double TheStopLoss=0;
    double TheTakeProfit=0;
    if( TotalOrdersCount()==0 )
    {
    int result=0;
    if((Ask>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&&
    (Bid<iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&&
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1)>iMA(NULL, 0,120,0,MODE_SMA,PRICE_CLOSE,1))&&
    (Close[1]<iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1))||
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1)<iMA(NULL, 0,120,0,MODE_SMA,PRICE_CLOSE,1))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)>iMA(NULL,0, 120,0,MODE_SMA,PRICE_CLOSE,0))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,1)<iMA(NULL,0, 120,0,MODE_SMA,PRICE_CLOSE,1))&&
    (iMACD(NULL,0,3,5,2,PRICE_CLOSE,MODE_MAIN,1)>0)&&
    (Ask>iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0))&&
    (Bid<iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0))||
    (iRSI(NULL,0,11,PRICE_OPEN,1)<40)&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)>40)&&
    (iRSI(NULL,0,11,PRICE_OPEN,1)>(iRSI(NULL,0,11,PRIC E_OPEN,2)))&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)>(iRSI(NULL,0,11,PRIC E_OPEN,1)))&&
    (Ask>iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0))&&
    (Bid<iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0))||
    (iRSI(NULL,0,11,PRICE_OPEN,1)<30)&&
    (iRSI(NULL,0,11,PRICE_OPEN,1)>(iRSI(NULL,0,11,PRIC E_OPEN,2)))&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)>(iRSI(NULL,0,11,PRIC E_OPEN,1)))||
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0)>iMA(NULL,0, 50,0,MODE_EMA,PRICE_CLOSE,0))&&
    (Ask>iMA(NULL,0,20,0,MODE_SMA,PRICE_HIGH,0))&&
    (Bid<iMA(NULL,0,20,0,MODE_SMA,PRICE_HIGH,0))||
    (iRSI(NULL,0,11,PRICE_OPEN,0)<50)&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)>(iRSI(NULL,0,11,PRIC E_OPEN,1)))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)>iMA(NULL,0, 20,0,MODE_EMA,PRICE_HIGH,0))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)>iMA(NULL,0, 5,0,MODE_EMA,PRICE_HIGH,1))||
    (Close[3]<iMA(NULL,0,20,0,MODE_SMA,PRICE_HIGH,3))&&
    (Close[2]<iMA(NULL,0,20,0,MODE_SMA,PRICE_HIGH,2))&&
    (Close[1]>iMA(NULL,0,20,0,MODE_SMA,PRICE_HIGH,1))&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)>(iRSI(NULL,0,11,PRIC E_OPEN,1))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)>iMA(NULL,0, 5,0,MODE_SMA,PRICE_HIGH,1))))

    // Here is your open buy rule
    {
    result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage ,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Blue);
    if(result>0)
    {
    TheStopLoss=0;
    TheTakeProfit=0;
    if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
    if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
    OrderSelect(result,SELECT_BY_TICKET);
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
    }
    return(0);
    }
    if((Ask>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&&
    (Bid<iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&&
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1)<iMA(NULL, 0,120,0,MODE_SMA,PRICE_CLOSE,1))&&
    (Close[1]>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1))||
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1)>iMA(NULL, 0,120,0,MODE_SMA,PRICE_CLOSE,1))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,0)<iMA(NULL,0,1 20,0,MODE_SMA,PRICE_CLOSE,0))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,1)>iMA(NULL,0,1 20,0,MODE_SMA,PRICE_CLOSE,1))&&
    (iMACD(NULL,0,3,5,2,PRICE_CLOSE,MODE_MAIN,1)<0)&&
    (Ask>iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,0))&&
    (Bid<iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,0))||
    (iRSI(NULL,0,11,PRICE_OPEN,1)>60)&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)<60)&&
    (iRSI(NULL,0,11,PRICE_OPEN,1)<(iRSI(NULL,0,11,PRIC E_OPEN,2)))&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)<(iRSI(NULL,0,11,PRIC E_OPEN,1)))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,0)<iMA(NULL,0,2 0,0,MODE_SMA,PRICE_HIGH,0))&&
    (Ask>iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0))&&
    (Bid<iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0))||
    (iRSI(NULL,0,11,PRICE_OPEN,1)>70)&&
    (iRSI(NULL,0,11,PRICE_OPEN,1)<(iRSI(NULL,0,11,PRIC E_OPEN,2)))&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)<(iRSI(NULL,0,11,PRIC E_OPEN,1)))||
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_HIGH,0)<iMA(NULL,0 ,50,0,MODE_EMA,PRICE_CLOSE,0))&&
    (Ask>iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0))&&
    (Bid<iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,0))||
    (iRSI(NULL,0,11,PRICE_OPEN,0)>50)&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)<(iRSI(NULL,0,11,PRIC E_OPEN,1)))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)<iMA(NULL,0, 20,0,MODE_EMA,PRICE_LOW,0))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)<iMA(NULL,0, 5,0,MODE_EMA,PRICE_HIGH,1))||
    (Close[3]>iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,3))&&
    (Close[2]>iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,2))&&
    (Close[1]<iMA(NULL,0,20,0,MODE_SMA,PRICE_LOW,1))&&
    (iRSI(NULL,0,11,PRICE_OPEN,0)<(iRSI(NULL,0,11,PRIC E_OPEN,1)))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,0)<iMA(NULL,0, 5,0,MODE_SMA,PRICE_HIGH,1)))

    // Here is your open Sell rule
    {
    result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippag e,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Red);
    if(result>0)
    {
    TheStopLoss=0;
    TheTakeProfit=0;
    if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
    if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
    OrderSelect(result,SELECT_BY_TICKET);
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
    }
    return(0);
    }
    }

    for(int cnt=0;cnt<OrdersTotal();cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL &&
    OrderSymbol()==Symbol() &&
    OrderMagicNumber()==MagicNumber
    )
    {
    if(OrderType()==OP_BUY)
    {
    if((iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1)<iMA(NU LL,0,50,0,MODE_SMA,PRICE_CLOSE,1))&&
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,2)>iMA(NULL, 0,50,0,MODE_SMA,PRICE_CLOSE,2))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_HIGH,1)<iMA(NULL,0, 120,0,MODE_SMA,PRICE_CLOSE,1)))
    //here is your close buy rule
    {
    OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),Slippage,Red);
    }
    if(TrailingStop>0)
    {
    if(Bid-OrderOpenPrice()>MyPoint*InicioTrailing)
    {
    if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
    return(0);
    }
    }
    }
    }
    else
    {
    if((iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1)>iMA(NU LL,0,50,0,MODE_SMA,PRICE_CLOSE,1))&&
    (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,2)<iMA(NULL, 0,50,0,MODE_SMA,PRICE_CLOSE,2))&&
    (iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,1)>iMA(NULL,0,1 20,0,MODE_SMA,PRICE_CLOSE,1)))// here is your close sell rule
    {
    OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),Slippage,Red);
    }
    if(TrailingStop>0)
    {
    if((OrderOpenPrice()-Ask)>(MyPoint*InicioTrailing))
    {
    if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyP oint*TrailingStop,OrderTakeProfit(),0,Red);
    return(0);
    }
    }
    }
    }
    }
    }
    return(0);
    }


    int TotalOrdersCount()
    {
    int result=0;
    for(int i=0;i<OrdersTotal();i++)
    {
    OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
    if (OrderMagicNumber()==MagicNumber) result++;


    }
    return (result);
    }

    Cita Iniciado por tivag Ver mensaje
    Para ello se debe contabilizar el beneficio obtenido , se guarda en una variable y cuando esa variable sea mayor que tu objetivo ponemos una variable de tipo bool a true , esa variable la introduces en donde se manda las ordenes cuando sea false y asi solo se ejecutara cuando el beneficio sea inferior a lo esperado.



    double profit=0;
    int historico= OrdersHistoryTotal();
    for (int i=0;i<historico;i++)

    {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
    profit += OrderProfit();
    }

    if (profit>ganancia)
    {
    stop=true;
    }
    else
    stop=false;
    Foro de Forex Trading United

  2. Publi
    Publi


  3. #12




    Reputación:
    Poder de reputación: 7

    Espana
    Mensajes: 16
    Créditos: 388

    Re: Expert Advisor que abra 1 sola operación por vela

    perfecto, en cuanto tenga un rato me pongo con ello.

    Muchísimas gracias



    Cita Iniciado por tivag Ver mensaje
    Para ello se debe contabilizar el beneficio obtenido , se guarda en una variable y cuando esa variable sea mayor que tu objetivo ponemos una variable de tipo bool a true , esa variable la introduces en donde se manda las ordenes cuando sea false y asi solo se ejecutara cuando el beneficio sea inferior a lo esperado.



    double profit=0;
    int historico= OrdersHistoryTotal();
    for (int i=0;i<historico;i++)

    {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
    profit += OrderProfit();
    }

    if (profit>ganancia)
    {
    stop=true;
    }
    else
    stop=false;
    Foro de Forex Trading United

  4. #13




    Reputación:
    Poder de reputación: 7

    Espana
    Mensajes: 16
    Créditos: 388

    Re: Expert Advisor que abra 1 sola operación por vela

    Cita Iniciado por tivag Ver mensaje
    hola tranquilo , es normal si estas empezando , cuando puse orden buy o sell (); hacia referencia a tu parte de codigo para que supieras que podria ir hay, esa linea quitala, tal y como se ve en la imagen parece que esta al principio del todo luego todo el ea te ira vela a vela , lo puedes hacer asi o bien poner eso antes de donde se lanza la orden de compra o venta y asi solo se hara cada vela solo la orden , cuestion de como lo quieras.

    saludos
    Perfect. Me pongo con ello en cuanto pueda. Y te cuento.

    Muchas gracias
    Foro de Forex Trading United

  5. #14




    Reputación:
    Poder de reputación: 8

    Espana
    Mensajes: 5
    Créditos: 286

    Re: Expert Advisor que abra 1 sola operación por vela

    Cita Iniciado por tivag Ver mensaje
    Buenas, si el Ea lo estas ejecuntado en 1h no deberia darte problemas y tan solo deberia abrirte una operacion por cada hora, en donde estas poniendo el codigo? has puesto el condicional antes de mandar la orden?

    saludos
    Buenos días/tardes.

    Yo tengo un problema similar, lo que me ocurre es que dentro de la misma vela se hacen tropecientas operaciones y me gustaría que sólo se hiciese una.

    Para ser más exactos, en ocasiones en una vela con rango de 60 pibs , si tengo un TP de 10 y un SL de 15 , puedo tener hasta 4 pérdidas en la misma vela... , un negocio horrible... .

    También me ocurre que se dan a la vez situaciones en la misma vela en la que se encuentran el patrón de compra y de venta, y me hace tropecientasmil operaciones que me dejan la cuenta con unos mordiscos bastante grandes.

    Ahora estoy con el móvil, cuando llegue a casa hago captura de pantalla y muestro imágenes de varios problemas.

    Muchas gracias por su ayuda.
    Foro de Forex Trading United

  6. #15
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 17

    Espana
    Mensajes: 659
    Créditos: 5.114

    Re: Expert Advisor que abra 1 sola operación por vela

    Cita Iniciado por CICLIC_VA Ver mensaje
    Buenos días/tardes.

    Yo tengo un problema similar, lo que me ocurre es que dentro de la misma vela se hacen tropecientas operaciones y me gustaría que sólo se hiciese una.

    Para ser más exactos, en ocasiones en una vela con rango de 60 pibs , si tengo un TP de 10 y un SL de 15 , puedo tener hasta 4 pérdidas en la misma vela... , un negocio horrible... .

    También me ocurre que se dan a la vez situaciones en la misma vela en la que se encuentran el patrón de compra y de venta, y me hace tropecientasmil operaciones que me dejan la cuenta con unos mordiscos bastante grandes.

    Ahora estoy con el móvil, cuando llegue a casa hago captura de pantalla y muestro imágenes de varios problemas.

    Muchas gracias por su ayuda.

    Hola , para hacer eso puedes hacerlo por ejemplo comprobando si existe esa orden o no , pero al añadir eso ten en cuenta que si la orden se cierra y se sigue dando las condiciones te abrira otra orden en la misma vela , si quieres evitar eso tendras que ponerle tambien el codigo de que haga una operacion por vela . He creado un Ea para que veas como es el codigo.

    saludos

    Ea que solo abrira operacion si no existe la misma:
    operacion si no existe esa misma.mq4


    Cita Iniciado por naccant Ver mensaje
    Buenas, es lo que yo indicaba en la duda, me pasa igual puede ser que se me cierre la orden y dentro de la misma vela se vuela a abrir otra. Mi intención era que hiciese una sola operación y no abrir ninguna más independietemente de que se cerrase la primera dentro de la primera vela.

    Por ahora estoy utiliando el cruce del ask y el bid (que se dá en un momento concreto) en ve de el cruce de medias (que se da durante toda la vela).
    hola te lo puse arriba el codigo pero te adjunto Ea para que lo veas mejor , puedes seguir usando el cruce del ask y bid si asi se te ha solucionado el problema pero seria mejor usar lo otro pues ya lo tendras para futuros Eas.

    saludos

    Ea que abrira operacion por cada vela nueva , independientemente si existe o no esa orden anteriormente:
    operacion si no existe esa misma.mq4
    Foro de Forex Trading United

  7. #16




    Reputación:
    Poder de reputación: 7

    Espana
    Mensajes: 16
    Créditos: 388

    Re: Expert Advisor que abra 1 sola operación por vela

    Cita Iniciado por tivag Ver mensaje
    hola , de nada para eso estamos , ahora te entendi lo que querias , si para ello jugamos con el tiempo de las barras y un condicional para que solo haga lo que queramos por cada vela nueva:



    datetime Timebarra = 0; // definimos en las variables generales


    if (Timebarra < Time[0])
    {
    Timebarra = Time[0];
    Orden buy o sell();

    }

    saludos

    Buenas, conseguí que funciones lo del trailingstop e inicioTrailing, pero que se haga una sola operación por cada barra sin que al cerrarse la misma vuelva a abrir al darse las mismas condiciones, no encuentro manera.

    Gracias
    Foro de Forex Trading United

  8. #17




    Reputación:
    Poder de reputación: 7

    Espana
    Mensajes: 16
    Créditos: 388

    Re: Expert Advisor que abra 1 sola operación por vela

    Cita Iniciado por tivag Ver mensaje
    hola , de nada para eso estamos , ahora te entendi lo que querias , si para ello jugamos con el tiempo de las barras y un condicional para que solo haga lo que queramos por cada vela nueva:



    datetime Timebarra = 0; // definimos en las variables generales


    if (Timebarra < Time[0])
    {
    Timebarra = Time[0];
    Orden buy o sell();

    }

    saludos

    Buenas, de nuevo.

    Gracias por lo comentado; con el trailingstop no he encontrado la forma, ya que lo he modificado en los 4 puntos donde me aparece y no realiza lo deseado. te dejo el script completo y me dices si hay un error.
    extern int MagicNumber=10001;
    extern double Lots =0.1;
    extern double StopLoss=10;
    extern double TakeProfit=10;
    extern int TrailingStop=5;
    extern int Slippage=3;
    //+------------------------------------------------------------------+
    // expert start function
    //+------------------------------------------------------------------+
    int start()
    {
    double MyPoint=Point;
    if(Digits==3 || Digits==5) MyPoint=Point*10;

    double TheStopLoss=0;
    double TheTakeProfit=0;
    if( TotalOrdersCount()==0 )
    {
    int result=0;
    if((iMA(NULL,0,3,0,MODE_EMA,PRICE_OPEN,1)<iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,1))&&(iMA(NULL,0,3,0,MODE_EMA,PRICE_OPEN,0)>iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,0))) // Here is your open buy rule { result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage ,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Blue);
    if(result>0)
    {
    TheStopLoss=0;
    TheTakeProfit=0;
    if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
    if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
    OrderSelect(result,SELECT_BY_TICKET);
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
    }
    return(0);
    }
    if((iMA(NULL,0,3,0,MODE_EMA,PRICE_OPEN,1)>iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,1))&&(iMA(NULL,0,3,0,MODE_EMA,PRICE_OPEN,0)<iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,0))) // Here is your open Sell rule
    {
    result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippag e,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Red);
    if(result>0)
    {
    TheStopLoss=0;
    TheTakeProfit=0;
    if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
    if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
    OrderSelect(result,SELECT_BY_TICKET);
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
    }
    return(0);
    }
    }

    for(int cnt=0;cnt<OrdersTotal();cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL &&
    OrderSymbol()==Symbol() &&
    OrderMagicNumber()==MagicNumber
    )
    {
    if(OrderType()==OP_BUY)
    {
    if((iMA(NULL,0,3,0,MODE_EMA,PRICE_OPEN,0)<iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,0))) //here is your close buy rule
    {
    OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),Slippage,Red);
    }
    if(TrailingStop>0)
    {
    if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
    {
    if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
    return(0);
    }
    }
    }
    }
    else
    {
    if((iMA(NULL,0,3,0,MODE_EMA,PRICE_OPEN,0)>iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,0))) // here is your close sell rule
    {
    OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),Slippage,Red);
    }
    if(TrailingStop>0)
    {
    if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
    {
    if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyP oint*TrailingStop,OrderTakeProfit(),0,Red);
    return(0);
    }
    }
    }
    }
    }
    }
    return(0);
    }

    int TotalOrdersCount()
    {
    int result=0;
    for(int i=0;i<OrdersTotal();i++)
    {
    OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
    if (OrderMagicNumber()==MagicNumber) result++;

    }
    return (result);
    Foro de Forex Trading United

  9. #18
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 17

    Espana
    Mensajes: 659
    Créditos: 5.114

    Re: Expert Advisor que abra 1 sola operación por vela

    Cita Iniciado por naccant Ver mensaje
    Buenas, gracias de antemano. La idea de la primera parte, es que yo tengo indicado varias pautas para darse una operación de entrada, pero el problema que tengo es que si finaliza la compra o venta sin que haya terminado la vela (suelo trabajar en 1h) continuan dandose las pautas y vuelve abrir posición.

    Por ello indico que si hay alguna manera para que solo haga una operación por vela.

    Lo del trailing stop, me pongo con ello.

    Gracias

    hola , de nada para eso estamos , ahora te entendi lo que querias , si para ello jugamos con el tiempo de las barras y un condicional para que solo haga lo que queramos por cada vela nueva:



    datetime Timebarra = 0; // definimos en las variables generales


    if (Timebarra < Time[0])
    {
    Timebarra = Time[0];
    Orden buy o sell();

    }

    saludos
    Foro de Forex Trading United

  10. #19




    Reputación:
    Poder de reputación: 7

    Espana
    Mensajes: 16
    Créditos: 388

    Re: Expert Advisor que abra 1 sola operación por vela

    Buenas

    Muchas gracias por la aportación, intento ir modificando y viendo que pasa.

    Sobre los manuales, estoy a la espera del Expert Advisor Programming for MetaTrader 4: Creating automated ya lo solicité por Amazón y a ver.

    Aunque no tengo base de programación, le estoy cogiendo el gusto y a ver si puedo formarme correctamente.

    Un saludo

    Cita Iniciado por tivag Ver mensaje
    hola el for no es una variable es un bucle, todo iria dentro del start, las unicas variables que debes definir son las de ganancia y la de stop, que esas van arriba, extern double ganancia= cantidad que quieras; bool stop=false;

    luego la variable stop tienes que meterla con las condiciones de la orden y por ultimo tendras que definir reglas para resetear la variable stop para que vuelva a operar cuando quieras sino una vez llegado al tope no te volvera a operar.

    Mi humilde consejo antes de seguir tocando el Ea aprende mas de mql a traves de manuales que hay en la red o bien si prefieres seguir usando generadores de codigo usa alguno que te de la posibilidad de meter codigos y asi te sera mas facil hacer lo que quieres

    saludos
    Foro de Forex Trading United

  11. #20
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 17

    Espana
    Mensajes: 659
    Créditos: 5.114

    Re: Expert Advisor que abra 1 sola operación por vela


    Publi
    Cita Iniciado por naccant Ver mensaje
    Entiendo que:

    en la definición de variables esto
    double profit=0;
    int historico= OrdersHistoryTotal();
    for (int i=0;i<historico;i++)


    y luego seguido del expert start function

    {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
    profit += OrderProfit();
    }

    if (profit>ganancia)
    {
    stop=true;
    }
    else
    stop=false;

    hola el for no es una variable es un bucle, todo iria dentro del start, las unicas variables que debes definir son las de ganancia y la de stop, que esas van arriba, extern double ganancia= cantidad que quieras; bool stop=false;

    luego la variable stop tienes que meterla con las condiciones de la orden y por ultimo tendras que definir reglas para resetear la variable stop para que vuelva a operar cuando quieras sino una vez llegado al tope no te volvera a operar.

    Mi humilde consejo antes de seguir tocando el Ea aprende mas de mql a traves de manuales que hay en la red o bien si prefieres seguir usando generadores de codigo usa alguno que te de la posibilidad de meter codigos y asi te sera mas facil hacer lo que quieres

    saludos
    Foro de Forex Trading United

Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo
This website uses 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.
     

 

Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal