买/卖EA和指标 - 页 4

 
cifox:
大师们好!......,你们能不能帮我做一个开放性买入或开放性卖出的EA,在一个时间段内。

我把你的帖子移到了这里。

从第一个帖子开始阅读这个主题,你会发现一些EA。

 

每天只开放一次买入和一次卖出!

嗨,伙计们。

我的EA有一个小问题。它是基于价格变动的,在一天内它开了不止一个头寸。我想限制这一点,但我不知道该怎么做。

我想做的事情是这样的。

如果在当天你已经开了一个买入头寸,就不要再开任何其他的买入头寸。但如果你发现卖出信号,就开一个卖出信号。在这种情况下,如果在这之后你发现了另一个卖出信号,就不要再开其他卖出头寸。

我不知道该怎么写,什么是正确的位置。你能帮助我吗?

非常感谢!!!。

问候。

Mauro

编辑。

在另一个话题中,我发现了这个代码,但我不知道在哪里以及如何附加它。

if(OrderSelect(1, SELECT_BY_POS)==true)

{

if(TimeToStr(OrderOpenTime(),TIME_DATE ) != TimeToStr(CurTime(),TIME_DATE ))

{

//open new order

}

}
 

在这个主题中,没有关于我正在寻找的东西。这个主题是关于在同一时间买入和卖出....。但我正在谈论的是,如果我已经开了一个买入订单,我的EA在白天没有开新的买入订单。同样的,如果它已经打开了一个卖单

但是,如果它开了一个买单,在白天它只能开一个卖单......遵循上面的规则。

举个例子。

时间是:今天

EA开了一个买入订单。

该仓位达到止盈或止损,因此被关闭。

现在,EA可以看到另一个买入信号,但看到它已经在之前的时间里开了一个买入订单,它没有开这个订单。

现在,EA看到一个卖出信号,看到它还没有开出卖出指令,它就开出一个卖出头寸。

该头寸达到了止盈或止损,所以它被关闭。

现在,EA可以看到另一个卖出信号,但看到它已经在之前的时间里打开了一个卖出订单,它没有打开这个订单。

这就是我在寻找的....。

 

在这种情况下,你需要这2条线程。

https://www.mql5.com/en/forum/176322

https://www.mql5.com/en/forum/173026

 

好的,谢谢你的回答,NewDigital。现在,我认为我的代码是这样的。

if (TimeDayOfYear(TimeCurrent())!=DayOfLastTrade)

{

ticket=OrderSend(....

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());

}

[/CODE]

So, can you check if I have added this code in the right way on my code?Here it is

[CODE]if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if (TimeDayOfYear(TimeCurrent())!=DayOfLastTrade)

{

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Buy Order", MagicNumber, 0, DodgerBlue);

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());

}

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

上面的代码只针对买入头寸,所以这样的话,它应该只开一个买入头寸。如果我对卖出的代码做同样的事情,它应该只开一个卖出头寸,对吗?

谢谢你的帮助。

毛罗

 

MMM...Metaeditor说有一个错误...

'\end_of_program' - unbalanced left parenthesis (259, 1)
 

这意味着,这个

{[/CODE]

and

[CODE]}

是不平衡的。

在代码中检查

对不起,我不是一个程序员,所以我帮不上什么忙。

 

嗨,newdigital...是的,我知道对于pharentesis....,但我已经检查了 所有的代码,pharentesis是平衡的...

mmm....,我不明白问题出在哪里....,不过,我会继续检查......我希望能找到一个解决方案!

谢谢大家...

Mauro

 

例如这个。

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());
 

调试MT4是一件很麻烦的事情,但如果你有耐心,你可以找出问题所在。

我想说的第一件事是,MT4告诉你问题出在哪里......其实并没有接下来我会做的是,在复杂的IF语句中,开始剪掉大块的代码,这很可能导致问题的出现。

例如,如果我有...

if(){

//second if

if(){

//third if

if(){

}

}

}

我会砍掉if的2和3,只留下if1。如果它能编译,你就缩小了问题范围。然后把2和3粘贴回来,再砍掉3,再测试。继续这样做几分钟,你最终会找到问题所在。

祝你好运。

璐璐