编码帮助 - 页 167 1...160161162163164165166167168169170171172173174...786 新评论 rpasupathy 2013.10.14 02:12 #1661 我想在下面的代码中使用 "CLOSE PRICE "而不是 "Median Price"....。请帮助。 非常感谢 int start() { double ClosePrice=Close[0]; int limit, i, flag, flagh, trend[5000]; double up[5000], dn[5000], medianPrice, atr; int counted_bars = IndicatorCounted()。 //----,检查可能的错误 if(counted_bars < 0) return(-1); //---- 最后一个被计算的柱子将被重新计算 如果(counted_bars > 0) counted_bars--; limit=Bars-1-counted_bars。 //打印(limit)。 //---- for (i = Bars; i >= 1; i--) { TrendUp = EMPTY_VALUE; TrendDown = EMPTY_VALUE; atr = iATR(NULL, 0, Nbr_Periods, i)。 //打印("ATR: "+ATR)。 medianPrice = (High+Low)/2; //打印("medianPrice: "+medianPrice)。 up=medianPrice+(Multiplier*atr); //打印("涨:"+涨)。 dn=中位数价格-(乘数*atr)。 //打印("dn: "+dn)。 trend=1。 如果(Close>up) { trend=1。 如果(trend == -1) changeOfTrend = 1; //Print("trend: "+trend); } 否则如果(Close<dn) { trend=-1。 如果(trend == 1) changeOfTrend = 1; //打印("trend: "+trend)。 } 否则如果(trend==1) { trend=1。 changeOfTrend = 0。 } 否则,如果(trend==-1) { trend=-1。 changeOfTrend = 0。 } 如果(trend0) { flag=1。 //打印("flag: "+flag)。 } 否则 { flag=0。 //打印("flagh: "+flag)。 } 如果(趋势>0 &&趋势<0) { flagh=1。 //打印("flagh: "+flagh); } 否则 { flagh=0; //打印("flagh: "+flagh); } 如果(trend>0 && dn<dn) dn=dn。 如果(trendup) up=up。 如果(flag==1) up=medianPrice+(Multiplier*atr)。 如果(flagh==1) dn=medianPric-(Multiplier*atr)。 //-- 绘制指标 如果(trend==1) { TrendUp=dn。 如果(changeOfTrend ==1) { TrendUp = TrendDown; changeOfTrend = 0; } } 否则,如果(趋势==-1) { TrendDown=up。 如果(changeOfTrend == 1) { TrendDown = TrendUp; changeOfTrend = 0; } } 如果(trend==1 && trend==-1) { UpBuffer = iLow(Symbol(),0,i)-(3*Point); DnBuffer = EMPTY_VALUE。 } 如果(trend==-1 && trend==1) { UpBuffer = EMPTY_VALUE。 DnBuffer = iHigh(Symbol(),0,i)+(3*Point); } } WindowRedraw()。 //---- return(0); } Coding help I want to use Indicators: Non Repainting Supertrend Mladen Rakic 2013.10.14 04:37 #1662 rpasupathy: 我想在下面的代码中使用 "CLOSE PRICE "而不是中间价....。请帮助。 非常感谢 int start() { double ClosePrice=Close[0]; int limit, i, flag, flagh, trend[5000]; double up[5000], dn[5000], medianPrice, atr; int counted_bars = IndicatorCounted()。 //----,检查可能的错误 if(counted_bars < 0) return(-1); //---- 最后一个被计算的柱子将被重新计算 如果(counted_bars > 0) counted_bars--; limit=Bars-1-counted_bars。 //打印(limit)。 //---- for (i = Bars; i >= 1; i--) { TrendUp = EMPTY_VALUE; TrendDown = EMPTY_VALUE; atr = iATR(NULL, 0, Nbr_Periods, i)。 //打印("ATR: "+ATR)。 medianPrice = (High+Low)/2; //打印("medianPrice: "+medianPrice)。 up=medianPrice+(Multiplier*atr); //打印("涨:"+涨)。 dn=中位数价格-(乘数*atr)。 //打印("dn: "+dn)。 trend=1。 如果(Close>up) { trend=1。 如果(trend == -1) changeOfTrend = 1; //Print("trend: "+trend); } 否则如果(Close<dn) { trend=-1。 如果(trend == 1) changeOfTrend = 1; //打印("trend: "+trend)。 } 否则如果(trend==1) { trend=1。 changeOfTrend = 0。 } 否则,如果(trend==-1) { trend=-1。 changeOfTrend = 0。 } 如果(trend0) { flag=1。 //打印("flag: "+flag)。 } 否则 { flag=0。 //打印("flagh: "+flag)。 } 如果(趋势>0 &&趋势<0) { flagh=1。 //打印("flagh: "+flagh)。 } 否则 { flagh=0; //打印("flagh: "+flagh); } 如果(trend>0 && dn<dn) dn=dn。 如果(trendup) up=up。 如果(flag==1) up=medianPrice+(Multiplier*atr)。 如果(flagh==1) dn=medianPric-(Multiplier*atr)。 //-- 绘制指标 如果(trend==1) { TrendUp=dn。 如果(changeOfTrend ==1) { TrendUp = TrendDown; changeOfTrend = 0; } } 否则,如果(趋势==-1) { TrendDown=up。 如果(changeOfTrend == 1) { TrendDown=TrendUp。 changeOfTrend = 0; } } 如果(trend==1 && trend==-1) { UpBuffer = iLow(Symbol(),0,i)-(3*Point); DnBuffer = EMPTY_VALUE。 } 如果(trend==-1 && trend==1) { UpBuffer = EMPTY_VALUE。 DnBuffer = iHigh(Symbol(),0,i)+(3*Point); } } WindowRedraw()。 //---- return(0)。 } 你可以替换: (High+Low)/2 与 收盘价 manone 2013.10.14 07:31 #1663 mladen: 肯瓦你所说的自动检查符号功能是什么?该代码中没有这样的内容 你所要做的就是在适当的参数字段中输入符号,它就会起作用(对任何符号,只要符号名称正确)使用 fareastol 提供的指标,因为它能做到你所说的所有需要。 嗨,mladen。 我在里面看到这些。 if (ForSymbol1=="") ForSymbol1 = Symbol(); if (ForSymbol2=="") ForSymbol2 = Symbol(); 如果(ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol(); 如果(ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol(); 如果(ForSymbolSyn3c=="")ForSymbolSyn3c = Symbol()。 一些部分。 void checkSymbol(int limit, string ForSymbol, double& buffer[]) { limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period() )。 for (int i=limit; i>=0; i--) { int y = iBarShift(ForSymbol,timeFrame,Time); buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y)。 } } 我不能确切地知道它在做什么,因为我的能力不能知道它的确切目的,但从我的原始猜测来看,似乎代码是自动检测我们外部输入的符号,然后显示在图表上,如果没有输入,将显示本地空图。然后我想,如果我故意把几个外部输入字符串留成空白(在那里什么都不填),指标会重复(至少是叠加)显示几次本地空图吗?我不知道该怎么做,但我试过了,是像附件中的方法那样做(使外部输入符号功能/识别 不敏感)? 顺便问一下,为什么我在第166页#1660之前做的版本,在现场还是会重绘? 是什么基本原因导致这种重绘?谢谢你的建议。 附加的文件: cci_averaged_correct_-_mtf_and_multi_symbol__syn_test_version_only.mq4 5 kb Coding help 多时间框架指标 Indicator getting data for Mladen Rakic 2013.10.14 07:58 #1664 kenwa: 嗨 mladen,我在里面看到这些。 if (ForSymbol1=="") ForSymbol1 = Symbol(); 如果 (ForSymbol2=="") ForSymbol2 = Symbol(); 如果(ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol(); 如果(ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol(); 如果(ForSymbolSyn3c=="")ForSymbolSyn3c = Symbol()。 一些部分。 void checkSymbol(int limit, string ForSymbol, double& buffer[]) { limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period() )。 for (int i=limit; i>=0; i--) { int y = iBarShift(ForSymbol,timeFrame,Time); buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y)。 } } 我不能确切地知道它在做什么,因为我的能力不能知道它的确切目的,但从我的原始猜测来看,似乎代码是自动检测我们外部输入的符号,然后显示在图表上,如果没有输入,将显示本地空图。然后我想,如果我故意把几个外部输入字符串留成空白(在那里什么都不填),指标是否会重复(至少叠加)显示几次本地空图?我不知道该怎么做,但我尝试了一下,是不是像附件中的方法一样(使外部输入符号功能/识别不敏感)? 或者如何修改为内部预设符号? 顺便问一下,为什么我在第166页#1660之前做的版本,在现场还是会重绘? 是什么基本原因导致这种重绘?谢谢你的建议。 你可以查看这个帖子中的指标:https://www.mql5.com/en/forum/178416/page19,看看如何做一些额外的控制。 manone 2013.10.14 08:46 #1665 对于#1664,在阅读和下载之前,我不能适应这些代码,对我来说太先进和复杂。 Mladen Rakic 2013.10.14 10:11 #1666 kenwa: 对于#1664,在阅读和下载之前,我无法适应这些代码,对我来说太先进和复杂了。 不是所有的东西都可以用两行来写。在某些情况下,这是不可能的 Mladen Rakic 2013.10.14 11:05 #1667 fareastol: 嗨,Mladen与我要求根据给定的市场情况计算目标波段的POC和VA有关,我已经尽可能地努力了。不幸的是,我只获得了POC值。获得VA高/低值超出了我目前的能力。 此外,在本周开始时,原始指标Level Sensor的代码似乎有错误,导致显示很糟糕,你可以在附图中看到。我不明白是什么原因,只是猜测这与MT4默认显示和较低时间框架(<W1)的数据之间的冲突有关。 请看一下并给我建议,以便继续前进。 深表感谢。 冯小刚 冯先生 屏幕上出现这种情况是因为图表上上周五的数据和第一个周日或周一的数据之间有一个时间差,当xshift时间被添加到线的时间中。 一个可能的解决方案是这个版本的解决方案:反转显示,而不是从右到左显示,而是从左到右显示(像图片上那样)。到目前为止,还没有找到从右到左显示的解决方案。 附加的文件: display.gif 40 kb level_sensor_test_7.01.mq4 4 kb Mladen Rakic 2013.10.14 11:20 #1668 有时只需要想一想(当我完成上一篇文章时,这个想法就出现了 )。 这是 "从右到左 "的解决方案(就我的测试而言,它现在工作得很好)。 附加的文件: level_sensor_test_7.02.mq4 4 kb right_to_left.gif 40 kb sunshineh 2013.10.14 11:50 #1669 你好。 我已经 "手工 "计算了标准偏差 线。 现在我想画一个通道,就像metatrader的原始偏差通道一样。 但我不知道如何计算系数=0.618到我的正常偏差线,以便它能像原始通道一样工作 ...OBJPROP_DEVIATION,0.618) fareastol 2013.10.14 11:56 #1670 嗨,姆拉登。 你提醒了我很多有意义的事情,也激励了我很多。 感谢所有 尊敬的先生 1...160161162163164165166167168169170171172173174...786 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我想在下面的代码中使用 "CLOSE PRICE "而不是 "Median Price"....。请帮助。
非常感谢
int start()
{
double ClosePrice=Close[0];
int limit, i, flag, flagh, trend[5000];
double up[5000], dn[5000], medianPrice, atr;
int counted_bars = IndicatorCounted()。
//----,检查可能的错误
if(counted_bars < 0) return(-1);
//---- 最后一个被计算的柱子将被重新计算
如果(counted_bars > 0) counted_bars--;
limit=Bars-1-counted_bars。
//打印(limit)。
//----
for (i = Bars; i >= 1; i--) {
TrendUp = EMPTY_VALUE;
TrendDown = EMPTY_VALUE;
atr = iATR(NULL, 0, Nbr_Periods, i)。
//打印("ATR: "+ATR)。
medianPrice = (High+Low)/2;
//打印("medianPrice: "+medianPrice)。
up=medianPrice+(Multiplier*atr);
//打印("涨:"+涨)。
dn=中位数价格-(乘数*atr)。
//打印("dn: "+dn)。
trend=1。
如果(Close>up) {
trend=1。
如果(trend == -1) changeOfTrend = 1;
//Print("trend: "+trend);
}
否则如果(Close<dn) {
trend=-1。
如果(trend == 1) changeOfTrend = 1;
//打印("trend: "+trend)。
}
否则如果(trend==1) {
trend=1。
changeOfTrend = 0。
}
否则,如果(trend==-1) {
trend=-1。
changeOfTrend = 0。
}
如果(trend0) {
flag=1。
//打印("flag: "+flag)。
}
否则 {
flag=0。
//打印("flagh: "+flag)。
}
如果(趋势>0 &&趋势<0) {
flagh=1。
//打印("flagh: "+flagh);
}
否则 {
flagh=0;
//打印("flagh: "+flagh);
}
如果(trend>0 && dn<dn)
dn=dn。
如果(trendup)
up=up。
如果(flag==1)
up=medianPrice+(Multiplier*atr)。
如果(flagh==1)
dn=medianPric-(Multiplier*atr)。
//-- 绘制指标
如果(trend==1) {
TrendUp=dn。
如果(changeOfTrend ==1) {
TrendUp = TrendDown;
changeOfTrend = 0;
}
}
否则,如果(趋势==-1) {
TrendDown=up。
如果(changeOfTrend == 1) {
TrendDown = TrendUp;
changeOfTrend = 0;
}
}
如果(trend==1 && trend==-1) {
UpBuffer = iLow(Symbol(),0,i)-(3*Point);
DnBuffer = EMPTY_VALUE。
}
如果(trend==-1 && trend==1) {
UpBuffer = EMPTY_VALUE。
DnBuffer = iHigh(Symbol(),0,i)+(3*Point);
}
}
WindowRedraw()。
//----
return(0);
}
我想在下面的代码中使用 "CLOSE PRICE "而不是中间价....。请帮助。
非常感谢
int start()
{
double ClosePrice=Close[0];
int limit, i, flag, flagh, trend[5000];
double up[5000], dn[5000], medianPrice, atr;
int counted_bars = IndicatorCounted()。
//----,检查可能的错误
if(counted_bars < 0) return(-1);
//---- 最后一个被计算的柱子将被重新计算
如果(counted_bars > 0) counted_bars--;
limit=Bars-1-counted_bars。
//打印(limit)。
//----
for (i = Bars; i >= 1; i--) {
TrendUp = EMPTY_VALUE;
TrendDown = EMPTY_VALUE;
atr = iATR(NULL, 0, Nbr_Periods, i)。
//打印("ATR: "+ATR)。
medianPrice = (High+Low)/2;
//打印("medianPrice: "+medianPrice)。
up=medianPrice+(Multiplier*atr);
//打印("涨:"+涨)。
dn=中位数价格-(乘数*atr)。
//打印("dn: "+dn)。
trend=1。
如果(Close>up) {
trend=1。
如果(trend == -1) changeOfTrend = 1;
//Print("trend: "+trend);
}
否则如果(Close<dn) {
trend=-1。
如果(trend == 1) changeOfTrend = 1;
//打印("trend: "+trend)。
}
否则如果(trend==1) {
trend=1。
changeOfTrend = 0。
}
否则,如果(trend==-1) {
trend=-1。
changeOfTrend = 0。
}
如果(trend0) {
flag=1。
//打印("flag: "+flag)。
}
否则 {
flag=0。
//打印("flagh: "+flag)。
}
如果(趋势>0 &&趋势<0) {
flagh=1。
//打印("flagh: "+flagh)。
}
否则 {
flagh=0;
//打印("flagh: "+flagh);
}
如果(trend>0 && dn<dn)
dn=dn。
如果(trendup)
up=up。
如果(flag==1)
up=medianPrice+(Multiplier*atr)。
如果(flagh==1)
dn=medianPric-(Multiplier*atr)。
//-- 绘制指标
如果(trend==1) {
TrendUp=dn。
如果(changeOfTrend ==1) {
TrendUp = TrendDown;
changeOfTrend = 0;
}
}
否则,如果(趋势==-1) {
TrendDown=up。
如果(changeOfTrend == 1) {
TrendDown=TrendUp。
changeOfTrend = 0;
}
}
如果(trend==1 && trend==-1) {
UpBuffer = iLow(Symbol(),0,i)-(3*Point);
DnBuffer = EMPTY_VALUE。
}
如果(trend==-1 && trend==1) {
UpBuffer = EMPTY_VALUE。
DnBuffer = iHigh(Symbol(),0,i)+(3*Point);
}
}
WindowRedraw()。
//----
return(0)。
}你可以替换:
(High+Low)/2
与
收盘价
肯瓦
你所说的自动检查符号功能是什么?该代码中没有这样的内容
你所要做的就是在适当的参数字段中输入符号,它就会起作用(对任何符号,只要符号名称正确)使用 fareastol 提供的指标,因为它能做到你所说的所有需要。嗨,mladen。
我在里面看到这些。
if (ForSymbol1=="") ForSymbol1 = Symbol();
if (ForSymbol2=="") ForSymbol2 = Symbol();
如果(ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();
如果(ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();
如果(ForSymbolSyn3c=="")ForSymbolSyn3c = Symbol()。
一些部分。
void checkSymbol(int limit, string ForSymbol, double& buffer[])
{
limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period() )。
for (int i=limit; i>=0; i--)
{
int y = iBarShift(ForSymbol,timeFrame,Time);
buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y)。
}
}
我不能确切地知道它在做什么,因为我的能力不能知道它的确切目的,但从我的原始猜测来看,似乎代码是自动检测我们外部输入的符号,然后显示在图表上,如果没有输入,将显示本地空图。然后我想,如果我故意把几个外部输入字符串留成空白(在那里什么都不填),指标会重复(至少是叠加)显示几次本地空图吗?我不知道该怎么做,但我试过了,是像附件中的方法那样做(使外部输入符号功能/识别 不敏感)?
顺便问一下,为什么我在第166页#1660之前做的版本,在现场还是会重绘? 是什么基本原因导致这种重绘?谢谢你的建议。
嗨 mladen,
我在里面看到这些。
if (ForSymbol1=="") ForSymbol1 = Symbol();
如果 (ForSymbol2=="") ForSymbol2 = Symbol();
如果(ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();
如果(ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();
如果(ForSymbolSyn3c=="")ForSymbolSyn3c = Symbol()。
一些部分。
void checkSymbol(int limit, string ForSymbol, double& buffer[])
{
limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period() )。
for (int i=limit; i>=0; i--)
{
int y = iBarShift(ForSymbol,timeFrame,Time);
buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y)。
}
}
我不能确切地知道它在做什么,因为我的能力不能知道它的确切目的,但从我的原始猜测来看,似乎代码是自动检测我们外部输入的符号,然后显示在图表上,如果没有输入,将显示本地空图。然后我想,如果我故意把几个外部输入字符串留成空白(在那里什么都不填),指标是否会重复(至少叠加)显示几次本地空图?我不知道该怎么做,但我尝试了一下,是不是像附件中的方法一样(使外部输入符号功能/识别不敏感)? 或者如何修改为内部预设符号?
顺便问一下,为什么我在第166页#1660之前做的版本,在现场还是会重绘? 是什么基本原因导致这种重绘?谢谢你的建议。你可以查看这个帖子中的指标:https://www.mql5.com/en/forum/178416/page19,看看如何做一些额外的控制。
对于#1664,在阅读和下载之前,我不能适应这些代码,对我来说太先进和复杂。
对于#1664,在阅读和下载之前,我无法适应这些代码,对我来说太先进和复杂了。
不是所有的东西都可以用两行来写。在某些情况下,这是不可能的
嗨,Mladen
与我要求根据给定的市场情况计算目标波段的POC和VA有关,我已经尽可能地努力了。不幸的是,我只获得了POC值。获得VA高/低值超出了我目前的能力。
此外,在本周开始时,原始指标Level Sensor的代码似乎有错误,导致显示很糟糕,你可以在附图中看到。我不明白是什么原因,只是猜测这与MT4默认显示和较低时间框架(<W1)的数据之间的冲突有关。
请看一下并给我建议,以便继续前进。
深表感谢。
冯小刚冯先生
屏幕上出现这种情况是因为图表上上周五的数据和第一个周日或周一的数据之间有一个时间差,当xshift时间被添加到线的时间中。
一个可能的解决方案是这个版本的解决方案:反转显示,而不是从右到左显示,而是从左到右显示(像图片上那样)。到目前为止,还没有找到从右到左显示的解决方案。
有时只需要想一想(当我完成上一篇文章时,这个想法就出现了 )。
这是 "从右到左 "的解决方案(就我的测试而言,它现在工作得很好)。
你好。
我已经 "手工 "计算了标准偏差 线。
现在我想画一个通道,就像metatrader的原始偏差通道一样。
但我不知道如何计算系数=0.618到我的正常偏差线,以便它能像原始通道一样工作 ...OBJPROP_DEVIATION,0.618)
嗨,姆拉登。
你提醒了我很多有意义的事情,也激励了我很多。
感谢所有
尊敬的先生