新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 720 1...713714715716717718719720721722723724725726727...1953 新评论 Roman Sharanov 2018.12.28 04:21 #7191 你能告诉我如何将指标中的所有图画设置为背景,而不是在蜡烛图的上面? Artyom Trishkin 2018.12.28 04:24 #7192 Roman Sharanov: 你能告诉我如何将指标中的所有图画设置为背景,而不是放在蜡烛图的上面吗?使用ChartSetInteger(chart_id,CHART_FOREGROUND,value)属性设置。 这不仅是针对指标而言。 Kos Mos 2018.12.29 08:20 #7193 你好,我有一个脉冲平坦柱状图指标,想把它从柱状图转换为线形指标。我从哪里开始呢? //+------------------------------------------------------------------+ //| FM Signal Filter.mq4 | //| Copyright © 2008 | //| enhanced version | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008 Arney Derick" #property link "http://metatrader.com/" #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_color3 DarkBlue #property indicator_color4 Maroon #property indicator_color5 Lime #property indicator_color6 Yellow //---- input parameters extern int bolPrd=20; extern double bolDev=2.0; extern int keltPrd=20; extern double keltFactor=1.5; extern int momPrd=12; //---- buffers double upB[]; double upB2[]; double loB[]; double loB2[]; double upK[]; double loK[]; int i,j,slippage=3; double breakpoint=0.0; double ema=0.0; int peakf=0; int peaks=0; int valleyf=0; int valleys=0, limit=0; double ccis[61],ccif[61]; double delta=0; double ugol=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,3); SetIndexBuffer(0,upB); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,3); SetIndexBuffer(1,loB); SetIndexEmptyValue(1,EMPTY_VALUE); SetIndexStyle(4,DRAW_ARROW,EMPTY,3); SetIndexBuffer(4,upK); SetIndexEmptyValue(4,EMPTY_VALUE); SetIndexArrow(4,159); SetIndexStyle(5,DRAW_ARROW,EMPTY,1); SetIndexBuffer(5,loK); SetIndexEmptyValue(5,EMPTY_VALUE); SetIndexArrow(5,159); SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,3); SetIndexEmptyValue(2,EMPTY_VALUE); SetIndexBuffer(2,upB2); SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,3); SetIndexEmptyValue(3,EMPTY_VALUE); SetIndexBuffer(3,loB2); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int shift,limit; double diff,d,dPrev,std,bbs; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-31; if(counted_bars>=31) limit=Bars-counted_bars-1; for(shift=limit;shift>=0;shift--) { //d=iMomentum(NULL,0,momPrd,PRICE_CLOSE,shift); d=LinearRegressionValue(bolPrd,shift); dPrev=LinearRegressionValue(bolPrd,shift+1); if(d>0) { if((dPrev>0) && (dPrev>d)){ upB2[shift]=d; upB[shift]=0; } else { upB[shift]=d; upB2[shift]=0; } //upB[shift]=0; loB[shift]=0; loB2[shift]=0; } else { if((dPrev<0) && (dPrev<d)){ loB2[shift]=d; loB[shift]=0; } else { loB[shift]=d; loB2[shift]=0; } upB[shift]=0; upB2[shift]=0; //loB[shift]=d; } diff= iATR(NULL,0,keltPrd,shift)*keltFactor; std = iStdDev(NULL,0,bolPrd,MODE_SMA,0,PRICE_CLOSE,shift); bbs = bolDev * std / diff; if(bbs<1) { upK[shift]=0; loK[shift]=EMPTY_VALUE; } else { loK[shift]=0; upK[shift]=EMPTY_VALUE; } } return(0); } //+------------------------------------------------------------------+ double LinearRegressionValue(int Len,int shift) { double SumBars=0; double SumSqrBars=0; double SumY = 0; double Sum1 = 0; double Sum2 = 0; double Slope= 0; SumBars=Len *(Len-1)*0.5; SumSqrBars=(Len-1)*Len *(2*Len-1)/6; for(int x=0; x<=Len-1;x++) { double HH = Low[x+shift]; double LL = High[x+shift]; for(int y=x; y<=(x+Len)-1; y++) { HH = MathMax(HH, High[y+shift]); LL = MathMin(LL, Low[y+shift]); } Sum1 += x* (Close[x+shift]-((HH+LL)/2 + iMA(NULL,0,Len,0,MODE_EMA,PRICE_CLOSE,x+shift))/2); SumY += (Close[x+shift]-((HH+LL)/2 + iMA(NULL,0,Len,0,MODE_EMA,PRICE_CLOSE,x+shift))/2); } Sum2=SumBars*SumY; double Num1 = Len * Sum1 - Sum2; double Num2 = SumBars * SumBars-Len * SumSqrBars; if(Num2!=0.0) { Slope=Num1/Num2; } else { Slope=0; } double Intercept=(SumY-Slope*SumBars)/Len; double LinearRegValue=Intercept+Slope *(Len-1); return (LinearRegValue); } //+------------------------------------------------------------------+ Kos Mos 2018.12.29 08:35 #7194 我用DRAW_LINE替换了DRAW-HISTOGRAM,并删除了最后2个在0级画线 的缓冲区,得到了这个结果。 曾经是--现在是 附加的文件: 26.png 27 kb 27.png 29 kb Artyom Trishkin 2018.12.29 08:37 #7195 Kos Mos:我用DRAW_LINE替换了DRAW-HISTOGRAM,并删除了最后2个在0级画线 的缓冲区,得到了这个结果。 曾经是--现在是为自己解决了这个问题 :) Kos Mos 2018.12.29 08:44 #7196 Artyom Trishkin:想通了 :)是的)),它看起来很糟糕,因为还有4个缓冲区,我想它需要2个或1个,我说的对吗? Konstantin Lebedev 2018.12.30 17:59 #7197 谁能告诉我如何写代码,例如不是最后一天,而是前一天,以此类推,至少是前七天,或者在论坛这里或功能目录中寻找它。这里是前一天的一个例子。 #property indicator_chart_window 外部 bool Show_LABELS=true; 外部 inttern Shift_Prev_LABEL=10; // 数字表示水平移动。 双重DHi,DLo。 //---- 上一页 DHi =iHigh(NULL,PERIOD_D1,1)。DLo =iLow(NULL,PERIOD_D1,1)。 如果(Show_LABELS==true){ 如果(ObjectFind("Pre_day_maximum")!=0){ObjectCreate("Pre_day_Maximum", OBJ_TEXT, 0, Time[Shift_Prev_LABEL+196], DHi)。ObjectSetText("Prev_D1"+DoubleToStr(DHi,Digits)+" ", 9, "Arial", Magenta)。}否则{ObjectMove("Prev_D1", 0, Time[Shift_Prev_LABEL+196], DHi)。}如果(ObjectFind("Pre_day_minimum")!=0){ObjectCreate("Pre_day_minimum", OBJ_TEXT, 0, Time[Shift_Prev_LABEL+196], DLo)。ObjectSetText("Pre_day_minimum", "Prev_D1"+DoubleToStr(DLo,Digits)+" ", 9, "Arial", LawnGreen)。}否则{ObjectMove("Prev_day_minimum", 0, Time[Shift_Prev_LABEL+196], DLo)。} } 没有写在inite、deinite和start的代码。 double DHi,DLo; // 显然,我们需要从这里开始,但我不知道具体是什么,然后我就会自己写所有的东西。 Any questions from newcomers 支点指标 如何编码? Kos Mos 2018.12.30 19:11 #7198 Artyom Trishkin:我们已经想通了 :)你好!请告诉我如何制作一条实心线。 Aleksey Vyazmikin 2018.12.30 20:09 #7199 koctja:DHi =iHigh(NULL,PERIOD_D1,1)。DLo =iLow(NULL,PERIOD_D1,1)。 double DHi,DLo; // 显然,我们需要从这里开始,具体是什么不知道,但这样我就会自己写出一切。从帮助开始!只要把一个数字改为所需的条形移位iHigh(NULL,PERIOD_D1,1)。 Aleksey Vyazmikin 2018.12.30 20:11 #7200 Kos Mos:你好!请告诉我如何制作一条实心线。阅读 "indicator_style "帮助 指标_样式N䵮䵮用ENUM_LINE_STYLE 的值表示图形系列 中的线条风格。N - 图形系列编号,从1开始编号 1...713714715716717718719720721722723724725726727...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你能告诉我如何将指标中的所有图画设置为背景,而不是放在蜡烛图的上面吗?
使用ChartSetInteger(chart_id,CHART_FOREGROUND,value)属性设置。
这不仅是针对指标而言。
你好,我有一个脉冲平坦柱状图指标,想把它从柱状图转换为线形指标。我从哪里开始呢?
我用DRAW_LINE替换了DRAW-HISTOGRAM,并删除了最后2个在0级画线 的缓冲区,得到了这个结果。
曾经是--现在是
我用DRAW_LINE替换了DRAW-HISTOGRAM,并删除了最后2个在0级画线 的缓冲区,得到了这个结果。
曾经是--现在是
为自己解决了这个问题 :)
想通了 :)
是的)),它看起来很糟糕,因为还有4个缓冲区,我想它需要2个或1个,我说的对吗?
谁能告诉我如何写代码,例如不是最后一天,而是前一天,以此类推,至少是前七天,或者在论坛这里或功能目录中寻找它。这里是前一天的一个例子。
#property indicator_chart_window
外部 bool Show_LABELS=true;
外部 inttern Shift_Prev_LABEL=10; // 数字表示水平移动。
双重DHi,DLo。
//---- 上一页
DHi =iHigh(NULL,PERIOD_D1,1)。
DLo =iLow(NULL,PERIOD_D1,1)。
如果(Show_LABELS==true)
{
如果(ObjectFind("Pre_day_maximum")!=0)
{
ObjectCreate("Pre_day_Maximum", OBJ_TEXT, 0, Time[Shift_Prev_LABEL+196], DHi)。
ObjectSetText("Prev_D1"+DoubleToStr(DHi,Digits)+" ", 9, "Arial", Magenta)。
}
否则
{
ObjectMove("Prev_D1", 0, Time[Shift_Prev_LABEL+196], DHi)。
}
如果(ObjectFind("Pre_day_minimum")!=0)
{
ObjectCreate("Pre_day_minimum", OBJ_TEXT, 0, Time[Shift_Prev_LABEL+196], DLo)。
ObjectSetText("Pre_day_minimum", "Prev_D1"+DoubleToStr(DLo,Digits)+" ", 9, "Arial", LawnGreen)。
}
否则
{
ObjectMove("Prev_day_minimum", 0, Time[Shift_Prev_LABEL+196], DLo)。
}
}
没有写在inite、deinite和start的代码。
double DHi,DLo; // 显然,我们需要从这里开始,但我不知道具体是什么,然后我就会自己写所有的东西。
我们已经想通了 :)
你好!请告诉我如何制作一条实心线。
DHi =iHigh(NULL,PERIOD_D1,1)。
DLo =iLow(NULL,PERIOD_D1,1)。
double DHi,DLo; // 显然,我们需要从这里开始,具体是什么不知道,但这样我就会自己写出一切。
从帮助开始!只要把一个数字改为所需的条形移位iHigh(NULL,PERIOD_D1,1)。
你好!请告诉我如何制作一条实心线。
阅读 "indicator_style "帮助
指标_样式N
䵮䵮
用ENUM_LINE_STYLE 的值表示图形系列 中的线条风格。N - 图形系列编号,从1开始编号