無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 912
- 評価:
- パブリッシュ済み:
- 2017.05.10 12:33
- アップデート済み:
- 2017.05.10 12:35
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このエキスパートアドバイザーは、未決注文が発生した瞬間をどのように判断するかという問題を解決する方法の例を示します。
このエキスパートアドバイザーはOnTradeTransaction() 関数で TRADE_TRANSACTION_DEAL_ADD型のトランザクションを待つことによって作動します。
TRADE_TRANSACTION_DEAL_ADD | 履歴への取引の追加。それは注文実行または口座残高操作の結果として実行されます。 |
このようなトランザクションを「捉えた」場合、すぐに"bln_find_order"フラグを使って注文を検索して注文チケットを "ul_find_order"変数に割り当てます:
//+------------------------------------------------------------------+ //| TradeTransaction関数 | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //+------------------------------------------------------------------+ //| TRADE_TRANSACTION_DEAL_* | //| 以下のMqlTradeTransaction構造体のフィールド | //| は取引の処理に関連する取引トランザクションのために記入されている | //| (TRADE_TRANSACTION_DEAL_ADD、TRADE_TRANSACTION_DEAL_UPDATE | //| 及び TRADE_TRANSACTION_DEAL_DELETE): | //| •deal - 約定チケット | //| •order - 注文チケット、約定チケットはそれに基づく | //| •symbol - 約定の銘柄名 | //| •type - 取引トランザクションの種類 | //| •deal_type - 約定の種類 | //| •price - 約定価格 | //| •price_sl - 決済逆指値(注文で指定されている場合、 | //| •約定はこれに基づいて実行される) | //| •price_tp - 決済指値(注文で指定されている場合、 | //| 約定はこれに基づいて実行される) | //| •volume - 約定ボリューム(ロット単位) | //| •position - 約定実行の結果として | //| 開かれた、変更された、または決済されたポジションのチケット | //| •position_by - 反対側のポジションのチケット | //| 約定のみによって書き入れる | //| (反対のポジションでポジションを決済する) | //+------------------------------------------------------------------+ //--- トランザクションの種類を列挙値として取得する ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- トランザクションが履歴トランザクションを追加した結果である場合 if(type==TRADE_TRANSACTION_DEAL_ADD) { bln_find_order=true; // true -> 注文を探すべき ul_find_order=trans.order; } }
OnTick()では常に "bln_find_order"フラグの状態をチェックします。 フラグがtrueになるとすぐに、注文の検索が始まります。
- 初めにチケットによる注文の検索を試みます。
- 成功した場合は(注文が既に履歴に書き込まれていることを意味)注文タイプを決定します。取引履歴から注文のプロパティにアクセスするには HistoryOrderGetIntegerを使用します。
//+------------------------------------------------------------------+ //| エキスパートティック関数 | //+------------------------------------------------------------------+ void OnTick() { //--- if(bln_find_order) // true -> 注文を探すべき { static long counter=0; Print("Attempt number ",counter); ResetLastError(); if(HistoryOrderSelect(ul_find_order)) { long type_order=HistoryOrderGetInteger(ul_find_order,ORDER_TYPE); if(type_order==ORDER_TYPE_BUY_LIMIT || type_order==ORDER_TYPE_BUY_STOP || type_order==ORDER_TYPE_SELL_LIMIT ||type_order==ORDER_TYPE_SELL_STOP) { Print("The pending order ",ul_find_order," is found!Type of order is ", EnumToString((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ul_find_order,ORDER_TYPE))); bln_find_order=false; // true -> 注文を探すべき counter=0; return; } else { Print("The order ",ul_find_order," is not pending"); bln_find_order=false; // true -> 注文を探すべき return; } } else { Print("Order ",ul_find_order," is not find, error#",GetLastError()); } counter++; } }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/17610

XCCXオシレータの平均値に相対してローソク足のシーケンスとして構築されたケルトナーチャンネルです。

入力パラメータでの時間枠選択オプションを持つSTD指標です。

取引履歴に基づいてポジション利益をポイント単位で返します。

CDirクラスを使用すると、MS-DOS Dirコマンドと同様に、MQL5サンドボックス外のファイルやフォルダに関する情報を取得できます。システムDLLの呼び出しが使用されるので、その使用を許可する必要があります。