iCustom devolviendo Empty_val

 

Publi

Resultados 1 al 8 de 8

Tema: iCustom devolviendo Empty_val

  1. #1
    Hola

    Estoy usando el siguiente indicador que funciona bien al imprimir las flechas, etc. Ejemplo de código a continuación.

    #propiedad indicador_chart_window
    #property indicador_buffers dos
    #property indicador_color1 Lima
    #propiedad indicador_ancho1 1
    #propiedad indicador_color2 Amarillo
    #propiedad indicador_ancho2 1
    bool externo UseAlert = verdadero;
    extern int BarsToCount = 1000;

    doble SarUpSig[];
    dual SarDownSig[];

    fechahora TT;
    int inicial()

    //-- adentro
    SetIndexStyle(0,DRAW_ARROW);
    EstablecerFlechaÍndice(0,233);
    SetIndexBuffer(0,SarUpSig);

    SetIndexStyle(1,DRAW_ARROW);
    EstablecerFlechaÍndice(1,234);
    SetIndexBuffer(1,SarDownSig);

    TT=iTiempo(Símbolo(),0,0);
    //--
    retorno(0);


    comienzo int ()


    límite int;
    int counted_bars=IndiorCounted();
    //-- se volverá a contar la última barra contada
    if(barras_contadas;0) barras_contadas--;
    limit=Bars-counted_bars;
    //-- macd contado en el 1er búfer
    if(Etapa ()! =PERIODO_H1)

    retorno(0);


    if (BarsToCount lt; límite)
    limitación = BarsToCount;


    for(int I=limitación; igt;=0; I--)

    período de fecha y hora = iTime (Símbolo (), 0, I);
    int shiftD1 = iBarShift(Symbol(), PERIOD_D1, time, false);
    int shiftH4 = iBarShift(Symbol(), PERIOD_H4, time, false);
    int shiftH1 = iBarShift(Symbol(),PERIOD_H1,time,false);

    dual OsMa1 = iCustom(Symbol(),PERIOD_H1,OsMA,30,200,5,0,shiftH1 );
    dual OsMa2 = iCustom(Symbol(),PERIOD_H1,OsMA,5,35,35,0,shiftH1) ;

    dual POsMa1 = iCustom(Symbol(),PERIOD_H1,OsMA,30,200,5,0,shiftH1 1);
    dual POsMa2 = iCustom(Symbol(),PERIOD_H1,OsMA,5,35,35,0,shiftH1 1);

    //doble Up_ST = iCustom(Symbol(),0,4xRider STRONG-TREND Signal v2,14,2,I);
    //dual Dn_ST = iCustom(Symbol(),0,4xRider STRONG-TREND Signal v2,14,1,I);

    dual SARD1 = iSAR(Symbol(),PERIOD_D1,0.22,0.2,shiftD1);
    SARH4 dual = iSAR(Símbolo(),PERIODO_H4,0.05,0.2,shiftH4);
    SARH1 dual = iSAR(Símbolo(),PERIODO_H1,0.01,0.2,shiftH1);
    //último SAR dual = iSAR(Símbolo(),0,0.02,0.2,I 1);
    dual CERRADO1 = iClose(Symbol(),PERIOD_D1,shiftD1);
    dual CLOSEH4 = iClose(Symbol(),PERIOD_H4,shiftH4);
    dual CLOSEH1 = iClose(Symbol(),PERIOD_H1,shiftH1);

    dual PSARD1 = iSAR(Símbolo(),PERIODO_D1,0.22,0.2,shiftD1 1);
    PSARH4 dual = iSAR(Símbolo(),PERÍODO_H4,0.05,0.2,desplazamient oH4 1);
    PSARH1 dual = iSAR(Símbolo(),PERÍODO_H1,0.01,0.2,desplazamient oH1 1);
    //último SAR dual = iSAR(Símbolo(),0,0.02,0.2,I 1);
    dual PCCERRADO1 = iClose(Symbol(),PERIOD_D1,shiftD1 1);
    dual PCLOSEH4 = iClose(Symbol(),PERIOD_H4,shiftH4 1);
    dual PCLOSEH1 = iClose(Symbol(),PERIOD_H1,shiftH1 1);

    SarUpSig[I]=VALOR_VACÍO;
    SarDownSig[I]=VALOR_VACÍO;

    compra de cuerdas;
    //COMPRAR

    //si(Up_ST! =EMPTY_VALUE)
    //
    //SarUpSig[1] = 1.6094;
    if(SarUpSig[i 1] ! = EMPTY_VALUE SARH1lt;CLOSEH1 OsMa2gt;0 SARH4lt;CLOSEH4)

    SarUpSig[i] = SARH1;
    if(TT! =iTiempo(Símbolo(),0,0)UsarAlerta)

    //cadena de tiempo = TimeToStr(TimeCurrent());
    Alerta(4xRider(COMPRAR) Símbolo());
    Reproducir Sonido(alerta.wav);
    TT=iTiempo(Símbolo(),0,0);


    if((PSARH4gt;PCLOSEH4POsMa1lt;0PSARH1gt;PCLOSEH1)
    (SARH4lt;CERRARH4OsMa1gt;0SARH1lt;CERRARH1SARD1lt; CERRADO1) OsMa2gt;0)

    SarUpSig[I] = SARH1;
    comprar = comercio;
    if(TT! =iTiempo(Símbolo(),0,0)UsarAlerta)

    //cadena de tiempo = TimeToStr(TimeCurrent());
    Alerta(4xRider (COMPRAR) Símbolo());
    Reproducir Sonido(alerta.wav);
    TT=iTiempo(Símbolo(),0,0);



    //
    venta de cuerdas;
    //VENDER

    //si(Dn_ST! =VALOR_VACIO)
    //
    if(SarDownSig[i 1] ! = EMPTY_VALUE SARH1gt;CLOSEH1 OsMa2lt;0 SARH4gt;CLOSEH4)

    SarDownSig[i] = SARH1;
    if(TT! =iTiempo(Símbolo(),0,0)UsarAlerta)

    //cadena de tiempo = TimeToStr(TimeCurrent());
    Alerta(4xRider (VENDER) Símbolo());
    Reproducir Sonido(alerta.wav);
    TT=iTiempo(Símbolo(),0,0);


    if((PSARH4lt;PCLOSEH4POsMa1gt;0PSARH1lt;PCLOSEH1)
    (SARH4gt;CERRARH4OsMa1lt;0SARH1gt;CERRARH1SARD1gt; CERRADO1) OsMa2lt;0)

    SarDownSig[I] = SARH1;
    if(TT! =iTiempo(Símbolo(),0,0)UsarAlerta)

    //cadena de tiempo = TimeToStr(TimeCurrent());
    Alerta(4xRider (VENDER) Símbolo());
    Reproducir Sonido(alerta.wav);
    TT=iTiempo(Símbolo(),0,0);



    //

    //VENDER


    //--
    //Opinión (Del indicador:, DoubleToStr(SarUpSig[1], Digits));
    retorno(0);



    Estoy usando un EA para leer los valores.

    #define INDI MiIndior

    dual IndiUpVal = iCustom(NULL, 0, INDI, falso, 5, 0, 1);
    dual IndiDownVal = iCustom(NULL, 0, INDI, falso, 5, 1, 1);

    Comentario(IndiUpVal: D2S(IndiUpVal) . IndiUpVal: D2S(IndiDownVal));

    D2S = DoubleToString con dígito

    No importa lo que haga exactamente, iCustom produce EMPTY_VAL.

    Si compenso el valor dentro del indicador en el momento ideal SarUpSig[1]
    devolverá los valores correctos. Sin embargo, EMPTY_VAL siempre lo proporciona iCustom.

    ¿Por qué?

    Cualquier ayuda es muy apreciada.

  2. #2
    Codemeister me tienes. Mi respuesta fue incorrecta. Tuve un pedo cerebral. OP: si realmente haces dos cosas, te permitirá solucionar esto. 1. Para que luego podamos copiar el código 16, copiar y pegar el código. Es posible que no se dé cuenta de esto, pero la forma en que lo pegó al intentar copiarlo y compilar el script causa MUCHOS problemas. Simplemente TENDRÁS que hacer esto POR NOSOTROS si quieres que compilemos el código y te busquemos. 2. Explique qué debe hacer el indi y el resultado que se anticipa. editar: no importa. Parece que iwjw está encima de ti.

  3. #3
    2 Adjunto(s) La llamada iCustom del indi obtiene los mismos valores que el propio indi Copié su código en un .mq4 y lo denominé indi 4xRider El siguiente indi (4xRider_call) está usando iCustom para recuperar los valores de 4xRider. Mismo resultado en el gráfico (solo 3 regiones donde ocurren señales durante las últimas 1000 publicaciones H1)
    https://www.forexycfds.com/attachmen...5463976314.mq4
    https://www.forexycfds.com/attachmen...1176270264.mq4

  4. #4
    No traté de observar el código, así que baso mi respuesta en su observación, no en lo que pueda estar ocurriendo. El método más simple para ver si su llamada iCustom es correcta sería establecer un índice para un pub que está cerrado, digamos el décimo pub (si ese tiene un valor). No se recomienda intentar encontrar un valor para un pub que se está recalculando (repintando) a menos que tenga cierta comprensión de cómo manejarlo. También he utilizado iCustom muchas veces sin problemas, pero supongo que podría haber una situación en la que el indicador esté realizando algo que iCustom no pueda manejar.

  5. #5

    Cita Iniciado por ;
    El valor de retorno del indicador no tiene nada que ver con iCustom. ICustom lee los valores de los búferes de indicadores, no el valor de rendimiento. Lo primero que debe hacer es confirmar desde la ventana de datos que el indicador está generando los valores esperados. A continuación, asegúrese de que el número de parámetros y los tipos de valores sean correctos para la llamada iCustom. Esto se puede lograr examinando las variables y comparándolas con los valores de iCustom. El código es un desastre y no intentaré hacer esto por ti.
    Sí. He comprobado que las ventanas de datos muestran correctamente el valor. Confirmaré que todos los valores pasados ​​a la llamada iCustom sean del tipo correcto. De acuerdo en que el código indicador es un desastre (no mío). Estoy pensando que tal vez este problema está sucediendo ya que el indicador va de Límite a 0 (I), es decir, al revés. Entonces, ¿es que el iCustom regresa ANTES de que el indicador tenga tiempo de llenar la matriz? No estoy seguro si el rendimiento de iCustom incluye un tiempo de espera. ¿Alguien sabe esto? ¿O la llamada BLOCK antes de que el indicador se ejecute y se complete? Para descartar esto, solo entregué en 5 como el parámetro Barcount para que el indicador solo recorra las últimas 5 barras. Confirmé que esto estaba sucediendo poniendo un Print(I) desde el bucle indicador. Pero el valor devuelto sigue siendo EMPTY_VALUE. Simplemente no puedo entender por qué. Especialmente porque los datos se imprimen en la ventana de datos y también mi declaración que es Imprimir desde dentro del indicador imprime los valores del búfer. He usado iCustom tantos días antes que es la primera vez que veo algo extraño como eso.

  6. #6
    En primer lugar, deberá usar las etiquetas [código]: S segundo, al mirar brevemente, no está devolviendo ningún valor excepto cero. Altere las funciones iniciales que devuelven valor a lo que desea leer con icustom y descubra cómo va desde allí.

  7. #7
    El valor devuelto en el indicador no tiene nada que ver con iCustom. ICustom lee valores en los búferes de indicadores, no el valor de rendimiento. Lo primero que debe hacer es verificar en la ventana de datos que el indicador está generando los valores previstos. A continuación, asegúrese de que el número de parámetros y los tipos de valores sean correctos para la llamada iCustom. Esto se puede lograr examinando todos los factores externos y comparándolos con los valores iCustom que se les han asignado. El código es un desastre y no intentaré hacer esto por ti.

  8. #8

    Cita Iniciado por ;
    La llamada iCustom de este indi obtiene los mismos valores que el propio indi Copié su código en un .mq4 y lo denominé indi 4xRider El segundo indi (4xRider_call) está usando iCustom para recuperar los valores de 4xRider. Mismo resultado en el gráfico (solo 3 regiones donde se producen signos durante las 1000 barras H1 más recientes)
    Sí, indi en indi sin dificultades. Corte exactamente la misma parte y configúrela en el EA y estamos de vuelta en EMPTY_VAL. Sin embargo, esto no es todo el tiempo. Encuentro este problema mucho GBPUSD. Hay casos en que devuelve EMPTY_VAL aunque funciona. De ahí mi suposición de que tiene algo que ver con el retorno. Oh bien. Seguire intentando.

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í.