编码帮助 - 页 466

 

大家早上好。

我已经看过这个指标的很多版本,红色的蜡烛我从来没有出现过,可以纠正这个错误吗????。

非常感谢你。

#property indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 LimeGreen

#属性 indicator_color2 Red

//----指标缓冲区

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

//----

double CB = 0, valueh1 = 0, valuel = 0, valueh = 0, value = 0, price = 0, hi = 1, lo = 1;

双重resh = 0, resl = 0, deltah = 0, deltal = 0。

int CurrentBar=0;

//+------------------------------------------------------------------+

//|自定义指标初始化函数

//+------------------------------------------------------------------+

int init()

{

//---- 1个用于计数的额外缓冲区。

IndicatorBuffers(3)。

//---- 绘图设置

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3个指标缓冲区的映射

if(!SetIndexBuffer(0, ind_buffer1) &&)

!SetIndexBuffer(1, ind_buffer2) && !

!SetIndexBuffer(2, ind_buffer3))

Print("不能设置指标缓冲区!")。

//---- DataWindow和指标子窗口标签的名称

IndicatorShortName("DeltaForce")。

SetIndexLabel(0, "DF1")。

SetIndexLabel(1, "DF2");

//---- 初始化完成

返回(0)。

}

//+------------------------------------------------------------------+

//| 三角洲部队 |

//+------------------------------------------------------------------+

开始()

{

for(CB = 0 ; CB <= Bars ; CB++)

{

CurrentBar = Bars - CB;

如果(Close[CurrentBar] > Close[CurrentBar+1])

{

resl = 0。

如果(resh == 0)

deltah = 0。

deltah = deltah + (Close[CurrentBar] - Close[CurrentBar+1])。

// valueh = High[CurrentBar];

resh= 1;

}

如果(resh == 0)

deltah = 0。

ind_buffer1[CurrentBar] = deltah;

如果(Close[CurrentBar] < Close[CurrentBar+1] )

{

resh = 0。

if(resl == 0)

deltal = 0。

deltal = deltal + (Close[CurrentBar+1] - Close[CurrentBar])。

//valuel = Low[CurrentBar];

resl= 1;

}

如果(resl == 0 )

deltal=0。

ind_buffer2[CurrentBar] = deltal;

}

//---- done

return(0);

}

//+------------------------------------------------------------------+

 
rookiespain:
大家早上好。

我已经看过这个指标的很多版本,红色的蜡烛我从来没有出现过,能不能纠正一下这个错误????。

非常感谢你。

#property indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 LimeGreen

#属性 indicator_color2 Red

//---- 指标缓冲区

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

//----

double CB = 0, valueh1 = 0, valuel = 0, valueh = 0, value = 0, price = 0, hi = 1, lo = 1;

双重resh = 0, resl = 0, deltah = 0, deltal = 0。

int CurrentBar=0;

//+------------------------------------------------------------------+

//|自定义指标初始化函数

//+------------------------------------------------------------------+

int init()

{

//---- 1个用于计数的额外缓冲区。

IndicatorBuffers(3)。

//---- 绘图设置

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1);

SetIndexDrawBegin(0, 34);

SetIndexDrawBegin(1, 34);

//---- 3个指标缓冲区的映射

if(!SetIndexBuffer(0, ind_buffer1) &&)

!SetIndexBuffer(1, ind_buffer2) && !

!SetIndexBuffer(2, ind_buffer3))

Print("不能设置指标缓冲区!")。

//---- DataWindow和指标子窗口标签的名称

IndicatorShortName("DeltaForce")。

SetIndexLabel(0, "DF1")。

SetIndexLabel(1, "DF2");

//---- 初始化完成

返回(0)。

}

//+------------------------------------------------------------------+

//| 三角洲部队 |

//+------------------------------------------------------------------+

开始()

{

for(CB = 0 ; CB <= Bars ; CB++)

{

CurrentBar = Bars - CB;

如果(Close[CurrentBar] > Close[CurrentBar+1])

{

resl = 0。

如果(resh == 0)

deltah = 0。

deltah = deltah + (Close[CurrentBar] - Close[CurrentBar+1]) 。

// valueh = High[CurrentBar];

resh= 1;

}

如果(resh == 0)

deltah = 0。

ind_buffer1[CurrentBar] = deltah;

如果(Close[CurrentBar] < Close[CurrentBar+1] )

{

resh = 0。

if(resl == 0)

deltal = 0。

deltal = deltal + (Close[CurrentBar+1] - Close[CurrentBar])。

//valuel = Low[CurrentBar];

resl= 1;

}

如果(resl == 0 )

deltal=0。

ind_buffer2[CurrentBar] = deltal;

}

//---- done

return(0);

}

//+------------------------------------------------------------------+

现在就试试吧:_test.mq4

附加的文件:
_test.mq4  3 kb
test.gif  68 kb
 
Big Be:
斯坦威。

一张显示所有这些的照片会有帮助。

大贝

嗨,Big Be。

说得好,我明天会发几张图。

欢呼声,

斯坦

 

这里是我手动标记的澳元图表。 红框是重叠的条形图。 在左边,有一个正方形,里面只显示三个柱子,所以不符合定义。 但是,如果这条腿很重要,比如说大于6 X ATR,我也会把它们算作一个波段(只是只有三条杠的时候很难交易),但是我想这个要求会使编码复杂化,所以我们可以暂时不考虑它。

谢谢。

斯坦

附加的文件:
 

嗨,Mladen和Mrtools !

我再次需要你们的帮助,请问你们能不能给这个指标添加一个视觉/听觉警报?

谢谢您的帮助,谢谢!

附加的文件:
 

MLADEN,早上好。

非常感谢你,已经尝试了他们的_测试和正确的出现。

我在这里有任何帮助,虽然它的优势比我多得多,虽然在ProRealTime / VISUALCHART是的,我可以帮助更多。

最好的问候。

 

你好。

我有一个指标,我想限制条形计算

原来的代码是。

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);

它是正确的吗?该指标似乎工作正常,但我怀疑我是否真的限制了条形计算。

 
thefxpros:
你好。

我有一个指标,我想限制条形计算。

原来的代码是

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);[/CODE]

i changed it with this:

[CODE]int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(NBars-counted_bars,NBars-1);
这样做正确吗?该指标似乎运行良好,但我怀疑我是否真的限制了条形计算。

thefxpros

不,要这样做。

int limit = MathMin(MathMin(Bars-counted_bars,Bars-1), NBars)。

但在这种情况下,你必须确保NBars总是>0

 

你好mladen

如果你能帮助我,添加X和Y轴,那么我可以把它放在角落里,并可以调整字体大小。

并且可以调整字体大小,抱歉我的英语不好。

!X2014-PIPSv2

非常感谢。

附加的文件:
 
blueface:
你好,mladen

如果你能帮助我,添加X和Y轴,那么我就可以把它放在角落里了。

并可以调整字体大小,抱歉我的英语不好。

!X2014-PIPSv2

非常感谢。

蓝脸

你已经有了:代码中的posX和posY变量