如何编码? - 页 44

 

尊敬的各位领导、各位来宾、各位朋友:大家好!欢迎大家来到我们的网站。

那么,我是否应该创建另一条SDL线,比如SDLL = long SDLS = short?

我认为我的说法是正确的,在SDL indi上

uptrend = buffer 1 & Index 1 color blue

dntrend = buffer 2 & Index 2 color Red

如果是这样,我应该把它们放在哪里?我是否把它们放在iCustom行的最后。

double SDL=iCustom(NULL,0, "Slope Direction Line",period,method,price,1,1,shift)。

或者我是不是偏离了轨道

 

语句。

double SDL=iCustom(NULL,0,"Slope Direction Line",period,method,price,1,shift);

使SDL保持第二个缓冲区(Uptrend)在给定的 "shift "bar的值。

(注意,你有一个重复的",1",这看起来像是一个打字错误。在任何情况下,它都不应该出现在那里)

所以,是的,如果你想同时读出Uptrend和Dntrend,那么你就需要两个变量来保存这些值。正如你所说,Uptrend是1,Dntrend是2。

 

再见,拉尔夫

谢谢你的帮助,现在我可以睡觉了。

欢呼声

贝诺

 
wolfe:
希望这就是你要找的东西。

它给我指出了正确的方向--谢谢你,真的很感谢。

我的新问题是,当我的if语句被调用时....

它根据前一个指标条的值与当前条的关系,发送一个我创建的Alert();...大约20次。

我怎样才能让它只发送一次呢?

我试着用变量创建了开/关开关--不幸的是在MQL4中不起作用。

然后我想到了定时器......如果有一个我可以创建的定时器,在20秒的时间内只发出一次警报,那也可以....。

但是,我不知道在MQL4中是否真的可以实现这个想法。

有什么想法吗?

 

换句话说...我需要一些方法来阻止它在第一次之后发出警报,因为目前它已经发出了多次警报(你可能猜到了,很烦人,而且没有必要)。

 
dharsant:
换句话说...我需要一些方法来阻止它在第一次之后发出警报,因为目前它已经发出了多次警报(你可能猜到了,很烦人,而且没有必要)。

你能提供一些代码来看看吗?

也许你可以设置一个布尔值的真/假,在第一次发送警报后被触发。

 

我不确定哪段代码会有意义。下面是我的警报的if语句。

"Code":

latestlatestmain = 我的指标上的2个柱子。

latestmain = 我的指标上的前一栏

如果(MainCCI > ErgoCCI){

{signal = "SHORT";

如果((latestlatestmain >= 0) && (latestmain < 0)) {

PlaySound("alert2.wav")。

}

}

如果(lastsignal != signal && alertTag!=Time[0]){

alertTag = Time[0];

lastsignal=signal。

}

}

如果(MainCCI < ErgoCCI){

{signal = "LONG";

如果((latestlatestmain 0)) {

PlaySound("alert2.wav")。

}

这是FX Sniper指标,当它符合我的参数 时,就会发出警报。

我如何设置一个布尔值的真/假?

我试着这样做.....

"带开关的代码":

如果(MainCCI > ErgoCCI){

{signal = "SHORT";

如果((latestlatestmain >= 0) && (latestmain < 0)) {

如果(onealert == 1) {

PlaySound("alert2.wav")。

onealert = 0;

}}

}

如果(lastsignal != signal && alertTag!=Time[0]){

alertTag = Time[0];

lastsignal=signal。

}

}

如果(MainCCI < ErgoCCI){

{signal = "LONG";

如果((latestlatestmain 0)) {

如果(onealert == 0) {

PlaySound("alert2.wav")。

onealert = 1;

}}

或一些变体,用变量来创建开/关。

我还可以用布尔值来做别的事情,是吗?有什么想法可以让我这样做吗?

目前,它在提醒我方面工作得很好,只是提醒了我大约5-6次。

感谢你的时间和帮助,伙计。

-尊敬的朋友

 

只是认为我已经解决了这个问题,而且Sleep(); 会起作用.... darn

 

我发现这个由Codersguru制作的。

void AlertOnce(string alert_msg, int ref)

{

if (ref > 10)

return;

ref--;

static int LastAlert[10];

if( LastAlert[ref] == 0 || LastAlert[ref] < Bars)

{

Alert(alert_msg);

LastAlert[ref] = Bars;

}

}

看起来像我所追求的!

在我的指标中使用这个方法时...

我是否只需将该函数 放在我的脚本中,然后使用

AlertOnce("Sniper going LONG",10);

来代替我的Alert(); ?

我觉得自己是个没有经验的小程序员。

 

明白了,谢谢你的帮助!!。