Abrí una nueva cuenta para comprobar en MIG. Inicié el indicador, luego lo saqué del gráfico, comprobé los gráficos creados - ni un solo error (los archivos están vacíos). Ahora voy a comprobar el archivo de cotizaciones por MIG para GBPJPY H4, EURUSD H4, GBPUSD H4 (para la pureza del experimento utilicé monedas de comprobaciones anteriores)
Encontré una cosa extraña, el historial de GBPJPY está vacío (el historial de EURUSD H4 y GBPUSD H4 está en su lugar), probablemente debido a la falta de datos en los archivos TestFile.csv y TestFile.csv2. Al mismo tiempo, el gráfico GBPJPY H4 se muestra correctamente. He sospechado que 1) las series de tiempo parecían estar en caché (por eso se muestra el gráfico) 2) la dirección del centro de datos (antes de que el terminal se conectara a la cuenta demo de Alpari a través del centro de datos)
. Así que eliminé la dirección del centro de datos y cambié a la cuenta demo de Alpari, el cambio fue exitoso, el centro de datos está desconectado. Volví a cambiar a la cuenta demo de MIG - la conexión al servidor fue exitosa, pero los datos de MarketWatch no cambiaron. Obligado a actualizar GBPJPY H4 (en el gráfico) , la historia rebotó. Pero la última cotización sigue siendo 10-43 en todos los pares. Tengo una construcción 199.
Ahora voy a tratar de ejecutar el indicador Redraw2
Miré a MarketWatch - tiene el mismo tiempo 10:43 en todas partes.
Hmm... Resulta que de todos modos estaba conectado a través del centro de datos. Ahora todo está bien y MarketWatch muestra los datos correctos. Ahora tratando de conseguir una historia más profunda.
Si este gráfico es de MIG, tienen esos trucos. Ya lo he visto un par de veces este año. Tengo en mi historial de EURUSD de MIG un dojic 08.09.2004 con High ~ 1.7493.
Por si acaso, he reiniciado el terminal antes de iniciar el indicador (para evitar el almacenamiento en caché de las series temporales). Los errores volvieron a aparecer después del número de índice 1000.
Ahora haré la tercera variante para puntear todos los puntos.
La tercera versión no dio una respuesta definitiva, tendremos que comprobar Time[] en el marco temporal de 4 horas para cada instrumento para ver si hay algún segundo extra. Si no se encuentra ningún segundo, hay un error de terminal.
//+------------------------------------------------------------------+ //| RedrawIndicators-2.mq4 | //| Satori | //| http://www.metaquotes.ru/forum/7790/ | //+------------------------------------------------------------------+ #property copyright "Satori" #property link "http://www.metaquotes.ru/forum/7790/" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 Yellow //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; extern int BarsCount=20; //кол-во считаемых баров, если 0 - то все extern string Currency1="EURUSD"; extern string Currency2="GBPUSD"; int handle,handle2; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexLabel(0,Currency1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexLabel(1,Currency2); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtMapBuffer3); handle= FileOpen("TestFile.csv",FILE_CSV|FILE_WRITE,';'); handle2= FileOpen("TestFile2.csv",FILE_CSV|FILE_WRITE,';'); if(handle<1 || handle2<1 ) { Print("Файл не обнаружен, последняя ошибка ", GetLastError()); return(false); } else { FileWrite (handle,"index",Symbol(),"","index1",Currency1,"","index2",Currency2); FileWrite (handle2,"index",Symbol()," ",Currency1," ",Currency2); } return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- FileClose(handle); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i; double test1,test2; datetime tt1,tt2,TimeMain; BarsCount=MathMin(Bars,(MathMin(iBars(Currency1,Period()),iBars(Currency2,Period())))); for (i=0;i<BarsCount-counted_bars;i++) { TimeMain=Time[i]; ExtMapBuffer1[i]=iTime(Currency1,Period(),iBarShift(Currency1,Period(),TimeMain)); ExtMapBuffer2[i]=iTime(Currency2,Period(),iBarShift(Currency2,Period(),TimeMain)); ExtMapBuffer3[i]=(ExtMapBuffer1[i]-ExtMapBuffer2[i]); tt1=Time[i]-ExtMapBuffer1[i]; tt2=Time[i]-ExtMapBuffer2[i]; if (ExtMapBuffer3[i]!=0 || tt1!=0 || tt2!=0) { if (FileWrite (handle, i,TimeToStr(Time[i]),"",iBarShift(Currency1,Period(),ExtMapBuffer1[i]),TimeToStr(ExtMapBuffer1[i]),"",iBarShift(Currency2,Period(),ExtMapBuffer2[i]),TimeToStr(ExtMapBuffer2[i]) )<=0) Print("нифига не пишет!!"); } FileFlush(handle); if ((iTime(Symbol(),Period(),i)!=iTime(Currency1,Period(),i) || Time[i]!=iTime(Currency1,Period(),i) || iTime(Currency1,Period(),i)!=iTime(Currency2,Period(),i) ) && i>0) { if (FileWrite (handle2,i, TimeToStr(Time[i])," ",TimeToStr(iTime(Currency1,Period(),i))," ",TimeToStr(iTime(Currency2,Period(),i)) )<=0) Print("нифига не пишет!!"); } }//---- return(0); } //+------------------------------------------------------------------+1) las series de tiempo parecían estar en caché (por eso se muestra el gráfico)
2) la dirección del centro de datos (antes de que el terminal se conectara a la cuenta demo de Alpari a través del centro de datos)
. Así que eliminé la dirección del centro de datos y cambié a la cuenta demo de Alpari, el cambio fue exitoso, el centro de datos está desconectado. Volví a cambiar a la cuenta demo de MIG - la conexión al servidor fue exitosa, pero los datos de MarketWatch no cambiaron. Obligado a actualizar GBPJPY H4 (en el gráfico) , la historia rebotó.
Pero la última cotización sigue siendo 10-43 en todos los pares. Tengo una construcción 199.
Ahora voy a tratar de ejecutar el indicador Redraw2
Miré a MarketWatch - tiene el mismo tiempo 10:43 en todas partes.
Ahora haré la tercera variante para puntear todos los puntos.
//+------------------------------------------------------------------+ //| RedrawIndicators-2.mq4 | //| Satori | //| http://www.metaquotes.ru/forum/7790/ | //+------------------------------------------------------------------+ #property copyright "Satori" #property link "http://www.metaquotes.ru/forum/7790/" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 Yellow //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; extern int BarsCount=20; //кол-во считаемых баров, если 0 - то все extern string Currency1="EURUSD"; extern string Currency2="GBPUSD"; int handle,handle2; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexLabel(0,Currency1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexLabel(1,Currency2); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtMapBuffer3); handle= FileOpen("TestFile3.csv",FILE_CSV|FILE_WRITE,';'); handle2= FileOpen("TestFile3-2.csv",FILE_CSV|FILE_WRITE,';'); if(handle<1 || handle2<1 ) { Print("Файл не обнаружен, последняя ошибка ", GetLastError()); return(false); } else { FileWrite (handle,"index",Symbol(),"iBarShift1","index1","Time[index1-1]",Currency1,"Time[index1+1]","iBarShift2","index2","Time[index2-1]",Currency2,"Time[index2+1]"); FileWrite (handle2,"index",Symbol()," ",Currency1," ",Currency2); } return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- FileClose(handle); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i; double test1,test2; double Bar1,Bar2; int iBarShift1,iBarShift2; datetime tt1,tt2,TimeMain; BarsCount=MathMin(Bars,(MathMin(iBars(Currency1,Period()),iBars(Currency2,Period())))); for (i=0;i<BarsCount-counted_bars;i++) { TimeMain=Time[i]; iBarShift1=iBarShift(Currency1,Period(),TimeMain); iBarShift2=iBarShift(Currency2,Period(),TimeMain); ExtMapBuffer1[i]=iTime(Currency1,Period(),iBarShift1); ExtMapBuffer2[i]=iTime(Currency2,Period(),iBarShift2); ExtMapBuffer3[i]=(ExtMapBuffer1[i]-ExtMapBuffer2[i]); tt1=Time[i]-ExtMapBuffer1[i]; tt2=Time[i]-ExtMapBuffer2[i]; if (ExtMapBuffer3[i]!=0 || tt1!=0 || tt2!=0) { Bar1=iBarShift(Currency1,Period(),ExtMapBuffer1[i]); Bar2=iBarShift(Currency2,Period(),ExtMapBuffer2[i]); if (FileWrite (handle, i,TimeToStr(Time[i]),iBarShift1,Bar1,TimeToStr(iTime(Currency1,Period(),Bar1-1)),TimeToStr(ExtMapBuffer1[i]),TimeToStr(iTime(Currency1,Period(),Bar1+1)),iBarShift1,Bar2,TimeToStr(iTime(Currency2,Period(),Bar2-1)),TimeToStr(ExtMapBuffer2[i]),TimeToStr(iTime(Currency2,Period(),Bar2+1)) )<=0) Print("нифига не пишет!!"); } FileFlush(handle); if ((iTime(Symbol(),Period(),i)!=iTime(Currency1,Period(),i) || Time[i]!=iTime(Currency1,Period(),i) || iTime(Currency1,Period(),i)!=iTime(Currency2,Period(),i) ) && i>0) { if (FileWrite (handle2,i, TimeToStr(Time[i])," ",TimeToStr(iTime(Currency1,Period(),i))," ",TimeToStr(iTime(Currency2,Period(),i)) )<=0) Print("нифига не пишет!!"); } }//---- return(0); } //+------------------------------------------------------------------+