买/卖EA和指标 - 页 4 1234567891011...13 新评论 Sergey Golubev 2008.06.16 17:28 #31 cifox: 大师们好!......,你们能不能帮我做一个开放性买入或开放性卖出的EA,在一个时间段内。 我把你的帖子移到了这里。 从第一个帖子开始阅读这个主题,你会发现一些EA。 [删除] 2008.06.19 07:08 #32 每天只开放一次买入和一次卖出! 嗨,伙计们。 我的EA有一个小问题。它是基于价格变动的,在一天内它开了不止一个头寸。我想限制这一点,但我不知道该怎么做。 我想做的事情是这样的。 如果在当天你已经开了一个买入头寸,就不要再开任何其他的买入头寸。但如果你发现卖出信号,就开一个卖出信号。在这种情况下,如果在这之后你发现了另一个卖出信号,就不要再开其他卖出头寸。 我不知道该怎么写,什么是正确的位置。你能帮助我吗? 非常感谢!!!。 问候。 Mauro 编辑。 在另一个话题中,我发现了这个代码,但我不知道在哪里以及如何附加它。 if(OrderSelect(1, SELECT_BY_POS)==true) { if(TimeToStr(OrderOpenTime(),TIME_DATE ) != TimeToStr(CurTime(),TIME_DATE )) { //open new order } } [删除] 2008.06.19 08:06 #33 在这个主题中,没有关于我正在寻找的东西。这个主题是关于在同一时间买入和卖出....。但我正在谈论的是,如果我已经开了一个买入订单,我的EA在白天没有开新的买入订单。同样的,如果它已经打开了一个卖单。 但是,如果它开了一个买单,在白天它只能开一个卖单......遵循上面的规则。 举个例子。 时间是:今天 EA开了一个买入订单。 该仓位达到止盈或止损,因此被关闭。 现在,EA可以看到另一个买入信号,但看到它已经在之前的时间里开了一个买入订单,它没有开这个订单。 现在,EA看到一个卖出信号,看到它还没有开出卖出指令,它就开出一个卖出头寸。 该头寸达到了止盈或止损,所以它被关闭。 现在,EA可以看到另一个卖出信号,但看到它已经在之前的时间里打开了一个卖出订单,它没有打开这个订单。 这就是我在寻找的....。 Sergey Golubev 2008.06.19 08:20 #34 在这种情况下,你需要这2条线程。 https://www.mql5.com/en/forum/176322 https://www.mql5.com/en/forum/173026 [删除] 2008.06.19 09:00 #35 好的,谢谢你的回答,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); } } 上面的代码只针对买入头寸,所以这样的话,它应该只开一个买入头寸。如果我对卖出的代码做同样的事情,它应该只开一个卖出头寸,对吗? 谢谢你的帮助。 毛罗 如何编码? Experts: exad... Buy/sell EAs and indicators [删除] 2008.06.19 13:21 #36 MMM...Metaeditor说有一个错误... '\end_of_program' - unbalanced left parenthesis (259, 1) Sergey Golubev 2008.06.19 13:27 #37 这意味着,这个 {[/CODE] and [CODE]} 是不平衡的。 在代码中检查。 对不起,我不是一个程序员,所以我帮不上什么忙。 [删除] 2008.06.20 06:45 #38 嗨,newdigital...是的,我知道对于pharentesis....,但我已经检查了 所有的代码,pharentesis是平衡的... mmm....,我不明白问题出在哪里....,不过,我会继续检查......我希望能找到一个解决方案! 谢谢大家... Mauro Sergey Golubev 2008.06.20 06:52 #39 例如这个。 DayOfLastTrade=(TimeDayOfYear(TimeCurrent()); luxinterior 2008.06.20 06:53 #40 调试MT4是一件很麻烦的事情,但如果你有耐心,你可以找出问题所在。 我想说的第一件事是,MT4告诉你问题出在哪里......其实并没有接下来我会做的是,在复杂的IF语句中,开始剪掉大块的代码,这很可能导致问题的出现。 例如,如果我有... if(){ //second if if(){ //third if if(){ } } } 我会砍掉if的2和3,只留下if1。如果它能编译,你就缩小了问题范围。然后把2和3粘贴回来,再砍掉3,再测试。继续这样做几分钟,你最终会找到问题所在。 祝你好运。 璐璐 1234567891011...13 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大师们好!......,你们能不能帮我做一个开放性买入或开放性卖出的EA,在一个时间段内。
我把你的帖子移到了这里。
从第一个帖子开始阅读这个主题,你会发现一些EA。
每天只开放一次买入和一次卖出!
嗨,伙计们。
我的EA有一个小问题。它是基于价格变动的,在一天内它开了不止一个头寸。我想限制这一点,但我不知道该怎么做。
我想做的事情是这样的。
如果在当天你已经开了一个买入头寸,就不要再开任何其他的买入头寸。但如果你发现卖出信号,就开一个卖出信号。在这种情况下,如果在这之后你发现了另一个卖出信号,就不要再开其他卖出头寸。
我不知道该怎么写,什么是正确的位置。你能帮助我吗?
非常感谢!!!。
问候。
Mauro
编辑。
在另一个话题中,我发现了这个代码,但我不知道在哪里以及如何附加它。
{
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。现在,我认为我的代码是这样的。
{
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说有一个错误...
这意味着,这个
and
[CODE]}是不平衡的。
在代码中检查。
对不起,我不是一个程序员,所以我帮不上什么忙。
嗨,newdigital...是的,我知道对于pharentesis....,但我已经检查了 所有的代码,pharentesis是平衡的...
mmm....,我不明白问题出在哪里....,不过,我会继续检查......我希望能找到一个解决方案!
谢谢大家...
Mauro
例如这个。
调试MT4是一件很麻烦的事情,但如果你有耐心,你可以找出问题所在。
我想说的第一件事是,MT4告诉你问题出在哪里......其实并没有接下来我会做的是,在复杂的IF语句中,开始剪掉大块的代码,这很可能导致问题的出现。
例如,如果我有...
if(){
//second if
if(){
//third if
if(){
}
}
}
我会砍掉if的2和3,只留下if1。如果它能编译,你就缩小了问题范围。然后把2和3粘贴回来,再砍掉3,再测试。继续这样做几分钟,你最终会找到问题所在。
祝你好运。
璐璐