Resultados 1 al 5 de 5

Tema: Consejos necesarios con algún código MT4

  1. #1
    Hola
    Tengo el siguiente código que espera obtener un MA calculando Close-Low de la barra actual. Mi principal problema es que:

    Cuando coloco por primera vez el indior es atraído bien. Pero a continuación, comienza a dibujar una línea recta ... no puedo averiguar por qué.

    Me he dado cuenta de que el error se debe a los dos bucles que tengo y tiene que ver con todo el factor de las velas. Si reemplazaré el factor de las velas de los bucles while junto con la variable de fondo, funcionará bien, pero al hacerlo seguirá repintando en cada tick las barras una y otra vez.

    ¿Alguna ideaconsejo?

    Aquí está tu código

    Código insertado #include lt; stderror.mqhgt; #include lt; stdlib.mqhgt; #property indior_level1 0 #property indior_separate_window/# property indior_chart_window/Indior es atraído por la ventana principal #property indior_buffers dos #property indior_color1 Blanco/# propiedad indior_color2 Azul/- buffers dual Buf_0 # 91;/- parámetros extern int background = 3000; extern bool log_on = false; Período externo int = 14;/extern bool separate_window = true; string construct = ver 0.29g-TEST-MA; bool isHistoryLoading; int último período = 0; int init () isHistoryLoading = true; SetIndexStyle (0, DRAW_LINE, DRAW_SECTION, 2); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( MAperiod ) constructo); SetLevelValue (0, 0.0000);/La cantidad de la línea horizontal se pone retorno (0); int deinit () return (0); int start () ARM dual = 0, barARM = 0, ASB = 0; doble O, C, H, L; datetime dt, mdt, dt1, dtTemp; int I, j, k, marcas registradas, barra de contados;/int btbars = backtest_bars; búfer dual # 91; 10000 # 93 ;; should (isHistoryLoading) dt = iTime (Symbol (), PERIOD_M1,0); if (dt == 0) isHistoryLoading = true; regreso; isHistoryLoading = false; counted_bars = 0; else counted_bars = IndiorCounted (); debe (candleslt; 0) return (0); velas = Barras de barras contadas;/Índice de la cuenta inicial descontada if (candlesgt; history-1)/Si hay demasiados pubs. . velas = historia-1;/. . calcule la cantidad dada/********************************* PRINCIPAL MIENTRAS LOOP ******** ******************** mientras que ((ilt; = velas)) L = Lowcarbohydrate 91; I # 93 ;; C = Close # 91; I # 93 ;; ARM = ARM C-L; wlog (cambio I # 91; I # 93; -RRB-; Buffer # 91; I # 93; = ARM;/Dibuje el marcador en una ventana separada wlog (Sugerencia # 91; I # 93; = Buf_0 # 91; I # 93; -RRB-; s ; ARM = 0;/END Year int vi = 0; double sum = 0.0; while (vilt; = candles)/CALCULATE MA vi ; for (int vk = vi; vklt; vi MAperiodo; vk ) sum = sum Buffer # 91; vk # 93 ;;/para sum = sumMAperiod; Buf_0 # 91; vi # 93; = sum;/; cantidad = 0;/while return (0); void wlog (cadena s) if (log_on) Print (s);

  2. #2
    Respuesta publicada en el foro mql4

  3. #3

    Cita Iniciado por ;
    Respuesta publicada en el foro mql4
    Parece que todavía repinta los últimos compases. Porque si se recompila en el futuro, se pinta de manera diferente (las últimas barras).

  4. #4
    He reescrito el código (más bien) un poco. . Y creo que funciona como debería. También pinta para el pub actual, lo que creo que es una cosa fantástica. Código insertado #property indior_separate_window #property indior_level1 0 #property indior_buffers 1 #property indior_color1 Crimson dual Buf_0 # 91; # 93 ;; extern int background = 3000; extern int period = 14; int I, p; void init () SetIndexStyle (0, DRAW_LINE); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( intervalo )); SetLevelValue (0, 0.0000); while (Bars lt; history) Sleep (100); de = historia-período; Buf_0 = 0; para (I = history-1; I gt; = de; I--) Buf_0 = Cerrar # 91; I # 93; - Bajo # 91; I # 93 ;; Buf_0= span; para (I = p-1; I gt; = 0; I--) Buf_0 # 91; I # 93; = (Buf_0 # 91; I 1 # 93; * intervalo - (Cerrar # 91; I período # 93; - Bajo # 91; I período # 93; -RRB- (Cerrar # 91; I # 93; - Bajo # 91; I # 93; -RRintervalo; void start () Buf_0 # 91; 0 # 93; = (Buf_0 # 91; 1 # 93; * intervalo - (Cerrar # 91; intervalo # 93; - Bajo # 91; intervalo # 93; -RRB- (Cerrar # 91; 0 # 93; - Bajo # 91; 0 # 93; -RRintervalo;

  5. #5
    Sí, eso también funciona ... Nunca pensé en usar init de esa manera. Gracias
    Cita Iniciado por ;
    He reescrito el código (más bien) un poco. . Y creo que funciona como debería. También pinta para el pub actual, lo que creo que es algo bueno. [código] #property indior_separate_window #property indior_level1 0 #property indior_buffers 1 #property indior_color1 Crimson double Buf_0 []; extern int history = 3000; extern int span = 14; int I, p; void init () {SetIndexStyle (0, DRAW_LINE); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( span )); SetLevelValue ...

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