新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 371 1...364365366367368369370371372373374375376377378...1953 新评论 Tretyakov Rostyslav 2017.11.09 07:33 #3701 向所有论坛成员问好。 请帮助我让该指标在特定的符号上工作,无论它被设置在哪个图表上。 我知道,一个外部参数被用来改变符号input string Symb ="GBPJPY"; 我不知道接下来该怎么做 我在此附上指标 附加的文件: Fisher.mq4 3 kb YarTrade 2017.11.09 07:36 #3702 请告诉我如何在新条形图出现时重置缓冲区,但要使以前的数据不被抹去并显示在图表上。由于某些原因,我无法将缓冲区重置为零,当新的条形图出现 时,新的数据会叠加在旧的累积数据上。我的代码有什么问题吗?谢谢你的澄清。void OnInit() { IndicatorDigits(0); SetIndexBuffer(0,Buf_1); SetIndexBuffer(1,Buf_2); Bid1=Bid; } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { datetime Вр=Time[0]; // Время текущего бара if(Вр>Время) // Если новый бар { Время=Вр; // Запомнить Buf_1[0]=0; // и обнулить последний элемент буфера Buf_2[0]=0; } if(Bid > Bid1) { V1 = iVolume(NULL, 0, 0); V2 = V1 + V2; Buf_1[0]= V2; } else { V3 = iVolume(NULL, 0, 0); V4 = V3 + V4; Buf_2[0]= (V4*-1); } Bid1=Bid; return(rates_total); } PokrovMT5 2017.11.09 09:01 #3703 Alekseu Fedotov: 这就是事实我有一个关于代码的问题,事实证明,未收盘的当前蜡烛有收盘时间,在蜡烛收盘前,指标会画出该时段的价格收盘,在此基础上,指标在屏幕区域呈现红色,而这是不应该画的,因为小时蜡烛没有收盘。,这就是编译的时间,然后在编译之后就会出现每个收盘的蜡烛的画法,当然你可以通过寻找小时线来解决另一种方法,但是我想要一个更简单的方法,我之前写过,所以for(i=limit; i>0; i--) { yesterday_weekday = TimeHour(iTime(Symbol(),0,i+1))-TimeHour(iTime(Symbol(),0,i)); if(yesterday_weekday!=0) 还有其他解决方法吗?我想在编译中看到它,但我想有一个更简单的解决方案。 Konstantin Erin 2017.11.09 10:18 #3704 MakarFX: 请帮助我使该指标对某一符号起作用,不管它被设置在哪个图表上。有必要在调用最高、最低时写下这个参数--它们已经过时了,更好的是iHigest、iLowest,并称赞声名狼藉的费舍尔立即同意平局(V.Vysotsky)。 Maxim Kuznetsov 2017.11.09 10:37 #3705 PokrovMT5:我对代码有一个问题,事实证明,未关闭的当前一小时的蜡烛有关闭时间,在蜡烛关闭之前,指标会画出指标所处时期的价格关闭,截图中的红色区域不会被画出来,因为一小时的蜡烛没有关闭。,这就是编译的时间,然后在编译之后就会出现每个收盘的蜡烛图的绘制,当然你可以通过寻找小时柱来解决另一种方法,但是我想要一个更简单的方法,我之前写过有其他的解决方案吗?谢谢你。如果我理解正确的话,你想在图表上标记每小时的收盘价?// (только для TF меньше часа) для всех свечей внутри часа поставить HourCloseBuff=цена закрытия часа// предполагается что close индексирован как тайм-серияfor(int back=i+1;back<=limit && TimeHour(time[back]==TimeHour(time[i+1]);back++) { HourCloseBuff[back]=close[i+1];} Tretyakov Rostyslav 2017.11.09 10:44 #3706 STARIJ:我们应该把这个参数写进最高、最低的调用中--它们已经过时了,更好的是iHigest、iLowest和被称赞的臭名昭著的费舍尔立即同意和棋(V.Vysotsky)。#property copyright "Copyright © 2005, Yura Prokofiev" #property link "Yura.prokofiev@gmail.com" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Black #property indicator_color2 Lime #property indicator_color3 Red input string Symb ="GBPJPY"; extern int period =10; double ExtBuffer0[]; double ExtBuffer1[]; double ExtBuffer2[]; int init() { SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Red); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Lime); SetIndexStyle(2,DRAW_HISTOGRAM); IndicatorDigits(Digits+1); SetIndexBuffer(0,ExtBuffer0); SetIndexBuffer(1,ExtBuffer1); SetIndexBuffer(2,ExtBuffer2); IndicatorShortName("Fisher"); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); return(0); } int start() { //int period=10; int limit; int counted_bars=IndicatorCounted(); double prev,current,old; double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0; double price; double MinL=0; double MaxH=0; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0; i<limit; i++) { MaxH = High[iHighest(Symb,0,MODE_HIGH,period,i)]; MinL = Low[iLowest(Symb,0,MODE_LOW,period,i)]; price = (High[i]+Low[i])/2; Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1; Value=MathMin(MathMax(Value,-0.999),0.999); ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1; Value1=Value; Fish1=ExtBuffer0[i]; } bool up=true; for(i=limit-2; i>=0; i--) { current=ExtBuffer0[i]; prev=ExtBuffer0[i+1]; if (((current<0)&&(prev>0))||(current<0)) up= false; if (((current>0)&&(prev<0))||(current>0)) up= true; if(!up) { ExtBuffer2[i]=current; ExtBuffer1[i]=0.0; } else { ExtBuffer1[i]=current; ExtBuffer2[i]=0.0; } } return(0); } 我做了,但这并没有解决这个问题,因为 price = (High[i]+Low[i])/2; 高和低使用当前的符号。 PokrovMT5 2017.11.09 12:06 #3707 Maxim Kuznetsov:如果我理解正确的话,你想在图表上标记每小时的收盘价?// (только для TF меньше часа) для всех свечей внутри часа поставить HourCloseBuff=цена закрытия часа// предполагается что close индексирован как тайм-серияfor(int back=i+1;back<=limit && TimeHour(time[back]==TimeHour(time[i+1]);back++) { HourCloseBuff[back]=close[i+1];}马克西姆,日安!感谢你的变体,我的变体几乎相同,也能工作,但阿列克谢-费多托夫 建议,我写道,有一个想法,如何纠正它?for(i=limit; i>=0; i--) { T = iTime(NULL,0,i); shift=iBarShift(NULL,60,T); C=iClose(NULL,60,shift); CC[i]=C; } YarTrade 2017.11.09 12:11 #3708 请告诉我如何在新条形图出现时重置缓冲区,但要使以前的数据不被抹去,而是显示在图表上。由于某些原因,我无法将缓冲区重置为零,当新的条形图出现 时,新的数据会叠加在旧的累积数据上。我的代码有什么问题吗?谢谢你的澄清。 datetime Вр=Time[0]; // Время текущего бара if(Вр>Время) // Если новый бар { Время=Вр; // Запомнить Buf_1[0]=0; // и обнулить последний элемент буфера Buf_2[0]=0; } if(Bid > Bid1) { V1 = iVolume(NULL, 0, 0); V2 = V1 + V2; Buf_1[0]= V2; } else { V3 = iVolume(NULL, 0, 0); V4 = V3 + V4; Buf_2[0]= (V4*-1); } Bid1=Bid; return(rates_total); YarTrade 2017.11.09 12:17 #3709 没有人可以帮助我吗? danya-asg 2017.11.09 12:23 #3710 祝大家今天愉快我如何切换到正确的图表窗口? 我打开了许多不同货币对的窗口,每个窗口都有一个EA,出现了一个交易信号,但货币是他娘的,我需要快速激活信号出现的确切图表。我知道Symbol() 命令,但我不知道如何用指定的货币对激活一个窗口。也许,谁曾面临过这个任务? 1...364365366367368369370371372373374375376377378...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
向所有论坛成员问好。
我不知道接下来该怎么做请帮助我让该指标在特定的符号上工作,无论它被设置在哪个图表上。
我知道,一个外部参数被用来改变符号
我在此附上指标
请告诉我如何在新条形图出现时重置缓冲区,但要使以前的数据不被抹去并显示在图表上。由于某些原因,我无法将缓冲区重置为零,当新的条形图出现 时,新的数据会叠加在旧的累积数据上。我的代码有什么问题吗?谢谢你的澄清。
这就是事实
还有其他解决方法吗?我想在编译中看到它,但我想有一个更简单的解决方案。
有必要在调用最高、最低时写下这个参数--它们已经过时了,更好的是iHigest、iLowest,并称赞声名狼藉的费舍尔立即同意平局(V.Vysotsky)。
我对代码有一个问题,事实证明,未关闭的当前一小时的蜡烛有关闭时间,在蜡烛关闭之前,指标会画出指标所处时期的价格关闭,截图中的红色区域不会被画出来,因为一小时的蜡烛没有关闭。,这就是编译的时间,然后在编译之后就会出现每个收盘的蜡烛图的绘制,当然你可以通过寻找小时柱来解决另一种方法,但是我想要一个更简单的方法,我之前写过
有其他的解决方案吗?谢谢你。
如果我理解正确的话,你想在图表上标记每小时的收盘价?
// (только для TF меньше часа) для всех свечей внутри часа поставить HourCloseBuff=цена закрытия часа
// предполагается что close индексирован как тайм-серия
for(int back=i+1;back<=limit && TimeHour(time[back]==TimeHour(time[i+1]);back++) {
HourCloseBuff[back]=close[i+1];
}
我们应该把这个参数写进最高、最低的调用中--它们已经过时了,更好的是iHigest、iLowest和被称赞的臭名昭著的费舍尔立即同意和棋(V.Vysotsky)。
高和低使用当前的符号。
如果我理解正确的话,你想在图表上标记每小时的收盘价?
// (только для TF меньше часа) для всех свечей внутри часа поставить HourCloseBuff=цена закрытия часа
// предполагается что close индексирован как тайм-серия
for(int back=i+1;back<=limit && TimeHour(time[back]==TimeHour(time[i+1]);back++) {
HourCloseBuff[back]=close[i+1];
}
马克西姆,日安!感谢你的变体,我的变体几乎相同,也能工作,但阿列克谢-费多托夫 建议,我写道,有一个想法,如何纠正它?
请告诉我如何在新条形图出现时重置缓冲区,但要使以前的数据不被抹去,而是显示在图表上。由于某些原因,我无法将缓冲区重置为零,当新的条形图出现 时,新的数据会叠加在旧的累积数据上。我的代码有什么问题吗?谢谢你的澄清。
没有人可以帮助我吗?
祝大家今天愉快我如何切换到正确的图表窗口?
我打开了许多不同货币对的窗口,每个窗口都有一个EA,出现了一个交易信号,但货币是他娘的,我需要快速激活信号出现的确切图表。
我知道Symbol() 命令,但我不知道如何用指定的货币对激活一个窗口。也许,谁曾面临过这个任务?