我将免费撰写一份顾问报告 - 页 17

 
你好,我已经开始学习MQL4,并开始使用MACD样本专家顾问。我已经把一切都安排好了。我想我都弄明白了,但我不能让它在我的Demo上同时为几个货币对工作。如果终端中已经有一个开放的头寸(手动或由专家顾问),它将不会工作。我没有足够的知识,请告诉我应该增加或修正什么。
 
igor.malish:
你好,我开始学习MQL4,并开始使用MACD样本专家顾问。我已经把它解析出来了。我想我已经把它解决了,但我不能让它作为演示专家顾问同时在一个以上的符号上工作。如果终端中已经有一个未结头寸(手动或由专家顾问),它就不会工作。 我已经尝试了我知道的所有方法。我没有足够的知识,请告诉我应该增加或纠正什么。

MACD样本不是为了在多个工具上进行交易而设计的

total=OrdersTotal();

   if(total<1)

     {...
在这种情况下,如果任何工具至少有一个已经被打开,那么实际上是禁止打开交易的。
 
dimeon:

MACD样本不是为了在多种工具上进行交易而设计的

如果任何工具至少有一个已经开仓,那么这个条件实际上是禁止开仓交易。
我也有类似的问题,但每天只做一次交易。也就是说,条件不仅是OrdersTotal(),而且是来自已关闭的历史。
 
是否有办法将OrdersTotal、OrderSymbol和OrderMagicNumber联系起来?
 
igor.malish:
是否有办法将OrdersTotal、OrderSymbol和OrderMagicNumber联系起来?
愚蠢的问题。
 
问候。谁能让我的EA适应新的mql?(#property strict)它正在发展,其功能也在改进,但它所使用的语言已经过时了。这个专家顾问是ZigZaHod v1.1的后期修改,它需要最小的变化,以便我可以掌握和修改它。我已经准备好深入参与其中。我对需要重做的事情缺乏了解。
 

帮助修复错误:我的想法是,EA应该每天工作一次,当新的一天开始时,凌晨1点,应该在高点和低点开两个挂单

我指的是在00:00收盘的蜡烛图。 在第二天之前我不应该做任何其他事情。 我做错了什么?


extern string Times = "Time";
extern int StartHour    = 1;
extern int TakeProfit   = 50;
extern int StopLoss     = 50;
extern int Lots         = 1;

void OnTick()
{ 
   static bool IsFirstTick = true;
   static int ticket = 0;
   int h=TimeHour(TimeCurrent());
   Alert("TimeHor: ", h);
   if(Hour() == StartHour)
   {
    if (IsFirstTick == true)
      IsFirstTick - false;
      
      bool res;
      res= OrderSelect(ticket, SELECT_BY_TICKET);
      if(res == true)
      { 
         if(OrderCloseTime() == 0)
         {
            bool res2;
            res2 = OrderClose(ticket, Lots, OrderClosePrice(), 10);
            
            if(res2 == false)
            {
               Alert("Error Closing Order #", ticket);
               }
         }   
      }
       if(Open[0] < Open[StartHour])
      {
         ticket = OrderSend(Symbol(), OP_BUYLIMIT, Lots, High[1],10, Low[1]-StopLoss*Point, High[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         }  
       }
       else
       {
         ticket = OrderSend(Symbol(), OP_SELLLIMIT, Lots, Low[1],10, High[1]+StopLoss*Point, Low[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         } 
    }   
}
 
MIR_KAZAN:

帮助修复错误:我的想法是,EA应该每天工作一次,当新的一天开始时,凌晨1点,应该在高点和低点开两个挂单

我指的是在00:00收盘的蜡烛图。 在第二天之前我不应该做任何其他事情。 我做错了什么?


粘贴代码时,请使用论坛的嵌入功能:在论坛上正确粘贴代码
 
barabashkakvn:
粘贴代码时,请使用论坛的内置功能:在论坛中正确插入代码
明白了。
 
MIR_KAZAN:

帮助修复错误:我的想法是,EA应该每天工作一次,当新的一天开始时,凌晨1点,应该在高点和低点开两个挂单

就是说,一个在00:00收盘的蜡烛图,在第二天之前不应该再做任何事情。 我做错了什么呢?


有一个错误。

      IsFirstTick - false;

它应该是 =