EA MT5 Novato atascado en asesor experto mql5

 

Publi

Novato atascado en asesor experto mql5

 

Publi

Resultados 1 al 10 de 11


Vista híbrida

  1. #1




    Reputación:
    Poder de reputación: 10

    Mensajes: 24
    Créditos: 847

    Novato atascado en asesor experto mql5

    Buenos días,

    Soy novato en esto de programar asesores expertos, por lo que aun estoy aprendiendo en mql5 y me he quedado atascado.

    Esa forma de realizar las señales mediante un rsi la vi en el manual de mql5, aunque la adapte, por lo que no se si la estoy realizando correctamente.

    El problema es que no me entra en el if (rsi_buffer[2]<30 && rsi_buffer[1]>30) ni en el else if(rsi_buffer[2]>70 && rsi_buffer[1]<70). Todo lo demás lo hace correctamente, ya que probé a quitarle los if.

    Como podéis intuir el If lo que indica es que cuando el rsi se encuentre por debajo de 30 pase a la siguiente linea de código y haga un compra. Y con el otro sucede lo mismo, cuando esta por encima de 70 haga una venta.

    Es algo muy simple pero por mas que he buscado no encuentro el error.


    //+------------------------------------------------------------------+
    //| Declaracion de variables
    //+------------------------------------------------------------------+input double Lote=0.01; // Lotes
    input int magic=7777777; // magic
    //+------------------------------------------------------------------+
    //| Declarar variables para almacenar los manejadores de indicadores |
    //+------------------------------------------------------------------+
    int rsi_handle;
    int CCI_handle;
    //+------------------------------------------------------------------+
    //| Declarar variables para almacenar los datos de los indicadores |
    //+------------------------------------------------------------------+
    double rsi_buffer[];
    //+------------------------------------------------------------------+
    //| Expert initialization function |
    //+------------------------------------------------------------------+
    int OnInit()
    {
    rsi_handle=iRSI(Symbol(),Period(),14,PRICE_CLOSE);

    if(rsi_handle==INVALID_HANDLE)
    {
    Alert("Error al cargar el indicador, intentar de nuevo");
    return(-1);
    }

    return(0);
    }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    if(rsi_handle!=INVALID_HANDLE)IndicatorRelease(rsi _handle);

    }
    //+------------------------------------------------------------------+
    //| Expert tick function |
    //+------------------------------------------------------------------+
    void OnTick()
    {
    if(CopyBuffer(rsi_handle,0,0,3,rsi_buffer)<0) // manejador del indicador // número del buffer del indicador //posición de inicio // cantidad de datos a copiar // array de destino en el que se copian los datos
    {
    return;
    }

    if(!ArraySetAsSeries(rsi_buffer,true))
    {
    return;
    }

    if(!PositionSelect(_Symbol))
    {

    MqlTradeRequest mrequest;
    MqlTradeResult mresult;
    ZeroMemory(mrequest);
    mrequest.action = TRADE_ACTION_DEAL;
    mrequest.symbol = Symbol();
    mrequest.volume = Lote;
    mrequest.magic = magic;

    if (rsi_buffer[2]<30 && rsi_buffer[1]>30)
    {

    mrequest.type = ORDER_TYPE_BUY;
    mrequest.price = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

    }
    else if(rsi_buffer[2]>70 && rsi_buffer[1]<70)
    {

    mrequest.type=ORDER_TYPE_SELL;
    mrequest.price = SymbolInfoDouble(Symbol(),SYMBOL_BID);

    }

    }
    }

    No se si hay otra forma de implantar el código aquí, me refiero a que visualmente se asemeje a cuando lo haces en el editor del metatrader 5, y si lo hay ¿me podríais decir como hacerlo? ya que he copiado y pegado directamente.

    Espero que podáis echarme una mano.

    Un saludo y muchas gracias.
    Foro de Forex Trading United

  2. #2

    Re: Novato atascado en asesor experto mql5

    Compi, a ver si luego tuviera algún rato y lo puediera mirar, pero voy basante a tope de tiempo. De momento puedes comprobar qué valores te está almacenando en el array del rsi, poníendole que te muestre los valores en un Comment, por ejemplo.

    Saludos y un abrazo.
    Foro de Forex Trading United

  3. #3




    Reputación:
    Poder de reputación: 10

    Mensajes: 24
    Créditos: 847

    Re: Novato atascado en asesor experto mql5

    Ya es la segunda vez que me pasa que mando un mensaje citando y no se publica, vuelvo a ponerlo pero sin citar.

    Muchas gracias amigo, no había caído en utilizar esa función, pero en el manual pone que "no se puede pasar los arrays a la función Comment(). Los arrays tienen que imprimirse elemento por elemento" (aquí ya me pierdo).

    ¿Como puedo hacer para ver los valores que se almacenan en el array?

    Un saludo y muchas gracias.


    Edito: Si que se puede ver el contenido del array con comment (de hecho me es bastante útil), pero no encuentro el motivo de porque no me entra en el if.
    Foro de Forex Trading United
    Última edición por Rick7; 22:17 a las


  4. #4

    Re: Novato atascado en asesor experto mql5

    Hombre, con que le pongas un solo valor del array es suficiente. En el comment por ejemplo le pones que te muestre el valor rsi_buffer[0] para ir viendo el valor que te va asignando en la vela actual, y si quieres le pones luego +"\n Valor vela previa = "+DoubleToString(rsi_buffer[1],4]) y cierras el parentesis del comment );

    (El nombre exacto del array no recuerdo el que le habías puesto, ponle el nombre de tu array).

    Saludos y un abrazo.
    Foro de Forex Trading United

  5. #5




    Reputación:
    Poder de reputación: 10

    Mensajes: 24
    Créditos: 847

    Re: Novato atascado en asesor experto mql5

    Cita Iniciado por robertomar Ver mensaje
    Hombre, con que le pongas un solo valor del array es suficiente. En el comment por ejemplo le pones que te muestre el valor rsi_buffer[0] para ir viendo el valor que te va asignando en la vela actual, y si quieres le pones luego +"\n Valor vela previa = "+DoubleToString(rsi_buffer[1],4]) y cierras el parentesis del comment );

    (El nombre exacto del array no recuerdo el que le habías puesto, ponle el nombre de tu array).

    Saludos y un abrazo.
    Vale gracias, ya lo hice en el comment. Ahora una cosa, tu me dices que le ponga un solo valor al if, ¿que le pondrías, rsi_buffer[0], [1] o [2]?


    Edito: Poniendo uno solo ya me entra en el if, pero no se cual seria el mas acertado poner, mas bien el que mayor eficacia de.
    Foro de Forex Trading United

  6. #6

    Re: Novato atascado en asesor experto mql5

    No no, un solo valor al If no, me refería a que te mostrase un solo valor en el Comment (la vela actual por ejemplo) o bien 2 valores (la actual y la previa), con eso es suficiente para ver qué valores te está asignando y ver si son correctos o no.

    El objetivo era ver eso, si te asigna bien los valores a ese array, ¿te va marcando bien los valores en el buffer del rsi??-

    Saludos
    Foro de Forex Trading United

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