EA: Cidomo

 

Cidomo:

智能交易系统使用突破买入 (Buy Stop) 和突破卖出 (Sell Stop) 挂单。

Cidomo

作者: Vladimir Karputov

 
ea 在哪里

 
Habibur Rohman :
ea 在哪里

顾问哪儿也没去。顾问已就位:


 

我想为自己改进智能交易系统,但要做到这一点,我需要了解很多东西!(很多事情我都不懂)。我将分头提问。

有一个代码:

   if(m_need_delete_buy_stop || m_need_delete_sell_stop)
     {
      int count_buy_stops=0,count_sell_stops=0;
      CalculateAllPendingOrders(count_buy_stops,count_sell_stops);

      if(m_need_delete_buy_stop)
        {
         if(count_buy_stops>0)
           {
            DeleteOrders(ORDER_TYPE_BUY_STOP);
            return;
           }
         else
           {
            m_need_delete_buy_stop=false;
            return;
           }
        }
      if(m_need_delete_sell_stop)
        {
         if(count_sell_stops>0)
           {
            DeleteOrders(ORDER_TYPE_SELL_STOP);
            return;
           }
         else
           {
            m_need_delete_sell_stop=false;
            return;
           }
        }
     }

它是做什么的?

 
Sysmart:

我想为自己改进智能交易系统,但要做到这一点,我需要了解很多东西!(很多事情我都不懂)。我将分头提问。

有一个代码:

它是做什么的?

如果标志"m_need_delete_buy_stop"("需要删除挂起的 买入止损单")或 "m_need_delete_sell_stop"("需要删除挂起的卖出止损单")被触发,则继续删除。

   if(m_need_delete_buy_stop || m_need_delete_sell_stop)
     {

继续删除。


我们会计算 Expert Advisor 当前有多少挂单:

      int count_buy_stops=0,count_sell_stops=0;
      CalculateAllPendingOrders(count_buy_stops,count_sell_stops);


如果 "需要删除挂起的买入止损单":

      if(m_need_delete_buy_stop)
        {
         if(count_buy_stops>0)
           {
            DeleteOrders(ORDER_TYPE_BUY_STOP);
            return;
           }
         else
           {
            m_need_delete_buy_stop=false;
            return;
           }
        }

且已下买入止损单的数量大于零('count_buy_stops') - 则删除它们。如果数量等于零,则重置"m_need_delete_buy_stop"标志。


如果 "有必要删除挂起的卖出止损单",我们也会这样做...

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

谢谢!

另一个我不明白的代码

//--- 我们只在新栏诞生时工作
   static datetime PrevBars=0;
   datetime time_0=iTime(m_symbol.Name(),InpWorkTimeFrame,0);
   if(time_0==PrevBars)
      return;
   PrevBars=time_0;
   if(!RefreshRates())
     {
      PrevBars=0;
      return;
     }
 
Sysmart:

谢谢!

另一个我不明白的代码

这段代码的作用如下:它只工作一次 - 当一个新的条形图 诞生时。

 
Vladimir Karputov:

这段代码的作用如下:它只工作一次--在新条形图 诞生的那一刻。

谢谢。我最终明白了:

//--- 我们只在新栏诞生时工作
   // 在静态变量中记住最后一小节的开启时间
   static datetime PrevBars=0;
   // 当前时间(iTime - 返回酒吧营业时间的值)
   datetime time_0=iTime(m_symbol.Name(),InpWorkTimeFrame,0);
   if(time_0==PrevBars)
      return;
   // 如果时间不同是因为条件已过 if(time_0==PrevBars)
   // 记住时间
   PrevBars=time_0;
   // 如果报价尚未更新,则重置上一栏的开仓时间
   if(!RefreshRates())
     {
      PrevBars=0;
      return;
     }
   // 如果你已经到了这里,那就不是一个新酒吧了。

如果没有您的链接,我也不会明白这一点)。

 
Sysmart:

谢谢。这是我最后的感悟:

如果没有您的链接,我是不会明白的)。

小小更正。这

 // 如果你已经到了这里,那就不是一个新酒吧了。

不正确。是正确的:

 // 你已经到达了这里,所以酒吧是新的
 

对了,下面就是代码:

   if(!RefreshRates() || !m_symbol.Refresh())
     {
      PrevBars=0;
      return;
     }

我认为它与上面讨论的代码有部分重复:

   if(!RefreshRates())
     {
      PrevBars=0;
      return;
     }

我认为可以删除

 
Vladimir Karputov:

稍作更正。这是

是不正确的。是正确的:

谢谢)!