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);