文章 "通用智能交易系统:支持挂单和对冲(第五章)" - 页 3

 
Сергей Криушин:
不起作用 - 这些行本身不在 Impulse 中....
根据编译器信息,它们在 Impulse 中,但无法调用,因为在您的 CStrategy 版本中没有定义 Ask、Bid 等函数。
 
Vasiliy Sokolov:
根据编译器信息,它们在 Impulse 中,但它们的调用不可用,因为在您的 CStrategy 版本中没有定义 Ask、Bid 等函数。
如何在那里定义它们...版本必须是我的版本...从您的交易策略中插入...所有常见的 Ask、Bid 等函数都是一样的...
 
Сергей Криушин:
您如何定义它们...版本必须是我的...从我的交易策略中插入...它们是 Ask 和 Bid,似乎对所有常见的都一样...
文章底部附有strategyarticle_20.04.16.zip 文件。下载并解压后,用这些新文件替换所有以前的 CStrategy 文件。
 
Сергей Криушин:
有 CStrategyList 管理器;但没有 Impuls 类...也许这就是原因。
怎么会没有?MQL5\Include\Strategy\Samples\Impulse.mqh
 
Vasiliy Sokolov:
如何不能?MQL5/Include/Strategy/Samples/Impulse.mqh。
是的,它工作得很好,非常感谢......另一个账户工作得很好....。我想我应该重新启动终端...我不知道,一切都编译好了,但猫头鹰卡住了...很抱歉......事情就是这样,总会在某个地方出现问题看了半天......我下载了 3 次并检查了所有内容......)))))
 
如何将止损单变成限价单,因为似乎更多的人要求限价单......并更改距离.....如何将批量减少到 0.01....很多东西我都找不到......))))
 
Сергей Криушин:
如何将止损单变成限价单,因为似乎更多的人要求限价单......并改变距离.....如何将批量减少到 0.01....太多了,不可能找到任何东西......))))
MM.SetLotFixed(0.01);
if(buy_stop_total == 0 && task == ORDER_TASK_MODIFY)
   Trade.BuyLimit(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
正如您所看到的,没什么复杂的。目标值必须自己计算。
 
Vasiliy Sokolov:
如您所见,这并不复杂。您必须自己计算目标值。

我从头开始试过这样做,但行不通,止损一直是这样的....。

//+------------------------------------------------------------------+
void CImpulse::InitSell(const MarketEvent &event)
{
   if(!IsTrackEvents(event))return;                      
   if(positions.open_sell > 0) return;                    
   int sell_limit_total = 0;
   ENUM_ORDER_TASK task;
   double target = Ask() - Ask()*(m_percent/100.0);
   if(target < Moving.OutValue(0))                    // 订单触发价格必须高于移动平均线
      task = ORDER_TASK_DELETE;
   else
      task = ORDER_TASK_MODIFY;
   for(int i = PendingOrders.Total()-1; i >= 0; i--)
   {
      CPendingOrder* Order = PendingOrders.GetOrder(i);
      if(Order == NULL || !Order.IsMain(ExpertSymbol(), ExpertMagic()))
         continue;
      if(Order.Type() == ORDER_TYPE_SELL_LIMIT)
      {
         if(task == ORDER_TASK_MODIFY)
         {
            sell_limit_total++;
            Order.Modify(target);
         }
         else
            Order.Delete();
      }
   }
   if(sell_limit_total == 0 && task == ORDER_TASK_MODIFY)
      Trade.SellLimit(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
}
//+------------------------------------------------------------------+
//| 使用 SellStop 挂单开空单
//| 位置|
//+------------------------------------------------------------------+
void CImpulse::InitBuy(const MarketEvent &event)
{
   if(!IsTrackEvents(event))return;                      
   if(positions.open_buy > 0) return;                    
   int buy_limit_total = 0;
   ENUM_ORDER_TASK task;
   double target = Bid() + Bid()*(m_percent/100.0);
   if(target > Moving.OutValue(0))                    // 订单触发价格必须高于移动平均线
      task = ORDER_TASK_DELETE;
   else
      task = ORDER_TASK_MODIFY;
   for(int i = PendingOrders.Total()-1; i >= 0; i--)
   {
      CPendingOrder* Order = PendingOrders.GetOrder(i);
      if(Order == NULL || !Order.IsMain(ExpertSymbol(), ExpertMagic()))
         continue;
      if(Order.Type() == ORDER_TYPE_BUY_LIMIT)
      {
         if(task == ORDER_TASK_MODIFY)
         {
            buy_limit_total++;
            Order.Modify(target);
         }
         else
            Order.Delete();
      }
   }
   if(buy_limit_total == 0 && task == ORDER_TASK_MODIFY)
      Trade.BuyLimit(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
}
 
Сергей Криушин:

我这样试了一下 - 没用 - 止动器还是这样.....。

让我检查一下...
 
Vasiliy Sokolov:
我现在就检查...

我在猫头鹰中添加了 SL 和 TP 水平以及拖网 - 它在 Metaquotes 演示版上显示完美......当再次切换到真实版时,有些东西看不到 - 它出错了 - 最主要的是,我干净利落地复制了所有东西,整个库 - 但仍然出错......又出什么问题了....。一个很大的请求 - 是否有可能以某种方式将注释合并到一个 EA 中......可以说,为了清楚地理解所有描述的本质......对您所做的伟大工作深表敬意......非常感谢......我还想知道 - 是只有我有这样的不理解,还是其他人在测试....。而且没有出错...

'Trade.mqh'     Trade.mqh       1       1
'Object.mqh'    Object.mqh      1       1
'StdLibErr.mqh' StdLibErr.mqh   1       1
'SymbolInfo.mqh'        SymbolInfo.mqh  1       
'OrderInfo.mqh' OrderInfo.mqh   1       1
'HistoryOrderInfo.mqh'  HistoryOrderInfo.mqh    1       1
'PositionInfo.mqh'      PositionInfo.mqh        1       1
'DealInfo.mqh'  DealInfo.mqh    1       1
'ENUM_ACCOUNT_MARGIN_MODE' - declaration without type   Trade.mqh       36      4
'POSITION_TICKET' - undeclared identifier       PositionInfo.mqh        84      37
'PositionGetInteger' - no one of the overloads can be applied to the function call      PositionInfo.mqh        84      18
'ENUM_ACCOUNT_MARGIN_MODE' - undeclared identifier      PositionInfo.mqh        259     4
'margin_mode' - undeclared identifier   PositionInfo.mqh        259     29
'margin_mode' - some operator expected  PositionInfo.mqh        259     29
'ACCOUNT_MARGIN_MODE' - undeclared identifier   PositionInfo.mqh        259     86
'ACCOUNT_MARGIN_MODE' - cannot convert enum     PositionInfo.mqh        259     86
'AccountInfoInteger' - some operator expected   PositionInfo.mqh        259     67
Account_margin_mode_retail_hedg...'. - undeclared identifier      PositionInfo.mqh        264     20
'PositionSelectByTicket' - function not defined PositionInfo.mqh        325     11
'ENUM_ACCOUNT_MARGIN_MODE' - undeclared identifier      PositionInfo.mqh        332     4
'margin_mode' - undeclared identifier   PositionInfo.mqh        332     29
'margin_mode' - some operator expected  PositionInfo.mqh        332     29
'ACCOUNT_MARGIN_MODE' - undeclared identifier   PositionInfo.mqh        332     86
'ACCOUNT_MARGIN_MODE' - cannot convert enum     PositionInfo.mqh        332     86
'AccountInfoInteger' - some operator expected   PositionInfo.mqh        332     67
Account_margin_mode_retail_hedg...'. - undeclared identifier      PositionInfo.mqh        334     20
'PositionGetTicket' - function not defined      PositionInfo.mqh        336     20
'position' - struct member undefined    Trade.mqh       196     12
'position' - struct member undefined    Trade.mqh       196     35
'position_by' - struct member undefined Trade.mqh       197     12
'position_by' - struct member undefined Trade.mqh       197     35
'position' - struct member undefined    Trade.mqh       50      85
'position_by' - struct member undefined Trade.mqh       51      85
'm_margin_mode' - undeclared identifier Trade.mqh       94      44
'ENUM_ACCOUNT_MARGIN_MODE' - undeclared identifier      Trade.mqh       94      59
'ACCOUNT_MARGIN_MODE' - undeclared identifier   Trade.mqh       94      103
'ACCOUNT_MARGIN_MODE' - cannot convert enum     Trade.mqh       94      103
'AccountInfoInteger' - some operator expected   Trade.mqh       94      84
'position' - struct member undefined    Trade.mqh       354     14
'POSITION_TICKET' - undeclared identifier       Trade.mqh       354     42
'PositionGetInteger' - no one of the overloads can be applied to the function call      Trade.mqh       354     23
'PositionSelectByTicket' - function not defined Trade.mqh       367     8
'position' - struct member undefined    Trade.mqh       373     14
possible loss of data due to type conversion    Trade.mqh       373     22
'position' - struct member undefined    Trade.mqh       427     20
'POSITION_TICKET' - undeclared identifier       Trade.mqh       427     48
'PositionGetInteger' - no one of the overloads can be applied to the function call      Trade.mqh       427     29
'PositionSelectByTicket' - function not defined Trade.mqh       472     8
'position' - struct member undefined    Trade.mqh       492     14
possible loss of data due to type conversion    Trade.mqh       492     23
'PositionSelectByTicket' - function not defined Trade.mqh       513     8
'PositionSelectByTicket' - function not defined Trade.mqh       517     8
'TRADE_ACTION_CLOSE_BY' - undeclared identifier Trade.mqh       529     26