标准指标超标? - 页 5 1234567 新评论 Forex Trader 2006.11.15 12:34 #41 以下是Satori指标的新版本(只增加了货币Currency1和Currency1的指数)。 //+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+ Forex Trader 2006.11.15 12:36 #42 开设了一个新账户,在MIG检查。开始使用该指标,然后把它从图表上拿下来,检查所创建的图表--没有一个错误(文件是空的)。现在我将检查MIG对GBPJPY H4、EURUSD H4、GBPUSD H4的报价档案(为了实验的纯粹性,我使用以前检查的货币)。 Forex Trader 2006.11.15 13:06 #43 我发现一个奇怪的现象,GBPJPY历史是空的(EURUSD H4和GBPUSD H4历史是到位的),可能是因为TestFile.csv和TestFile.csv2文件中缺少数据。同时,GBPJPY H4图表 本身也显示正确。我已经怀疑 1)时间序列似乎被缓存了(这就是为什么图表显示) 2)数据中心地址(在终端通过数据中心连接到Alpari演示账户之前) 。所以我删除了数据中心地址并切换到Alpari演示账户,切换成功,数据中心被断开了。切换回MIG模拟账户--与服务器连接成功,但MarketWatch的数据没有变化。被迫更新GBPJPY H4(图表上) ,历史反弹。 但最后的报价时间仍然是所有对的10-43。我有一个建立199。 现在我将尝试运行Redraw2指标 ,我看了看MarketWatch--到处都有相同的时间10:43。 Forex Trader 2006.11.15 13:32 #44 嗯...结果发现它是通过数据中心连接的。现在好了,MarketWatch显示的是正确的数据。现在试图了解更深的历史。 Forex Trader 2006.11.15 14:29 #45 更新,引文中有些地方非常有趣 Forex Trader 2006.11.15 15:17 #46 如果这个图是米格公司的,他们就有这样的招数。今年已经看过好几次了。我的欧元兑美元历史上有一个来自MIG的Dojic 08.09.2004的高点~1.7493。 Forex Trader 2006.11.15 15:24 #47 是的,它是米格的 :) Forex Trader 2006.11.15 15:54 #48 为了以防万一,我在启动指标之前重新启动了终端(以避免时间序列的缓存)。在索引号1000之后又出现了错误。 现在,我将做第三个变体来点缀所有的点。 Forex Trader 2006.11.15 16:53 #49 下面是第三个版本 //+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+ Forex Trader 2006.11.15 16:56 #50 第三个版本没有给出明确的答案,我们将不得不在每个工具的4小时时间框架上检查Time[],看看是否有任何额外的秒数。如果没有找到秒针,那么就有一个终端错误。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1)时间序列似乎被缓存了(这就是为什么图表显示)
2)数据中心地址(在终端通过数据中心连接到Alpari演示账户之前)
。所以我删除了数据中心地址并切换到Alpari演示账户,切换成功,数据中心被断开了。切换回MIG模拟账户--与服务器连接成功,但MarketWatch的数据没有变化。被迫更新GBPJPY H4(图表上) ,历史反弹。
但最后的报价时间仍然是所有对的10-43。我有一个建立199。
现在我将尝试运行Redraw2指标
,我看了看MarketWatch--到处都有相同的时间10:43。
现在,我将做第三个变体来点缀所有的点。