Por favor, ayuda con el cierre parcial específico de EA

 

Publi

Resultados 1 al 3 de 3

Tema: Por favor, ayuda con el cierre parcial específico de EA

  1. #1
    Hola chicos, les agradecería su ayuda, ¿por favor?
    Aquí está el problema: me gustaría cerrar parcialmente mi posición cuando stoch alcanza rápidamente una sobreventa o sobrecompra y permitir que el resto de la posición se cierre manualmente. !!!, aunque parece una tarea sencilla, EA está cerrando un lote y poco después el siguiente. ¿Cómo evito que se cierre la parte?

    Gracias de antemano,
    Avoleoo

    Cambié OrderLots() a 0.01 por ejemplo y supongamos que entraré al mercado con 0.02

    aquí está el código:
    // -------------------------------------------------------- -------------------
    //| Este MQL es generado por Expert Advisor Builder |
    //|
    http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/|
    //| |
    //| Si el autor será responsable de los daños y perjuicios de cualquier tipo. |
    //| Úselo bajo su propio riesgo. |
    //| |
    // ------------------- NO QUITE ESTE ENCABEZADO --------------------

    #define SIGNAL_NONE 0
    #define SIGNAL_BUY 1
    #define SIGNAL_SELL Dos
    #define SIGNAL_CLOSECOMPRAR 3
    #define SIGNAL_CLOSESELL 4

    #property derechos de autor Expert Advisor Builder
    #enlace de propiedad http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/

    extern int Número Mágico = 0;
    bool externo SignalMail = Falso;
    bool externo EachTickMode = Verdadero;
    Lotes dobles externos = 0,01;
    Deslizamiento interno externo = 3;
    bool externo UseStopLoss = int;
    StopLoss interno externo = 30;
    bool externo UseTakeProfit = False;
    extern int TakeProfit = 60;
    bool externo UseTrailingStop = bool;
    externo int TrailingStop = 30;

    int CuentaBarras;
    int actual;
    bool TickCheck = int;
    //pags ----------------------------------------------- -------------------
    //| función de inicialización profesional |
    //pags ----------------------------------------------- -------------------
    int inicial()
    BarCount = Barras;

    si (EachTickMode) actual = 0; de lo contrario Actual = 1;

    retorno(0);

    // -------------------------------------------------------- -------------------
    //| función de desinicialización profesional |
    // -------------------------------------------------------- -------------------
    definición int()
    retorno(0);

    // -------------------------------------------------------- -------------------
    //| función de inicio experto |
    // -------------------------------------------------------- -------------------
    int comenzar () {
    Orden int = SIGNAL_NONE;
    int Completo, Boleto;
    doble StopLossLevel, TakeProfitLevel;



    if (EachTickMode Bars! = BarCount) TickCheck = False;
    Completo = PedidosTotal();
    Orden = SIGNAL_NONE;

    // -------------------------------------------------------- -------------------
    //| Comienzo variable |
    // -------------------------------------------------------- -------------------




    dual CloseBuy1_1 = iStochastic(NULL, 0, 8, 5, 5, MODE_SMA, 0, MODE_MAIN, Current 0);
    doble CerrarComprar1_2 = 80;

    dual CloseSell1_1 = iStochastic(NULL, 0, 8, 5, 5, MODE_SMA, 0, MODE_MAIN, Current 0);
    doble CerrarVenta1_2 = 20;


    // -------------------------------------------------------- -------------------
    //| Extremo variable |
    // -------------------------------------------------------- -------------------

    //Comprobar lugar
    bool IsTrade = Falso;

    para (int I = 0; I lt; Total; I )
    OrderSelect(I, SELECT_BY_POS, MODE_TRADES);
    if(OrderType() lt;= OP_SELL OrderSymbol() == Símbolo())
    EsComercio = Verdadero;
    if(OrderType() == OP_BUY)
    // -------------------------------------------------------- -------------------

    if (CloseBuy1_1 gt;= CloseBuy1_2) Orden = SIGNAL_CLOSEBUY;


    // -------------------------------------------------------- -------------------
    //otra señal de inicio (salida de venta)



    //pags ----------------------------------------------- -------------------
    //| Comienzo de la señal (entrada) |
    // -------------------------------------------------------- -------------------




    // -------------------------------------------------------- -------------------
    //| Fin de la señal |
    // -------------------------------------------------------- -------------------

    //Comprar
    if (Orden == SIGNAL_BUY ((EachTickMode ! ) TickCheck) || (! EachTickMode (Bars ! = BarCount))))
    si (! es el comercio)
    //Comprobar margen libre
    if (MargenLibreCuenta() lt; (1000 * Lotes))
    Imprimiendo (No Tenemos Dinero. Margen Libre =, AccountFreeMargin());
    retorno(0);


    if (UseStopLoss) StopLossLevel = Preguntar - StopLoss * Etapa; de lo contrario StopLossLevel = 0.0;
    if (UseTakeProfit) TakeProfitLevel = Ask TakeProfit * Point; de lo contrario TakeProfitLevel = 0.0;

    Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy(# MagicNumber ),

    Número Mágico, 0, DodgerBlue);
    if(Ticket gt; 0)
    if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
    Impresión (orden de COMPRA abierta:, OrderOpenPrice());
    if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Ask, Digits) Open Buy);
    más
    Imprimiendo (Error al abrir orden de COMPRA:, GetLastError());


    if (Cada ModoTick) TickCheck = Verdadero;
    if (! EachTickMode) BarCount = Barras;
    retorno(0);



    //Vender
    if (Orden == SIGNAL_SELL ((EachTickMode ! ) TickCheck) || (! EachTickMode (Bars ! = BarCount)))) {
    if(! EsComercio) {
    //Comprobar margen libre
    if (MargenLibreCuenta() Lt; (1000 * Lotes))
    Print(No tenemos dinero. Free Margin =, AccountFreeMargin());
    retorno(0);


    if (UseStopLoss) StopLossLevel = Oferta StopLoss * Etapa; más StopLossLevel = 0.0;
    if (UseTakeProfit) TakeProfitLevel = Oferta - TakeProfit * Punto; más TakeProfitLevel = 0.0;

    Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell(Number MagicNumber

    ), Número Mágico, 0, Rosa Profundo);
    if(Ticket gt; 0)
    if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
    Imprimir (pedido de VENTA abierto, OrderOpenPrice());
    if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Bid, Digits) Open Sell);
    más
    Imprimir(Error al abrir orden de VENTA:, GetLastError());


    if (Cada ModoTick) TickCheck = Verdadero;
    if (! EachTickMode) BarCount = Barras;
    retorno(0);
    }
    }

    if (! EachTickMode) BarCount = Barras;

    retorno(0);
    }
    // -------------------------------------------------------- -------------------

  2. #2

  3. #3
    Me atrevería a decir que la persona que escribió el código es la única que puede arreglarlo. A mí me parece un desastre, así que no le dediqué mucho tiempo y seguro que no lo voy a ejecutar.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Cookies
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información y política de cookies aquí.