编码帮助 - 页 109

 

挂单 修改

大家好,我试图为挂单的价格修改编程。这是我的第一个EA之一。我想编写尽可能多的EA,这样我以后就可以编写复杂的EA。我的订单修改有一个问题,当我把它放到我的演示账户的图表中时,它就不工作了。有谁能发现错误并帮助我改正?谢谢。我真的没有更多的线索了。 谢谢

{ RefreshRates(); double ppoint=MarketInfo(OrderSymbol(), MODE_POINT); int total=OrdersTotal(); double pBid=MarketInfo(OrderSymbol(), MODE_BID); double pAsk=MarketInfo(OrderSymbol(), MODE_ASK); double priceNew; //---- for(int i=0; i50*ppoint) { priceNew=(pBid-50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } if (OrderType()==OP_SELLSTOP) { if (OrderOpenPrice()-pAsk>50*ppoint) { priceNew=(pAsk+50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } } }
 

嘿,罗伯特,感谢你到目前为止的帮助。我怎样才能在这里正确地发布代码?谢谢你,祝你好运。

 
fabian103:
嘿,罗伯特,感谢你到目前为止的帮助。我怎样才能正确地在这里发布代码?谢谢你,祝你好运。

fabian103

你应该在php代码框中做一个简单的复制和粘贴。

由于某些原因,你的代码是 "到处都是"。试试吧。如果不成功,请将你想修改的代码部分作为一个单独的文件附上(使用附件工具--图片上指出的那个)。

附加的文件:
attach.gif  36 kb
 

你好。

我一直想在随机指标内计算布林带 的值,但我一直没能做到这一点。

我得到的值是指货币对,但我需要的是应该在0到100之间的值。

有什么指示吗?

谢谢

 
metcalfe:
你好。

我一直想在随机指标里面计算布林带的值,但我一直没能做到这一点。

我得到的是指对的值,但我需要的是应该在0到100之间的值。

有什么指示吗?

谢谢

我想你是指计算随机指标的布林带(使用随机指标值而不是符号价格)。你不能用内置的iBands()做这个,因为它总是使用主图表价格。

你可以使用iBandsOnArray(),但是你有一个永恒的metatrader问题:偏差只能是整数乘法。你不能将偏差设置为小数值。因此,最好的办法是使用iStdDevOnArray()和iMaOnArry()函数来计算你自己的布林带的任何值和任何带宽。如果是随机指标,其代码会是这样的。

for(int i=limit; i>=0; i--) stoch = iStochastic(NULL,0,StochPeriod,1,StochSlowing,MODE_SMA,StochPrice,MODE_MAIN,i);

for( i=limit; i>=0; i--)

{

double dev = iStdDevOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollmi = iMAOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollup = bollmi+BollingerDeviations*dev;

bolldn = bollmi-BollingerDeviations*dev;

}

把指标本身也附上,这样你就可以继续试验。它在图表上看起来像这样。

____________________

PS:波段的数值可以超过0和100的界限(在随机指数在0或100附近徘徊的情况下),这取决于你对偏差使用的波段乘数以及布林带计算本身的长度。

附加的文件:
 
mladen:
我想你是指计算随机指数的布林带(使用随机指数值而不是符号价格)。你不能用内置的iBands()做这个,因为它总是使用主图表价格。

你可以使用iBandsOnArray(),但你有一个永恒的metatrader问题:偏差只能是整数乘法。你不能将偏差设置为小数值。因此,最好的办法是使用iStdDevOnArray()和iMaOnArry()函数来计算你自己的布林带的任何值和任何带宽。如果是随机指数,其代码看起来就像这样。

这是超级棒的!!!!!

非常感谢,我已经尝试了很久。

也感谢你的快速回复。

还有一个stuppi问题。

这个indi工作得很好,但我不能在ea上得到关于波段值的正确数字。

例如,在你所附的图片中,数字是81...67...54....。

 
metcalfe:
这真是太了不起了!!!!!

非常感谢,我已经努力了这么久。

也感谢你的超快回复。

还有一个问题。

该指数工作得非常好,但我无法在EA上获得关于波段值的正确数字。

例如,像你所附的图片中的数字81...67...54....。

:):)

那个例子中的随机 长度被设置为32。这是与默认参数相比的唯一区别。

 
mladen:
:):):) 该例子中的随机长度被设置为32。这是与默认参数相比的唯一区别

对不起,我没有很好地解释我想问的问题。

在我的EA中,我试图在图中的stoch窗口中获得例如上行或下行的数字。例如,我想在EA中获取81.8116的上行区间,我的代码为

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); /\renamed the indi

但我没有正确的数字。

我哪里错了?

谢谢

 
metcalfe:
对不起.我没有很好地解释我想问的问题。

在我的EA中,我试图在图中的stoch窗口中获得例如上行或下行的数字。例如,我想在EA中获取81.8116的上波段,我的代码为

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); /\renamed the indi

但我没有正确的数字。

我哪里错了?

谢谢

像这样做吧。

double upperBand = iCustom(NULL,0,"name",24,1,0,0);[/PHP]

The problem was that you can not put 0 in place of the slowing parameter since in that case metatrader will cause an error when calculating stochastic, and you will always get 0 as a return value, so use 1 instead (it is equivalent to no smoothing of the stochastic value). Also, better to use buffer numbers (MODE_MAIN is a reserved word in MQL - it 0 but in some cases they are not what you expect them to be). To get the rest of the values you would then have to write something similar to this :

[PHP]double middleBand = iCustom(NULL,0,"name",24,1,1,0);

double lowerBand = iCustom(NULL,0,"name",24,1,2,0);
 

好的...

超级感谢。

你救了我....