问吧! - 页 32

 

戴夫。

不要那么容易放弃。如果我告诉你该怎么做,也许是错的,你永远也学不到正确的东西。

这是另一个尝试。

祝你好运。

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

{

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

}

 

我如何知道我的订单是否达到了止损点?

大家好

我正在编制一个使用跟踪止损的EA。问题是,当它击中止损点时,就会打开一个新的订单。因此,问题是,如何告诉EA,当一个订单触及止损,然后等待下一个条形图来决定是否要打开一个新订单?

 
 
iscuba11:
这里面的修改是在哪里进行的呢? 原来的止损是40,止盈是100。 作为睡眠模式的一部分,任何现有的未平仓订单 的止损将变为15,任何现有的未平仓订单 的获利将变为25。

开单票: 睡眠模式前。

睡眠模式前止损-40 睡眠模式前获利-100 睡眠模式后止损修改-15 睡眠模式后获利修改-25

我不是在初始化订单设置,我是在修改已经下达的、仍然有效的现有订单。

谢谢你的帮助! 为什么这么简单的事情看起来这么难?

戴夫<<

你如何定义你的睡眠模式?

只要在ordermodify()循环之前加上它就可以了。

就像...

if(sleepcome)

{

for(.....)

{

//delete my code gave you before or make it as comment

orderselect(.....);

.

.

.

}

}

这可能有帮助

 
AnasFX:
大家好,我正在编写一个使用跟踪止损的EA。问题是,当它击中止损点时,就会打开一个新的订单。因此,问题是,如何告诉EA,当一个订单触及止损时,等待下一个条形图来决定是否要打开一个新订单?

检查 交易历史,如果ordercloseprice()=orderstoploss(),那么它就会通过击中sl关闭。

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

 

止损的时间

phoenix:
检查交易历史,如果ordercloseprice()=orderstoploss(),那么它就会以击中止损点而关闭。

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

谢谢你的想法。我还想知道它的止损时间,以及这个时间是否在当前的时间段。我可能有很多止损点,但我想知道它是否在当前时间段 内达到止损点。我应该检查订单的收盘时间并与当前条形图的时间相比较吗?

 

在EA上显示买入和卖出

我想在我的EA运行时将箭头或文本对象或其他东西放在图表上,以显示它的行动,但这些对象似乎并没有出现。 有没有人有一个可以在图表上画画的EA例子?

另外,策略测试器有 一个按钮可以在测试运行后显示图表,但我没有看到箭头。 这是不是build 195的问题,因为我知道我过去在那里看到过它们。 我们怎样才能修改这些箭头对象? 我想让它们变大,但也不知道如何在测试器中进入图表。

我想这两个问题都是一样的:从EA中获得用户反馈。

 

我有一个正在调整的专家,我想避免在之前关闭的柱子非常长的情况下出现入市信号。(>30点)我添加了下面这句话作为条件,但它似乎没有被识别。我不是一个好的编码员,但有调整专家的运气,我正在边学边做。谁能告诉我,我应该在这里使用什么逻辑或短语?

在这一节下。

-----------------------------------

voidCheckForSignals(){

-----------------------------------

我包括了条件。

-----------------------------------

如果((Close[1])-(Open[1])<30){

buysig=true。

-----------------------------------

谢谢你的任何建议。

MJ

 
marketjouster:
我有一个正在调整的专家,想避免在之前收盘的柱子非常长的情况下出现进场信号。(>30点)我添加了下面这句话作为条件,但它似乎没有被识别。 我不是一个好的编码员,但有调整专家的运气,我正在边学边做。 谁能告诉我,我在这里应该使用什么逻辑或短语?

如果((Close[1])-(Open[1])<30) ...

MJ

MJ,

假设Close[1]是1.2835,Open[1]是1.2805(看涨股),差值是0.0030,所以对30的检查不起作用。此外,如果Close[1]在1.2805,而Open[1]在1.2835(看跌柱)呢?你会得到-0.0030。

所以首先你需要用Close[1]-Open[1]< (30*Point)来补救第一个问题,然后你要用MathAbs()函数 来得到减法的绝对值。

简而言之使用:如果MathAbs(Close[1]-Open[1])<(30*Point)....

HTH

亚尼斯

 

避免长条交易进入的 代码

Yannis:
MJ,

假设Close[1]是1.2835,Open[1]是1.2805(看涨柱),差值是0.0030,所以对30的检查是不可行的。此外,如果Close[1]在1.2805,而Open[1]在1.2835(看跌柱)呢?你会得到-0.0030。

所以首先你需要用Close[1]-Open[1]< (30*Point)来补救第一个问题,然后你要用MathAbs()函数来得到减法的绝对值。

简而言之使用:如果MathAbs(Close[1]-Open[1])<(30*Point)....

HTH

Yannis

非常感谢Yannis。 你的解释非常清楚,我很欣赏你把实际代码包括在内。 我可以提出一个后续问题吗? 如果我想在专家顾问的属性窗口中能够调整长条的点数,我可以使用。

extern int LBE=30; // LBE是 "长条输入"。 默认可以是30

在专家的标题部分,然后在你的代码行中使用LBE而不是30?

if MathAbs(Close[1]-Open[1])<(LBE*Point)

这将使我能够手动测试不同的点子设置,并在回测中优化它。

MJ

原因: