编码帮助 - 页 492

 

警惕性太高了 Re:编码帮助

嗨,大师,感谢你的伟大工作,我想与大家分享这个趋势线警报,当买入价穿过任何趋势线或你画的水平线 时,它会发出声音,我也把它修改为弹出警报,唯一的问题是,当价格(买入价)穿过一条线时,它都会发出警报,我试着把它修改为每个柱子只有一个警报,当它穿过线时,在它的末尾添加一个时间戳功能。如果你有时间的话,请看看它,并给我指出正确的方向,非常感谢!我尝试添加的代码是

static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

 
huang jin:
嗨,大师,感谢你的伟大工作,我想与大家分享这个趋势线警报,当买入价穿过任何趋势线或你画的水平线时,它就会发出声音,我也把它修改为弹出警报,唯一的问题是,当价格(买入价)穿过一条线时,它就会发出警报,我试图通过在它的末尾添加一个时间戳功能,把它修改为每个柱子只发一次警报。如果你有时间的话,请看看它,并给我指出正确的方向,非常感谢!我尝试添加的代码是
static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

你从来没有给Close_Time分配过一个值。只要你这样做,它就会在每个柱子上只发出一次警报。

 

@mladen 我在TradingView上发现了这个指标,有可能在mt4上制作这个指标吗?

以下是源代码。

//Created by user ChrisMoody 4-24-2014

//绘制大部分的移动平均线

//默认为当前图表的时间框架 ----- 但可以改变为更高或更低的时间框架

//第二条均线具有显示交叉点的功能。

study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)

//inputs

src = close

useCurrentRes = input(true, title="使用当前图表分辨率?")

resCustom = input(title="Use Different Timeframe?取消勾选上面的方框", type=resolution, defval="D")

len = input(20, title="移动平均线长度-回看期")

atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA" )

cc = input(true,title="基于方向的颜色变化?")

smoothe = input(2, minval=1, maxval=10, title="颜色平滑 - 1 = 无平滑")

doma2 = input(false, title="可选的第二条移动平均线")

len2 = input(50, title="移动平均线长度 - 可选的第二条MA")

atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA" )

cc2 = input(true,title="Change Color Based On Direction 2nd MA?")

warn = input(false,title="***你可以打开下面的显示点参数,而不需要绘制第二MA来查看交叉点***")

warn2 = input(false, title="***如果在不绘制第二MA的情况下使用交叉特征 - 确保第二MA参数设置正确***")

sd = input(false, title="在两个MA的交叉点上显示圆点")

res = useCurrentRes ? period : resCustom

//船体MA定义

hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))

//TEMA定义

ema1 = ema(src, len)

ema2 = ema(ema1, len)

ema3 = ema(ema2, len)

tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src, len) : tema

//第2个马--船体马的定义

hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2))

//第2个MA TEMA定义

sema1 = ema(src, len2)

sema2 = ema(sema1, len2)

sema3 = ema(sema2, len2)

stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src, len2) : tema

out = avg

out_two = avg2

out1 = security(tickerid, res, out)

out2 = security(tickerid, res, out_two)

ma_up = out1 >= out1[smoothe] 。

ma_down = out1 < out1[smoothe] 。

col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua

col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

circleYPosition = out2

plot(out1, title="多时间框架移动平均", style=line, lineewidth=4, color = col)

plot(doma2 and out2 ? out2 : na, title="第二次多时间框架移动平均", style=circles, lineewidth=4, color=col2)

plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, lineewidth=5, color=yellow)

 

指标的屏幕截图。

附加的文件:
pepqyie.png  84 kb
 

有没有从多个代码实例访问共享文件的例子?

 
apprentice coder:
有没有从多个代码实例中访问共享文件的例子?

你可以在这里看到一个例子:https://www.mql5.com/en/forum/175881/page5

 
mladen:
你可以在这里看到一个例子:https://www.mql5.com/en/forum/175881/page5

明白了

 

我想知道是否有任何EA使用指标"HalfTrend-1.02"?

我需要一些示例代码。

我曾尝试使用这个指标进行过滤,但我看到它错过了很多交易。

我不知道这有什么问题....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;
 
stevenpun:
我想知道是否有任何EA使用 "HalfTrend-1.02 "指标?

我需要一些示例代码。

我试着用这个indi进行过滤,但我看到它缺少很多交易。

我不知道这有什么问题....。

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;

你好,Stevenpun。

你可以立即尝试两件事。

1)添加打印 和评论来查看所有的数值......并确保你能正确获得所有的指标值......。

打印会出现在LOG中......而注释会显示在屏幕上,所以你可以立即看到它们。

2)最小化你的 "交易逻辑"......并测试每一个信号本身......。然后,如果它们起作用......开始把它们组合在一起。

如果它们不起作用...那么你就找到了问题所在。

你的 "嵌套的如果 "越少,就越容易在没有交易的情况下追踪到你的问题...。

另外......多个 "如果 "过滤掉大多数交易......所以即使工作良好......也可能没有很多交易。

希望这有帮助。

罗伯特

 

谢谢Mladen。

mladen:
..................,每个柱子只发出一次警报

这正是我想让它做的,见我提供的图片,价格每隔几个点就随线上下跳动,导致每次通过或触及线时,indi都会发出警报 .......... 我想让它做的是,如果该栏已经有一个警报,等待新栏通过该线时再发出警报。但我添加的代码使indi完全不起作用(没有Alert)。 你能不能再看看我做错了什么?