ライブラリ: MT4Orders - ページ 58

 
Igor Makanu:

純粋なMQL5(SBを使用しない)の使用に関連してMT4Ordersをテストしたhttps://www.mql5.com/ru/forum/357253/page4#comment_19593443

明確に、MT4Ordersでは 何も 遅くならず、完璧に動作した

MT4Ordersのスナップショットとは別に、均一な地面に書かれていませんでした。しかし、これは本当です。Testerでブレーキを作るのは難しい。

 

このライブラリは素晴らしいMT4のコードをMT5で実行するのがとても簡単です。ありがとうございます。

1つ問題があります。OrderTicket()関数は、取引がクローズされたときに正しい番号を返しません。これは、取引がクローズされたときに、その取引をフォローする上で本当に問題です。

例えば、# 4584849の取引がクローズされると# 38484939になります。

よろしくお願いします。

これは私のスクリプトのコードです:

#include <MT4Orders1.mqh>
void OnStart()
  {
int n=OrdersTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
  Print("History");
  n=OrdersHistoryTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
}
 
問題ではありません。MT5のクローズポジションには複数のチケットがあります。それらはすべてSELECT_BY_TICKETを通して機能します。
おそらく、OrderTicketID()が必要です。
削除済み  
また、すべてのスプリントと余分な計算(もしあれば)をオフにするにはどうすればいいのでしょうか?定義を見てもわかりません。
 
Maxim Dmitrievsky:
また、すべてのスプリントと余分な計算(もしあれば)をオフにするにはどうすればいいのでしょうか?定義を見てもわかりません。

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: MT4Orders

fxsaber, 2019.04.29 15:19

製品でMT4Ordersの使用を非点灯に保つ必要がある場合は、ライブラリソースの関連部分をカットするか、ユニバーサルスタブを置くことができます。
// マクロにより、MT4Orders の存在に関するヒントを遮断する。
#define Alert PrintTmp
#define Print PrintTmp
  void PrintTmp( string ) {}
  
  #include <MT4Orders.mqh> // https://www.mql5.com/ja/code/16006
#undef  Print
#undef  Alert
削除済み  
fxsaber:

サンキュー

 
MT4とMT5の違いのニュアンス。
#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // オーダーを開き、選択する
    OrderPrint();                                                                                     // 彼女のデータをプリントアウト
    
  OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0) // 注文を開いたが、選択しなかった。
  OrderPrint();                                                   // MT4は以前と同じ結果を返すが、MT5はそうとは限らない。
}


MT5での結果。

        #827589598 2021.01.13 01:21:17.832 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0
        #827589601 2021.01.13 01:21:17.895 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0 // MT4では、文字列は前のものと同じになる。


取引操作(テスターではなくターミナルで) OrderLots()、OrderTicket()等の値が変更される場合があります。MT4からコンバートされる方は、この点にご注意ください。

 
fxsaber:

取引操作(テスターではなくターミナルで) OrderLots()、OrderTicket()等の値を変更することができます。MT4からコンバートされる方は、この点を考慮してください。

同様に、OrdersTotal.OrderLots()、OrderTicket()、およびその他の値を変更できます。

#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // オーダーを開き、選択する
    OrderPrint();                                                                                     // 彼女のデータをプリントアウト
    
  Sleep(10000); // ポーズ。
  
  OrdersTotal();
  OrderPrint(); // MT4は以前と同じ結果を返すが、MT5はそうとは限らない。
}


結果

        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22112 0.00 0.00 0.00 0
        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22111 0.00 0.00 0.00 0
 
親愛なるfxsaber、これはおそらくバナナの質問ですが、私はそれを聞かなければなりません。Biblaはうまく動作しますが、テスターでは1つの特殊性が現れます。すなわち、最初のティックが発生するとすぐに非常に激しい何かが始まり、数分後にテストが実行され始めます。今、私はフクロウのチャートに置くために行ったMT5で、彼はまた、最初のティックを食べ、1つのコアが完全にロードされてハングアップし、ログ内のprinchuティックは、彼らが約2.5分の周期で表示されます)。そして、主なものは、彼が端末をレイプし、彼はすべてで終了するかどうかどのくらい明確ではありません)。Sovは通常、4日に動作し、5日には原則的に使用できません。さて、私はスプリントを無効にしたが、それだけでログをクリアしますが、パフォーマンスとどのようにするのですか?はい、私は歴史の合計と順序の選択の両方を使用し、そうでない場合は、リブを使用する意味は何ですか。MQL5のOnChartEventが OnTickにハングアップしているためです。ターミナルをモックするこの機能をオフにする方法はあるのでしょうか、それとも原則的に提供されていないのでしょうか?あなたのlibを私の製品で使いたいのですが、まだ方法がわかりません。
 
口調を悪く取らないでほしい。