编码帮助 - 页 337

 
alpha24:
嗨,Mladen先生。

很久以来,我一直在请求您为MA上的布林带编码。和MA指标上的MA一样,在单独的窗口中。移动平均线没有必要在指标窗口中显示。BB带小数点偏差(0.01),EMA或SMA形式。请您像往常一样制作?

谢谢你

阿尔法24

你不需要一个新的指标

使用已经在独立窗口中的任何ma,然后只需将布林带 拖到该子窗口,并选择以前的指标数据作为价格字段。

 
mladen:
阿尔法24

你不需要一个新的指标

请使用任何指标...

是的,但问题是没有小数点偏差的选项,另外,如果我试图在同一个窗口中使用更多的指标,就会出现前一个数据和第一个数据混淆的情况。因此,请

 

你好。

我不清楚maillink.dll是否能在build>600时工作。

我试着用gmx和googlemail的maillink.dll,但我总是在MailInit(string,int,string,string)函数中得到"-2"

我在MailInit(string,int,string,string);函数 中总是得到"-2 "的反馈:-(

我还试过codersguru的xpMail.dll,但它让我的metatrader账户崩溃了,有没有人知道有其他办法可以从一个EA向两个不同的邮件地址发送邮件?

 
sunshineh:
你好。

我不清楚,maillink.dll是否能在build > 600的情况下工作。

我试着用gmx和googlemail的maillink.dll,我总是得到"-2"

我在MailInit(string,int,string,string);函数中总是得到"-2 "的结果:-(

我也试过来自codersguru的xpMail.dll,但它让我的metatrader账户崩溃了,有没有人知道有其他办法可以从一个EA向两个不同的邮件地址发送邮件?

字符串部分是问题所在。

旧的metatrader 4使用ANSI字符串。他们已经将其改为unicode字符串。Unicode字符串每个字符使用2个字节,而ANSI每个字符只使用1个字节。这就是为什么你有问题 - dlls得到的字符串对它们来说是不可读的。

 

请更正指标,你需要把箭头放在方块的位置。

附加的文件:
.........png  141 kb
.......png  30 kb
tro_bias_ez.ex4  12 kb
 
DMNIK:
请更正指标,你需要把箭头放在方块的地方。

杜明尼克

ex4文件不能被编辑和修改

 

谢谢你的清楚解释

如果我在调用dll中的函数 之前,将每个字符串都改为unicode,那么它应该可以工作?

是否已经有将ANSI改为unicode和将unicode改为ANSI的函数?

 

还是因为Unicode-string是在一个数组中,所以不能工作?

另一个问题。

我怎样才能在一行中播放更多不同的

PlaySound-wav文件?

我试着用Sleep(),但没有用 :-(

 
sunshineh:
还是因为Unicode-string是在一个数组中,所以不工作了呢?

另一个问题。

我怎样才能在一行中播放更多不同的

PlaySound-wav文件?

我试着用Sleep(),但它没有工作 :-(

sunshineh

逻辑上它们是一样的:字符数组。只是ANSI字符需要1个字节,而Unicode字符需要2个字节。这样做是为了包括所有的世界语言(当Unicode被发明的时候--与metatrader无关)。现在,如果dll期望的是ANSI,而得到的是unicode字符串,它将会被错误的解释(反之亦然)。如果你的dll使用的是dll,你必须将新的字符串转换为无符号字符的显式数组(使用StringToShortArray(),以便使它能被ANSI dll访问),而返回值应该使用CharArrayToString()转换为字符串(以便使它能被metatrader访问)

________________________

关于睡眠:睡眠()函数 在指标中是禁用的,它只在EA中工作。一直以来都是如此(这并不是新的metatrader的创新之处)。

另外,metatrader是在一个和平的代码中按顺序执行订单。这意味着你不能开始播放一个声音文件,然后在没有结束的情况下,继续播放另一个。另外,据我所知,他们限制了声音文件的时间长度(为了防止终端冻结--你可能已经注意到了,像警报和声音这样的东西是集中的--看看当不同的图表在同一时间发出警报--那是你看到的一个单一窗口)。

现在我可以继续说下去,但是metatrader的整个问题是他们没有正确解决异步程序的执行(实际上它不知道),这带来了很多限制。

 

检查 最后关闭的订单是否有利可图

你好。

我想检查我的最后三个卖出或买入交易是否盈利,并根据它改变一个字符串值。

我有这样的代码(MT4)。

for(int i=(OrdersHistoryTotal()-1);i>=0;i--);

{

OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==BUY)

{

//for buy order

if(OrderType()==OP_BUY && OrderProfit()>0) last=1;

if(OrderType()==OP_BUY && OrderProfit()<0) last=0;

}

}

for(int j=(OrdersHistoryTotal()-1);j>=0;j--);

{

OrderSelect(j, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==SELL)

{

//for sell order

if(OrderType()==OP_SELL && OrderProfit()>0) last2=1;

if(OrderType()==OP_SELL && OrderProfit()<0) last2=0;

}

}

但它对我不起作用。

我应该如何修改它?

谢谢你的帮助。