编码帮助 - 页 292 1...285286287288289290291292293294295296297298299...786 新评论 Mladen Rakic 2014.06.09 15:37 #2911 daytrade5: 尊敬的MLADEN先生,我一直找不到一个简单地绘制前一天的高低点的指标,不包括星期天。我一直在使用附件中的指标,希望能对其进行修改,以排除周日的数据。提前感谢您的帮助。 Daytrade5 这应该就是了。试试吧:prevday_hilo_no_sunday.mq4 附加的文件: pdhl.gif 70 kb prevday_hilo_no_sunday.mq4 4 kb daytrade5 2014.06.09 15:59 #2912 mladen: daytrade5 这应该就是了。试试吧 :prevday_hilo_no_sunday.mq4 姆拉登。 这绝对是完美的。非常感谢你的帮助。 ccjjaa 2014.06.10 05:06 #2913 你好。 我知道这有点模糊,但这是否对EA的功能 有任何重大影响,如果是,我需要寻找什么来纠正它? 问题是36个 "仅通过引用传递的数组 "的警告,在新的MT4中,数组必须以某种方式处理。谢谢你对这个问题的任何见解 Mladen Rakic 2014.06.10 05:20 #2914 cja: 嗨,我知道这有点模糊,但是这对EA的功能有什么影响吗,如果有,我需要寻找什么来纠正它? 这个问题是36个 "仅通过引用传递的数组 "的警告,在新的MT4中,是否有一定的方式来处理数组。谢谢你对这个问题的任何见解 cja 它应该不会影响到它,因为编译器应该自动转换它。 为了避免这个警告,只需在函数 声明中的数组类型声明后加上"&"(所以用 "void example(double arrayPassedByReference[]) "代替 "void example(double& arrayPassedByReference[])")。 nevar 2014.06.10 12:32 #2915 亲爱的Mladen和任何人。 你知道下面的代码是如何创建买入-卖出信号 的吗?它说''系列数组,包含每个条形的开盘-收盘-最高-最低价格'''创建的指标曲线:执行DRAW_HISTOGRAM类型的曲线''就我看来,它并不重绘。 谢谢。 double W_Buffer0[]; double W_Buffer1[]; double R_Buffer0[]; double R_Buffer1[]; double S_Buffer0[]; double S_Buffer1[]; double E_Buffer0[]; double E_Buffer1[]; int R_t3_period=21; double R_b=0.8; extern int R_mBar=0; double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3; double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy; bool R_ft=True; double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3; double R_t3[]; int R_LoopBegin, R_shift; int init() { //---- indicators SetIndexStyle (0,DRAW_NONE); SetIndexBuffer (0,W_Buffer0); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexStyle (1,DRAW_NONE); SetIndexBuffer (1,W_Buffer1); SetIndexEmptyValue(1,EMPTY_VALUE); SetIndexStyle (2,DRAW_NONE); SetIndexBuffer (2,R_Buffer0); SetIndexEmptyValue(2,EMPTY_VALUE); SetIndexStyle (3,DRAW_NONE); SetIndexBuffer (3,R_Buffer1); SetIndexEmptyValue(3,EMPTY_VALUE); SetIndexStyle (4,DRAW_ARROW,EMPTY,2); SetIndexArrow (4,241); SetIndexBuffer (4,S_Buffer0); SetIndexEmptyValue(4,EMPTY_VALUE); SetIndexStyle (5,DRAW_ARROW,EMPTY,2); SetIndexArrow (5,242); SetIndexBuffer (5,S_Buffer1); SetIndexEmptyValue(5,EMPTY_VALUE); SetIndexStyle (6,DRAW_ARROW,EMPTY,2); SetIndexArrow (6,251); SetIndexBuffer (6,E_Buffer0); SetIndexEmptyValue(6,EMPTY_VALUE); SetIndexStyle (7,DRAW_ARROW,EMPTY,2); SetIndexArrow (7,251); SetIndexBuffer (7,E_Buffer1); SetIndexEmptyValue(7,EMPTY_VALUE); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { W_t3_period=8; W_b=0.8; W_per=21; W_psel=-30; W_pbuy=-70; W_b2=W_b*W_b; W_b3=W_b2*W_b; W_c1=-W_b3; W_c2=(3*(W_b2+W_b3)); W_c3=-3*(2*W_b2+W_b+W_b3); W_c4=(1+3*W_b+W_b3+3*W_b2); W_n=W_t3_period; if (W_n<1) W_n=1; W_n = 1 + 0.5*(W_n-1); W_w1 = 2 / (W_n + 1); W_w2 = 1 - W_w1; if (R_mBar==0) R_LoopBegin=Bars; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars); for(int i=0; i<R_LoopBegin; i++) { W_wpr=iWPR(NULL,0,W_per,i); W_e1 = W_w1*W_wpr + W_w2*W_e1; W_e2 = W_w1*W_e1 + W_w2*W_e2; W_e3 = W_w1*W_e2 + W_w2*W_e3; W_e4 = W_w1*W_e3 + W_w2*W_e4; W_e5 = W_w1*W_e4 + W_w2*W_e5; W_e6 = W_w1*W_e5 + W_w2*W_e6; W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3; if (W_t3>=-50) W_trig=W_psel; if (W_t3<-50) W_trig=W_pbuy; W_Buffer0=W_t3; W_Buffer1=W_trig; } if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1); ArrayResize(R_t3, R_LoopBegin); if (R_ft) { R_b2=R_b*R_b; R_b3=R_b2*R_b; R_c1=-R_b3; R_c2=(3*(R_b2+R_b3)); R_c3=-3*(2*R_b2+R_b+R_b3); R_c4=(1+3*R_b+R_b3+3*R_b2); R_n=R_t3_period; if (R_n<1) R_n=1; R_n=1+0.5*(R_n-1); R_w1=2/(R_n+1); R_w2=1-R_w1; R_ft=False; } for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) { R_e1=R_w1*Close[R_shift]+R_w2*R_e1; R_e2=R_w1*R_e1+R_w2*R_e2; R_e3=R_w1*R_e2+R_w2*R_e3; R_e4=R_w1*R_e3+R_w2*R_e4; R_e5=R_w1*R_e4+R_w2*R_e5; R_e6=R_w1*R_e5+R_w2*R_e6; R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3; if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0; if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0; } if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1); for (int cnt=0;cnt<=R_LoopBegin;cnt++) { if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0; if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0; } if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1); for (cnt=0;cnt<=R_LoopBegin;cnt++) { if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0; if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0; } Coding help CDP指标 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Mladen Rakic 2014.06.10 12:42 #2916 nevar: 亲爱的Mladen和任何人。你知道下面的代码是如何创建买入-卖出信号的吗?它说''系列数组,包含每个条形的开-收-高-低价格'''创建的指标曲线:执行DRAW_HISTOGRAM类型的曲线''就我看来,它并不'重绘。 谢谢。 double W_Buffer0[]; double W_Buffer1[]; double R_Buffer0[]; double R_Buffer1[]; double S_Buffer0[]; double S_Buffer1[]; double E_Buffer0[]; double E_Buffer1[]; int R_t3_period=21; double R_b=0.8; extern int R_mBar=0; double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3; double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy; bool R_ft=True; double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3; double R_t3[]; int R_LoopBegin, R_shift; int init() { //---- indicators SetIndexStyle (0,DRAW_NONE); SetIndexBuffer (0,W_Buffer0); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexStyle (1,DRAW_NONE); SetIndexBuffer (1,W_Buffer1); SetIndexEmptyValue(1,EMPTY_VALUE); SetIndexStyle (2,DRAW_NONE); SetIndexBuffer (2,R_Buffer0); SetIndexEmptyValue(2,EMPTY_VALUE); SetIndexStyle (3,DRAW_NONE); SetIndexBuffer (3,R_Buffer1); SetIndexEmptyValue(3,EMPTY_VALUE); SetIndexStyle (4,DRAW_ARROW,EMPTY,2); SetIndexArrow (4,241); SetIndexBuffer (4,S_Buffer0); SetIndexEmptyValue(4,EMPTY_VALUE); SetIndexStyle (5,DRAW_ARROW,EMPTY,2); SetIndexArrow (5,242); SetIndexBuffer (5,S_Buffer1); SetIndexEmptyValue(5,EMPTY_VALUE); SetIndexStyle (6,DRAW_ARROW,EMPTY,2); SetIndexArrow (6,251); SetIndexBuffer (6,E_Buffer0); SetIndexEmptyValue(6,EMPTY_VALUE); SetIndexStyle (7,DRAW_ARROW,EMPTY,2); SetIndexArrow (7,251); SetIndexBuffer (7,E_Buffer1); SetIndexEmptyValue(7,EMPTY_VALUE); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { W_t3_period=8; W_b=0.8; W_per=21; W_psel=-30; W_pbuy=-70; W_b2=W_b*W_b; W_b3=W_b2*W_b; W_c1=-W_b3; W_c2=(3*(W_b2+W_b3)); W_c3=-3*(2*W_b2+W_b+W_b3); W_c4=(1+3*W_b+W_b3+3*W_b2); W_n=W_t3_period; if (W_n<1) W_n=1; W_n = 1 + 0.5*(W_n-1); W_w1 = 2 / (W_n + 1); W_w2 = 1 - W_w1; if (R_mBar==0) R_LoopBegin=Bars; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars); for(int i=0; i<R_LoopBegin; i++) { W_wpr=iWPR(NULL,0,W_per,i); W_e1 = W_w1*W_wpr + W_w2*W_e1; W_e2 = W_w1*W_e1 + W_w2*W_e2; W_e3 = W_w1*W_e2 + W_w2*W_e3; W_e4 = W_w1*W_e3 + W_w2*W_e4; W_e5 = W_w1*W_e4 + W_w2*W_e5; W_e6 = W_w1*W_e5 + W_w2*W_e6; W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3; if (W_t3>=-50) W_trig=W_psel; if (W_t3<-50) W_trig=W_pbuy; W_Buffer0=W_t3; W_Buffer1=W_trig; } if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1); ArrayResize(R_t3, R_LoopBegin); if (R_ft) { R_b2=R_b*R_b; R_b3=R_b2*R_b; R_c1=-R_b3; R_c2=(3*(R_b2+R_b3)); R_c3=-3*(2*R_b2+R_b+R_b3); R_c4=(1+3*R_b+R_b3+3*R_b2); R_n=R_t3_period; if (R_n<1) R_n=1; R_n=1+0.5*(R_n-1); R_w1=2/(R_n+1); R_w2=1-R_w1; R_ft=False; } for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) { R_e1=R_w1*Close[R_shift]+R_w2*R_e1; R_e2=R_w1*R_e1+R_w2*R_e2; R_e3=R_w1*R_e2+R_w2*R_e3; R_e4=R_w1*R_e3+R_w2*R_e4; R_e5=R_w1*R_e4+R_w2*R_e5; R_e6=R_w1*R_e5+R_w2*R_e6; R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3; if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0; if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0; } if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1); for (int cnt=0;cnt<=R_LoopBegin;cnt++) { if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0; if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0; } if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1; else R_LoopBegin=R_mBar; R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1); for (cnt=0;cnt<=R_LoopBegin;cnt++) { if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0; if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0; } 它结合了来自t3平滑wpr和简单t3的信号。 但最后一部分是从未来到过去的(类似于sidus和太阳风),所以我在使用它时要小心。 vozduh92go 2014.06.14 14:18 #2917 你好,亲爱的姆拉登。有可能做阶梯马吧? Mladen Rakic 2014.06.14 15:17 #2918 Air92: 你好,亲爱的Mladen。有可能让步马的条形图吗? 你的意思是,根据阶梯马的颜色而着色的条? vozduh92go 2014.06.14 15:31 #2919 mladen: 你的意思是根据阶梯马的颜色来确定条形的颜色? 是的,你是对的。 Mladen Rakic 2014.06.14 16:16 #2920 Air92: 是的,你是对的。 空气92 在这里发布了一个版本:https://www.mql5.com/en/forum/173044/page12 1...285286287288289290291292293294295296297298299...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
尊敬的MLADEN先生,我一直找不到一个简单地绘制前一天的高低点的指标,不包括星期天。我一直在使用附件中的指标,希望能对其进行修改,以排除周日的数据。提前感谢您的帮助。
Daytrade5
这应该就是了。试试吧:prevday_hilo_no_sunday.mq4
daytrade5 这应该就是了。试试吧 :prevday_hilo_no_sunday.mq4
姆拉登。
这绝对是完美的。非常感谢你的帮助。
你好。
我知道这有点模糊,但这是否对EA的功能 有任何重大影响,如果是,我需要寻找什么来纠正它? 问题是36个 "仅通过引用传递的数组 "的警告,在新的MT4中,数组必须以某种方式处理。谢谢你对这个问题的任何见解
嗨,我知道这有点模糊,但是这对EA的功能有什么影响吗,如果有,我需要寻找什么来纠正它? 这个问题是36个 "仅通过引用传递的数组 "的警告,在新的MT4中,是否有一定的方式来处理数组。谢谢你对这个问题的任何见解
cja
它应该不会影响到它,因为编译器应该自动转换它。
为了避免这个警告,只需在函数 声明中的数组类型声明后加上"&"(所以用 "void example(double arrayPassedByReference[]) "代替 "void example(double& arrayPassedByReference[])")。
亲爱的Mladen和任何人。
你知道下面的代码是如何创建买入-卖出信号 的吗?它说''系列数组,包含每个条形的开盘-收盘-最高-最低价格'''创建的指标曲线:执行DRAW_HISTOGRAM类型的曲线''就我看来,它并不重绘。
谢谢。
double W_Buffer1[];
double R_Buffer0[];
double R_Buffer1[];
double S_Buffer0[];
double S_Buffer1[];
double E_Buffer0[];
double E_Buffer1[];
int R_t3_period=21;
double R_b=0.8;
extern int R_mBar=0;
double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3;
double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy;
bool R_ft=True;
double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3;
double R_t3[];
int R_LoopBegin, R_shift;
int init()
{
//---- indicators
SetIndexStyle (0,DRAW_NONE);
SetIndexBuffer (0,W_Buffer0);
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexStyle (1,DRAW_NONE);
SetIndexBuffer (1,W_Buffer1);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexStyle (2,DRAW_NONE);
SetIndexBuffer (2,R_Buffer0);
SetIndexEmptyValue(2,EMPTY_VALUE);
SetIndexStyle (3,DRAW_NONE);
SetIndexBuffer (3,R_Buffer1);
SetIndexEmptyValue(3,EMPTY_VALUE);
SetIndexStyle (4,DRAW_ARROW,EMPTY,2);
SetIndexArrow (4,241);
SetIndexBuffer (4,S_Buffer0);
SetIndexEmptyValue(4,EMPTY_VALUE);
SetIndexStyle (5,DRAW_ARROW,EMPTY,2);
SetIndexArrow (5,242);
SetIndexBuffer (5,S_Buffer1);
SetIndexEmptyValue(5,EMPTY_VALUE);
SetIndexStyle (6,DRAW_ARROW,EMPTY,2);
SetIndexArrow (6,251);
SetIndexBuffer (6,E_Buffer0);
SetIndexEmptyValue(6,EMPTY_VALUE);
SetIndexStyle (7,DRAW_ARROW,EMPTY,2);
SetIndexArrow (7,251);
SetIndexBuffer (7,E_Buffer1);
SetIndexEmptyValue(7,EMPTY_VALUE);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
W_t3_period=8;
W_b=0.8;
W_per=21;
W_psel=-30;
W_pbuy=-70;
W_b2=W_b*W_b;
W_b3=W_b2*W_b;
W_c1=-W_b3;
W_c2=(3*(W_b2+W_b3));
W_c3=-3*(2*W_b2+W_b+W_b3);
W_c4=(1+3*W_b+W_b3+3*W_b2);
W_n=W_t3_period;
if (W_n<1) W_n=1;
W_n = 1 + 0.5*(W_n-1);
W_w1 = 2 / (W_n + 1);
W_w2 = 1 - W_w1;
if (R_mBar==0) R_LoopBegin=Bars;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars);
for(int i=0; i<R_LoopBegin; i++)
{
W_wpr=iWPR(NULL,0,W_per,i);
W_e1 = W_w1*W_wpr + W_w2*W_e1;
W_e2 = W_w1*W_e1 + W_w2*W_e2;
W_e3 = W_w1*W_e2 + W_w2*W_e3;
W_e4 = W_w1*W_e3 + W_w2*W_e4;
W_e5 = W_w1*W_e4 + W_w2*W_e5;
W_e6 = W_w1*W_e5 + W_w2*W_e6;
W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3;
if (W_t3>=-50) W_trig=W_psel;
if (W_t3<-50) W_trig=W_pbuy;
W_Buffer0=W_t3;
W_Buffer1=W_trig;
}
if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);
ArrayResize(R_t3, R_LoopBegin);
if (R_ft) {
R_b2=R_b*R_b;
R_b3=R_b2*R_b;
R_c1=-R_b3;
R_c2=(3*(R_b2+R_b3));
R_c3=-3*(2*R_b2+R_b+R_b3);
R_c4=(1+3*R_b+R_b3+3*R_b2);
R_n=R_t3_period;
if (R_n<1) R_n=1;
R_n=1+0.5*(R_n-1);
R_w1=2/(R_n+1);
R_w2=1-R_w1;
R_ft=False;
}
for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) {
R_e1=R_w1*Close[R_shift]+R_w2*R_e1;
R_e2=R_w1*R_e1+R_w2*R_e2;
R_e3=R_w1*R_e2+R_w2*R_e3;
R_e4=R_w1*R_e3+R_w2*R_e4;
R_e5=R_w1*R_e4+R_w2*R_e5;
R_e6=R_w1*R_e5+R_w2*R_e6;
R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3;
if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0;
if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0;
}
if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);
for (int cnt=0;cnt<=R_LoopBegin;cnt++)
{
if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0;
if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0;
}
if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);
for (cnt=0;cnt<=R_LoopBegin;cnt++)
{
if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0;
if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0;
}亲爱的Mladen和任何人。
你知道下面的代码是如何创建买入-卖出信号的吗?它说''系列数组,包含每个条形的开-收-高-低价格'''创建的指标曲线:执行DRAW_HISTOGRAM类型的曲线''就我看来,它并不'重绘。
谢谢。
double W_Buffer1[];
double R_Buffer0[];
double R_Buffer1[];
double S_Buffer0[];
double S_Buffer1[];
double E_Buffer0[];
double E_Buffer1[];
int R_t3_period=21;
double R_b=0.8;
extern int R_mBar=0;
double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3;
double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy;
bool R_ft=True;
double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3;
double R_t3[];
int R_LoopBegin, R_shift;
int init()
{
//---- indicators
SetIndexStyle (0,DRAW_NONE);
SetIndexBuffer (0,W_Buffer0);
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexStyle (1,DRAW_NONE);
SetIndexBuffer (1,W_Buffer1);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexStyle (2,DRAW_NONE);
SetIndexBuffer (2,R_Buffer0);
SetIndexEmptyValue(2,EMPTY_VALUE);
SetIndexStyle (3,DRAW_NONE);
SetIndexBuffer (3,R_Buffer1);
SetIndexEmptyValue(3,EMPTY_VALUE);
SetIndexStyle (4,DRAW_ARROW,EMPTY,2);
SetIndexArrow (4,241);
SetIndexBuffer (4,S_Buffer0);
SetIndexEmptyValue(4,EMPTY_VALUE);
SetIndexStyle (5,DRAW_ARROW,EMPTY,2);
SetIndexArrow (5,242);
SetIndexBuffer (5,S_Buffer1);
SetIndexEmptyValue(5,EMPTY_VALUE);
SetIndexStyle (6,DRAW_ARROW,EMPTY,2);
SetIndexArrow (6,251);
SetIndexBuffer (6,E_Buffer0);
SetIndexEmptyValue(6,EMPTY_VALUE);
SetIndexStyle (7,DRAW_ARROW,EMPTY,2);
SetIndexArrow (7,251);
SetIndexBuffer (7,E_Buffer1);
SetIndexEmptyValue(7,EMPTY_VALUE);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
W_t3_period=8;
W_b=0.8;
W_per=21;
W_psel=-30;
W_pbuy=-70;
W_b2=W_b*W_b;
W_b3=W_b2*W_b;
W_c1=-W_b3;
W_c2=(3*(W_b2+W_b3));
W_c3=-3*(2*W_b2+W_b+W_b3);
W_c4=(1+3*W_b+W_b3+3*W_b2);
W_n=W_t3_period;
if (W_n<1) W_n=1;
W_n = 1 + 0.5*(W_n-1);
W_w1 = 2 / (W_n + 1);
W_w2 = 1 - W_w1;
if (R_mBar==0) R_LoopBegin=Bars;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars);
for(int i=0; i<R_LoopBegin; i++)
{
W_wpr=iWPR(NULL,0,W_per,i);
W_e1 = W_w1*W_wpr + W_w2*W_e1;
W_e2 = W_w1*W_e1 + W_w2*W_e2;
W_e3 = W_w1*W_e2 + W_w2*W_e3;
W_e4 = W_w1*W_e3 + W_w2*W_e4;
W_e5 = W_w1*W_e4 + W_w2*W_e5;
W_e6 = W_w1*W_e5 + W_w2*W_e6;
W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3;
if (W_t3>=-50) W_trig=W_psel;
if (W_t3<-50) W_trig=W_pbuy;
W_Buffer0=W_t3;
W_Buffer1=W_trig;
}
if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);
ArrayResize(R_t3, R_LoopBegin);
if (R_ft) {
R_b2=R_b*R_b;
R_b3=R_b2*R_b;
R_c1=-R_b3;
R_c2=(3*(R_b2+R_b3));
R_c3=-3*(2*R_b2+R_b+R_b3);
R_c4=(1+3*R_b+R_b3+3*R_b2);
R_n=R_t3_period;
if (R_n<1) R_n=1;
R_n=1+0.5*(R_n-1);
R_w1=2/(R_n+1);
R_w2=1-R_w1;
R_ft=False;
}
for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) {
R_e1=R_w1*Close[R_shift]+R_w2*R_e1;
R_e2=R_w1*R_e1+R_w2*R_e2;
R_e3=R_w1*R_e2+R_w2*R_e3;
R_e4=R_w1*R_e3+R_w2*R_e4;
R_e5=R_w1*R_e4+R_w2*R_e5;
R_e6=R_w1*R_e5+R_w2*R_e6;
R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3;
if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0;
if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0;
}
if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);
for (int cnt=0;cnt<=R_LoopBegin;cnt++)
{
if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0;
if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0;
}
if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;
else R_LoopBegin=R_mBar;
R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);
for (cnt=0;cnt<=R_LoopBegin;cnt++)
{
if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0;
if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0;
}它结合了来自t3平滑wpr和简单t3的信号。
但最后一部分是从未来到过去的(类似于sidus和太阳风),所以我在使用它时要小心。
你好,亲爱的姆拉登。有可能做阶梯马吧?
你好,亲爱的Mladen。有可能让步马的条形图吗?
你的意思是,根据阶梯马的颜色而着色的条?
你的意思是根据阶梯马的颜色来确定条形的颜色?
是的,你是对的。
是的,你是对的。
空气92
在这里发布了一个版本:https://www.mql5.com/en/forum/173044/page12