新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1659

 
还有一件事--当我启动EA时,有一个订单在第一根蜡烛上打开,尽管那一刻没有信号。如何才能消除它?
附加的文件:
 
artem artem 开盘价 来测试--29个订单?

+几个订单明确地错过了他们的开盘价,如果他们被测试了ticks。我附上一张截图,其中显示

尝试

附加的文件:
artem.mq4  13 kb
 
现在,它按点位和开盘价开出的订单 数量相同。只是现在由于某种原因,我从第7根蜡烛进入,而不是从第4根。
 
artem artem 订单 数量相同。只是现在我们从第七根蜡烛进入,而不是第四根。

删除了所有不必要的东西......似乎在正常工作。

附加的文件:
artem.mq4  11 kb
 
你能告诉我是否有办法在终端中给EA设置的字符串定界,使其不能被抹去?如果你在代码中写了extern字符串,它允许你编辑这个字符串,如果你不小心删除了它,你必须按 "复位 "来恢复它,但这时所有的设置都被重置了。当然,它们可以事先保存到一个设定文件中,但我只是好奇,是否有可能制作一个 "石头表")
 

检查过了,无论是刻度线还是开盘价...RA-BO-TA-ET!!!!

MakarFX,非常感谢你!!。我已经有2个星期在捣鼓这个难题了,直到今天都没有结果。非常感谢你,再一次!我简直就只剩下几个澄清,我不会再耽误你了,你的时间已经花了这么多。实际上,我感兴趣的是这个问题。


1. 据我所知,如果我想改变 "确认烛台 "的数量,那么我只需将常量中的一个数字改为另一个,就可以了?

void OnTick()
  {
//---
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   //---
   if(newbar!=Time[0])
     {
      if(CheckForOpen()!=Start)
        {Start=CheckForOpen(); cnt=1;}
      else
        {cnt+=1;}
      //---
      if(cnt==8)
        {
         // Открытие ордера по методу Пуриа
         if(CheckForOpen()==0) // Если сигнал для покупок 
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");}
              else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1) // Если сигнал для продаж 
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");}
              else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];
     }
  }

2. 当我运行专家顾问时,尽管没有任何信号,但第一个卖出订单在第一个蜡烛图上被打开。这意味着这第一笔订单是多余的,EA不应该在第一笔订单时立即打开交易,只是因为EA刚刚启动。这怎么可能被修复呢?我有个想法,Init是负责这个问题的,我应该把它改成 "false",或者完全删除这个Init?

bool OrderBuy = true, OrderSell = true, Order = false, Init = true;

最后,如果我让它像这样运行,同时在几个货币对上进行交易,它能正常工作吗?或者我必须在代码中规定一些其他的东西,这样就不会有任何错误等等。特别是,如果这个EA能同时在几个货币对上工作?

事实上,这就是我所感兴趣的,但无论如何--再次感谢你!"。如果我自己做的话,我不知道会花多少时间)

 
artem artem #:

检查过了,无论是刻度线还是开盘价...RA-BO-TA-ET!!!!

MakarFX,非常感谢你!!。我已经有2个星期在捣鼓这个难题了,直到今天都没有结果。非常感谢你,再一次!我简直就只剩下几个澄清,我不会再耽误你了,你的时间已经花了这么多。实际上,我感兴趣的是这个问题。


1. 据我所知,如果我想改变 "确认烛台 "的数量,那么我只需要将常量中的一个数字改为另一个数字,就可以了?

2. 当我运行专家顾问时,尽管没有任何信号,但第一个卖出订单在第一个蜡烛图上被打开。这意味着这第一笔订单是多余的,EA不应该在第一笔订单时立即打开交易,只是因为EA刚刚启动。这怎么可能被修复呢?我有个想法,Init是负责这个问题的,我应该把它改成 "false",或者完全删除这个Init?

最后,如果我让它像这样运行,同时在几个货币对上进行交易,它能正常工作吗?或者我必须在代码中规定一些其他的东西,这样就不会有任何错误等等。特别是,如果这个EA能同时在几个货币对上工作?

事实上,这就是我所感兴趣的,但无论如何--再次感谢你!"。如果我自己尝试,我不知道会花多少时间)

1)是的,这些是"确认蜡烛 " 数量的数值。

2)不,在第一种情况下不打开,只有在给定数量的"确认蜡烛 " 之后才打开。

3) 改变魔力,把它放在任何一对上

最好是让魔力成为一个外部变量

 
Ivan Butko #:
你能告诉我是否有办法在终端中给EA设置的字符串定界,使其不能被抹去?如果你在代码中写了extern字符串,它允许你编辑这个字符串,如果你不小心删除了它,你必须按 "复位 "来恢复它,但这时所有的设置都被重置了。当然,它们可以保存在一个集合文件中,但我只是好奇,是否有可能制作一个 "石桌")
制作一个ENUM
 
MakarFX #:
做好ENUM

我会试一试的,谢谢。

 
Ivan Butko #:

我会试试的,谢谢你。

enum MODE
  {
   MODE_1=1,    // Мертвая строка
  };
//--- input parameters
input MODE mode= MODE_1; // Эта строка