私たちのファンページに参加してください
- ビュー:
- 808
- 評価:
- パブリッシュ済み:
- 2018.11.05 08:45
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
非同期トレードオーダーには大きな利点があります。例えば、大量送信のスピードです。 しかし、そのような手法は不便さが原因で普及していません。非同期トレードをしようと思ったら、オーダー結果データはOnTradeTransaction でしか見ることができません。 これは、EAの場合簡単ではありません。スクリプトであれば不可能です。
このライブラリはこの問題を解決します。 アプリケーションを起動すると、プログラムを非同期にするプロセスが簡素化されるため、いつでも、トレーディングターミナル内のすべてのトランザクション (適切な OnTradeTransaction のフルデータ) にアクセスできます。
例
以下の例は、ライブラリ操作の原則を示しています。
//OnTradeTransaction を使用せずにすべてのトランザクションを出力 #include <fxsaber\TradeTransactions\TradeTransactions.mqh> //プログラム内の任意の場所に OnTradeTransaction データアクセス TRADETRANSACTIONS Transactions; //トレードトランザクション const bool Init = EventSetMillisecondTimer(100); void OnTimer() { static uint Total = 0; const uint NewTotal = Transactions.Total(); //保存されたトランザクションの数 for (uint i = Total; i < NewTotal; i++) //新しいトランザクションを実行する { MqlTradeTransaction Trans; MqlTradeRequest Request; MqlTradeResult Result; //それぞれのトランザクションのすべてのデータを取得し、Printします。 Print(TimeToString(Transactions[i].Get(Trans, Request, Result)) + "\n" + ToString(Trans) + ToString(Request) + ToString(Result)); } Total = NewTotal; }
この EA を実行し、手動でトレードオーダーを実行してみてください。 このEAは、OnTradeTransaction があるかのようにすべての詳細をPrintします。 しかし、それだけではありません!
このような機能を使用するには、多くの実用的シナリオがあります。 たとえば、シンボルのバスケットのトレードです。 また、たとえば、コード内で複数のポジションをすばやく開く必要がある場合などです。 ポジションが開いている場合は、関数を離れることなく、追加のトレード操作を実行することができます。
非同期オーダーを大量に送信した結果を頻繁に待つ必要があるため、このような例を使用して迅速に評価できる適切な関数がライブラリに備わっています。
//結果を待機している大規模な非同期トレードオーダーの例。 #include <MetaTrader4Orders.mqh> //https://www.mql5.com/ja/code/16006 #include <fxsaber\TradeTransactions\TradeTransactions.mqh> //プログラム内の任意の場所に OnTradeTransaction データアクセス TRADETRANSACTIONS Transactions; //トレードトランザクション // 可能な限り早くポジションを開く ポジションが開いているときReturn bool OpenPositions( const int Amount = 10 ) { uint RequestID[]; for (int i = ArrayResize(RequestID, Amount) - 1; i >= 0; i--) { const string Symb = SymbolName(i, true); RequestID[i] = OrderSendAsync(Symb, OP_BUY, 1, SymbolInfoDouble(Symb, SYMBOL_ASK), 100, 0, 0); //非同期オーダーの送信 } return(Transactions.Waiting(RequestID)); //すべての非同期オーダーに対するサーバーの応答を待機する } //できるだけ早くすべてを閉じる。 アクションが確認されたときにReturn。 bool CloseAll() { uint RequestID[]; for (int i = ArrayResize(RequestID, OrdersTotal()) - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS)) //非同期オーダーの送信 RequestID[i] = (OrderType() <= OP_SELL) ? OrderCloseAsync(OrderTicket(), OrderLots(), OrderClosePrice(), 100) : OrderDeleteAsync(OrderTicket()); return(Transactions.Waiting(RequestID)); //すべての非同期オーダーに対するサーバーの応答を待機する } void OnStart() { if (OpenPositions()) Print(CloseAll()); }
もちろん、これはスクリプトですが、ライブラリを介してトランザクションを操作することができます。 この起動は、迅速に開き、複数のトレーディングポジション/オーダーを閉じる様子を示します。
特徴
- このコードIndicatorsfxsaberTradeTransactions.mq5をコンパイルする必要があります。
- TypeToBytesライブラリを使用します。
- ライブラリのソースコード関数 (ResourceData) は、リソースとの間で便利にデータを保存/読み取ることができるユニバーサルクラスです。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/22166

中間線を追加した NRTR 型のトレンドインジケータ

XRSI_Candle_Vol_Zer インジケータは、アラートを提供し、受信トレーディングシグナルで電子メールとプッシュ通知を送信します