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

 

伙计们,我需要挂单 每分钟更新他们的价值,修改的东西是歪的,决定删除和设置每分钟在两个方向,在测试器工作正常,但在现实生活中,不知何故不提供。纠正或帮助而不是删除、修改来做。


      if(TimeCurrent()>TimeCheck_sn && TimeCurrent()<TimeCheck_en && Ogranichitel > 0)
        {

         if(IsNewCandle())
           {

            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);


            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");


            if(OrderType() ==  OP_BUYSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket(), (Ask+(Skachok*Point)), 0, (Ask+((Skachok+TPsk)*Point)), 0);

            if(OrderType() ==  OP_SELLSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket()+1, (Bid-(Skachok*Point)), 0, (Bid-((Skachok+TPsk)*Point)), 0);
           }
        }


      if(TimeCurrent() == TimeCheck_en)
        {


         if(IsNewCandle())
           {
            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);
           }


        }
 
Порт-моне тв 挂单 每分钟更新他们的价值,修改的东西是歪的,决定删除和设置每分钟在两个方向,在测试器工作正常,但在现实生活中,不知何故不交付。纠正或帮助而不是删除、修改来做。


最好回去修改,说明需要什么
 
Tretyakov Rostyslav #:
最好回去修改一下,解释一下需要什么

每次都要在新的蜡烛图上进行修改,在点位和止盈上都要有指定的缩进(就像经典),如果穿透了(新闻上的突破),那么订单就会打开(第二个订单可以自动关闭),但直到它打开,然后再修改,再修改;而这一切都在EA的参数中指定的特定时间框架内。

 
Порт-моне тв #:

该订单应在新的蜡烛图上每次修改,在点和止盈上有一个设定的缩进(像一个经典),如果它穿透(新闻上的突破),然后订单打开(第二个订单可以自动关闭),但直到它打开,然后再修改,再修改;所有这一切都在顾问的参数中指定的一个特定的时间框架。

那么第一批订单是如何下的呢?
 
Tretyakov Rostyslav #:
第一批订单是如何下的?
if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");
 
Порт-моне тв #:
让我看一下。
 
Порт-моне тв #:
你对两种订单类型有相同的条件
if(Close[1]>Open[1] && CountOrders()==0)
 
Tretyakov Rostyslav #:
你对两种订单类型有相同的条件

这就是我想要的方式,双向的,还是我需要添加一些东西?

 
Порт-моне тв #:

这就是我想要的方式,双向的,还是我需要添加一些东西?

在这里......在酒吧开业时修改一次

至于开盘,如果你根据新闻进行交易,那么 "Close[1]>Open[1]"就根本不需要。

一边是 "Close[1]>Open[1]",另一边是 "Close[1]<Open[1]"。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsSellAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
         Print("OpenOrderSuccess");
        }
     }
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsBuyAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
         Print("OpenOrderSuccess");
        }
     }
   if(newbar!=Time[0])
     {
      ModifyOrder();
      newbar=Time[0];
     }
  }
//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders(int ot=-1) 
  {
   int cnt=0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==ot||ot==-1) cnt++;
           }
        }
     }
   return(cnt);
  }
//+------------------------------------------------------------------+
//| Модификация ордера                                               |
//+------------------------------------------------------------------+
void ModifyOrder()
  {
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUYSTOP&&OrderOpenPrice()!=Ask+(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Ask+(Skachok*Point), 0, Ask+((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
            if(OrderType()==OP_SELLSTOP&&OrderOpenPrice()!=Bid-(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Bid-(Skachok*Point), 0, Bid-((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
Tretyakov Rostyslav #:

在这里......在酒吧开业时修改一次

至于开盘,如果你根据新闻进行交易,那么 "Close[1]>Open[1]"就完全不需要,如果蜡烛有一个值,那么

一边是 "Close[1]>Open[1]",另一边是 "Close[1]<Open[1]"。

谢谢你,我明天早上会试一试。

原因: