記事"ユニバーサルEA:保留注文とサポートヘッジ(その5)"についてのディスカッション - ページ 3

 
Сергей Криушин:
これらの行はインパルス自体にはありません。
コンパイラのメッセージに よると、これらの行はインパルス内にありますが、あなたのバージョンのCStrategyではAsk、Bidなどの関数が定義されていないため、呼び出すことができません。
 
Vasiliy Sokolov:
コンパイラのメッセージに よると、これらはインパルスにありますが、CStrategyのバージョンではAsk、Bidなどの関数が定義されていないため、呼び出しができません。
どうすれば定義できるのでしょうか?バージョンは私のバージョンでなければなりません。あなたの取引戦略から挿入してください。Ask、Bidなどは、一般的なものはすべて同じです。
 
Сергей Криушин:
そこでの定義は?バージョンは私のものでなければならない...私の取引戦略から挿入...それらはアスクとビッドである。
記事の下にstrategyarticle_20.04.16.zipという ファイルが添付されています。ダウンロードして解凍し、以前のCStrategyファイルをすべて新しいものに置き換えてください。
 
Сергей Криушин:
CStrategyList Managerはあるが、Impulsクラスがない...。それが原因かもしれない。
どうして?MQL5Include ¦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