Pregunta de indicador de histograma

 

Publi

Página 1 de 402 12 ÚltimoÚltimo
Resultados 1 al 10 de 15

Tema: Pregunta de indicador de histograma

  1. #1
    Hola,
    ¿Podría alguien ayudarme publicando el código mínimo completo requerido para trazar un valor para un histograma? (El valor con el que estoy trabajando es su diferencia de pip entre Pair1 y Pair2, por ejemplo)

    He estado jugando con esto robando bits de aquí y de allá, pero de los bits que he copiado de otros indicadores no puedo resolver cómo especificar un punto 0 para que se originen las barras de histograma, ni la cantidad de pubs atrás para ser calculado Me gustaría obtener un rango /-.

    Muchas gracias.
    John

  2. #2
    Hola John, espero que esto te lleve un paso más cerca. En lugar de cualquier cosa, traza el trabajo de cerca como una proporción de la altura de esta vela. El rango de la subventana del indicador se establece por: #property indior_minimum -10 #property indior_maximum 110 Niveles (líneas de puntos, opcionales) trazados por: #property indior_level1 100 #property indior_level2 0 La cantidad de barras de histograma está establecida por el ciclo: for (int I) = 0; ilt; Bars; I ) {0 = pub más a la derecha (último) en el gráfico Bars = variable predefinida que da el número de barras del gráfico David Inserted Code/ ---------------- -------------------------------------------------- /| Histograma sample.mq4 |/ ----------------------------------------------- ------------------- #property indior_separate_window #property indior_minimum -10 #property indior_maximum 110 #property indior_level1 100 #property indior_level2 0 #property indior_buffers 1 dual HistBuffer # 91; # 93 ;;/pag----------------------------------------------- ------------------- int init ()/p ----------------------- ------------------------------------------- SetIndexBuffer (0, HistBuffer) ; SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 3, Rojo); IndiorDigits (0); return (0);/ ----------------------------------------------- ------------------- int deinit ()/ ----------------------- ------------------------------------------- return (0);/ ----------------------------------------------- ------------------- int begin ()/ ----------------------- ------------------------------------------- for (int I = 0 ; ilt; Bars; I ) if (Top # 91; I # 93; -Wow # 91; I # 93; gt; 0) HistBuffer # 91; I # 93; = 100 * (Cerrar # 91; I # 93; -Low # 91; I # 93; -RRB-(Top # 91; I # 93; -Low # 91; I # 93; -RRB-; return (0 );

  3. #3
    Hola David, muchas gracias! Esto seguramente me ayudará en mi camino. Todo lo mejor, John

  4. #4
    Ok, tengo algo funcionando. Sin embargo, hay algunos problemas. Primero, permítame explicar lo que estoy tratando de hacer. Quiero comparar el diferencial pip entre Pair1 y Pair2 (en este caso, EURUSD y GBPUSD). Estoy usando el precio de apertura del día desde el punto cero. Entonces, consideramos el precio abierto de 1.6120 y restamos el precio actual de 1.6100 y vemos que el precio ha bajado 20 pips en este momento. Haz lo mismo para otro par y piensa en un movimiento de 40 pips (por ejemplo). Entonces, digamos que tenemos GBPUSD = -LRB - 20) y EURUSD = -LRB - 40). Podemos ver que ambos pares están bajando desde la apertura, y que el EUR avanza en el movimiento en 20 pips. Lo que intento hacer es hacer un pequeño histograma maravilloso que me muestre esta brecha. El siguiente código (que fue cortado y pegado por un indicador compuesto por Swingman, y la pieza de arriba) hace exactamente lo que quiero. Por el momento solo muestra el precio de alrededor del histograma (para un par), y esto me lleva al problema número 1. Problema n. ° 1) En este momento, el indicador está dibujando tic-tac. Lo cual es excelente, pero si lo carga en un nuevo gráfico, debe esperar horasminutosdías para completarlo con datos. ¿Hay alguna manera de llamar a la marca anterior (supongo que es exactamente lo mismo que la próxima ¿eh?) ¿Y replicar todas las barras que no sean la barra actual? ¿Hay una mejor llamada que MarketInfo Mode_Bid para calcular esto? Problema n. ° 2) Eso es más avanzado, pero sería posible indicar un blip en la parte superiorinferior de este histograma para indicar altobajo, como en un ecualizador estéreo, porque las barras de histo podrían golpear un altobajo luego receede ¿antes de cerrar? Problema n. ° 3) En este momento estoy ingresando manualmente una fecha de inicio. ¿Cuál sería el código para que el indicador se inicie automáticamente en la vela de 1M abierta? Mi pensamiento podría ser tonto, pero me gustaría jugar hasta el final de todos modos. Espero utilizar este indicador para visualizar el rango de la brecha de pip entre pares conectados. Mi opinión es que, si es posible obtener una idea del rango de la correlación a diario, entonces puede ingresar una operación cuando está en la parte más amplia, y volver a comerciar hacia el centro. Si alguien tiene ideas sobre algunos de los puntos anteriores, soy todo oídos. Esto es algo que me gustaría escribir, pero su ayuda para guiarme en la dirección ideal sería apreciada. Gracias John Inserted Code/ ------------------------------------------- ----------------------- /| Histograma sample.mq4 |/ ----------------------------------------------- ------------------- #property indior_separate_window #property indior_minimum -100 #property indior_maximum 150 #property indior_level1 100 #property indior_level2 -150 #property indior_buffers 1 dual HistBuffer # 91; # 93 ;; cadena externa Pair1 = GBPUSD; cadena externa Pair2 = EURUSD; extern int StartDate = D'2009.7.8 00:00 '; cadena externa StartingTimeCorr= 2009.07.08 00:00; extern int TFperiod = 60; extern int moreBars = 0; dual ExtMapBuffer1 # 91; # 93 ;; dual ExtMapBuffer2 # 91; # 93 ;; dual dPoint; int iWindow; int firstBar; int _BarsCount, _LastBar; int init () SetIndexBuffer (0, HistBuffer); SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 3, Rojo); IndiorDigits (4); return (0);/ ----------------------------------------------- ------------------- int deinit () return (0);/ ----------------------------------------------- ------------------- int start () dual Price_1 = MarketInfo (Pair1, MODE_ASK); dual Open_Pair1 = iOpen (Pair1, PERIOD_M1, iBarShift (NULL, PERIOD_M1, StartDate, True)); firstBar = iBarShift (NULL, TFperiod, StrToTime (StartingTimeCorr), true); should (firstBar lt; 0) Alert (StartingTimeCorr parece ser incorrecto); return (0); RefreshRates (); ArrayInitialize (ExtMapBuffer1, 0.0); ArrayInitialize (ExtMapBuffer2, 0.0); _BarsCount = WindowBarsPerChart () moreBars 1; int _FirstBar = firstBar; int _LastBar = _FirstBar - _BarsCount moreBars 1; should (_LastBar lt; 0) _LastBar = 0; _BarsCount = _FirstBar moreBars 1; int I = 0;/ilt; Bars; I )/debería (Top # 91; I # 93; -Low # 91; I # 93; gt; 0) HistBuffer # 91; I # 93; = (((Price_1) - (Open_Pair1)) * 10000); return (0);

  5. #5
    De acuerdo. Lo tengo más o menos funcionando. Extrañamente; Recibo diferentes resultados cuando está en diferentes gráficos, aunque ambos gráficos deben llamar a los detalles idénticos. ¿Algunas ideas? Código insertado/ --------------------------------------------- --------------------- /| JM_Pip Diferencial v1.006. Mq4 |/ ----------------------------------------------- ------------------- #property indior_separate_window #property indior_minimum -200 #property indior_maximum 200 #property indior_level1 100 #property indior_level2 -100 #property indior_level3 -50 #property indior_level4 50 #property indior_level5 0 #property indior_buffers 1/- ingrese los parámetros extern color FontColor = Red; extern int FontSize = 18; cadena externa FontType = Arial Black; cadena externa Pair1 = GBPUSD; cadena externa Pair2 = EURUSD; extern int StartDate = D'2009.7.8 00:00 '; cadena externa StartingTimeCorr = 2009.07.08 00:00; extern int TFperiod = 60; extern int moreBars = 0; extern doble Rango = 200;/- variables int iWindow; int firstBar; int _BarsCount, _LastBar; doble HistBuffer # 91; # 93 ;; double ExtMapBuffer1 # 91; # 93 ;; double ExtMapBuffer2 # 91; # 93 ;; doble dPoint;/ ----------------------------------------------- ------------------- /| Función de inicialización del indicador personalizado |/ ----------------------------------------------- ------------------- int init () SetIndexBuffer (0, HistBuffer); SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 3, Rojo); IndiorDigits (0); return (0);/ ----------------------------------------------- ------------------- /| Función de desinitialización del indicador personalizado |/ ----------------------------------------------- ------------------- int deinit () ObjectDelete (Pip_Diff_Label); ObjectDelete (Buy_Sell_Label); return (0);/ ----------------------------------------------- ------------------- int start () double Price_1 = MarketInfo (Pair1, MODE_ASK); doble Price_2 = MarketInfo (Pair2, MODE_ASK); double Open_Pair1 = iOpen (Pair1, PERIOD_M1, iBarShift (NULL, PERIOD_M1, StartDate, True)); double Open_Pair2 = iOpen (Pair2, PERIOD_M1, iBarShift (NULL, PERIOD_M1, StartDate, True)); doble Variance1 = ((Price_1-Open_Pair1) * 10000); doble Variance2 = ((Price_2-Open_Pair2) * 10000); doble paned = Varianza1-Varianza2; int Salida1 = Varianza1; int Salida2 = Varianza2; firstBar = iBarShift (NULL, TFperiod, StrToTime (StartingTimeCorr), true); should (firstBar lt; 0) Alert (StartingTimeCorr parece estar equivocado); return (0); RefreshRates (); ArrayInitialize (ExtMapBuffer1, 0.0); ArrayInitialize (ExtMapBuffer2, 0.0); _BarsCount = WindowBarsPerChart () moreBars 1; int _FirstBar = firstBar; int _LastBar = _FirstBar - _BarsCount moreBars 1; should (_LastBar lt; 0) _LastBar = 0;_BarsCount = _FirstBar moreBars 1; int I = 0;/ilt; Bars; I )/Agregar un número en negrita a la ventana de histograma cadena Pip_Diff = DoubleToStr (Diferencial, 0); ObjectCreate (Pip_Diff_Label, OBJ_LABEL, 1, 0, 0); ObjectSetText (Pip_Diff_Label, Pip_Diff, FontSize, FontType, FontColor); ObjectSet (Pip_Diff_Label, OBJPROP_CORNER, 1); ObjectSet (Pip_Diff_Label, OBJPROP_XDISTANCE, 1); ObjectSet (Pip_Diff_Label, OBJPROP_YDISTANCE, 1); HistBuffer # 91; I # 93; = Diferencial; IndiorShortName (Diferencial Pair2 = - LRB- Output2 ) Pair1 = - LRB- Output1 )); return (0);

  6. #6

    Cita Iniciado por ;
    Extrañamente; Recibo diferentes resultados cuando está en diferentes gráficos, aunque ambos gráficos deben llamar a la misma información. ¿Alguna idea?
    IBarShift (NULL, ...) devolverá el número de vela de este par al que se adjunta el gráfico. Quizás iBarShift (Pair1, ...) etc. funcionará mejor? Lo siento, no tengo la oportunidad de recorrer su código en detalle, lo cual estoy simplemente adivinando.

  7. #7

  8. #8
    ¿Podría alguien darme una idea exactamente de los datos materiales? He pasado por la asistencia de MT4 pero es demasiado misterioso para mí a este respecto. Básicamente tengo 20 valores que deseo promediar. Estoy usando otras matemáticas para hacer estos valores, así que no puedo usar [precio de cierre, intervalo 20], por ejemplo. Por lo tanto, para cada barra estoy creando algunas. Haga algunas matemáticas que sean diferentes y me gustaría promediar el valor de las últimas 20 barras del número. Estoy imaginando que una matriz es el medio para hacerlo, pero estoy perdido en cuanto a dónde empezar. Cualquier puntero sería muy valorado. Due John

  9. #9
    Double myarray [20]; myarray [0] = valor1;/valor inicial myarray [1] = value2;/segundo valor . . Myarray [19] = valor20;/20 valor worth averageval = 0; for (int I = 0; ilt; 20; I ) averageval = averageval myarray [I]; averageval = averageval20;

  10. #10
    Hola Evan, muchas gracias por eso. ¿Podría ayudar con una explicación sucinta de lo que I hace por mí y lo que está haciendo en el código anterior? Entiendo que es agregar 1 a sí mismo y demás, pero estoy un poco confuso con eso. Due John

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