ライブラリ: MT4Orders - ページ 3 12345678910...95 新しいコメント Alexey Viktorov 2016.09.29 15:43 #21 Alexey Volchanskiy:Wo、そしてfxsaberは、この間違いに気づいたのが私一人であることに腹を立てている。)私たちの仲間はとても観察力が鋭いというだけのことです。私はウェビナーを行っていて、録画があることを10回繰り返した。最後にもう一度、録画は明日になります、質問があれば聞いてください、と言った。そして今、最初の質問を当てる ))))) そしてAを読む。ガリッチ「平和を擁護する集会でどのようにスピーチしたか」。(タイトルを正確に覚えていることを願う)。 fxsaber 2016.10.04 17:50 #22 // 変更リスト: // 03.08.2016: // リリース - オフラインテスターのみで執筆、テスト。 // 29.09.2016: // 取引所(SYMBOL_TRADE_EXECUTION_EXCHANGE)で動作する可能性を追加。取引所はネット(ヘッジではない)モードであることに注意。 // 追加:要件「#include <Trade/Trade.mqh>がある場合は、この行を後に挿入する」。 // もし#include <Expert/Expert.mqh>があるなら、この行を後に挿入してください。 // 修正: 成行注文のOrderSendは、取引ではなくチケットのポジションを返します。 fxsaber 2016.10.13 09:07 #23 この動作はライブラリに実装されていない 取引、自動取引システム、取引戦略のテストに関するフォーラム MT5でOrderSendを正しく動作させる方法 fxsaber, 2016.10.13 07:10 自作の非常に単純なOrderSendオーバーロード:OnTradeが応答を返すまで、後続のOrderSendはすべてfalseを返します。応答が受信されると、強制的にfalseがキャンセルされます。ZY 完全な機能を使用したい場合(SB用ではありません)、対応する同期が到着したときに、OnTrade OnTickとOnTimerを個別に呼び出す必要があります。通常のMT4-Order関数(OrderSend、OrderModify、OrderClose、OrderDelete)を使用する場合は、このMT5の状況を考慮してください。取引注文後の保証された(MT4 のような)履歴同期を、引用のアルゴリズムを使用して自分で MT5 に追加することは可能です。 削除済み 2016.10.15 17:35 #24 アイデアは面白い。しかし、MT4のExpert AdvisorをMT5で変換すると、動作が遅くなります。 fxsaber 2016.10.15 19:08 #25 Aliaksandr Kryvanos: アイデアは面白い。しかし、MT4 Expert AdvisorをMT5上で変換すると、動作が遅い。OrderSelect(index、SELECT_BY_POS、MODE_HISTORY)の実装だけが遅い。もっと速くできるかもしれないが、そうすると、MT4で利用可能で、一部の人が使用している、履歴の特定の並べ替えができなくなる。もしそれを使わなければ、このモードがMT4より遅くならないようにすることは可能だろう。他のすべてが遅くなることはありません。なので、上記のOrderSelectモードを使わないのであれば、MT4Orders以外のブレーキを探してください。時系列やその他のものに関しては、このトピックは説明で強調されており、触れられていません。ほとんどの場合、そこにブレーキがあります。 fxsaber 2016.10.20 08:38 #26 MT5ビルド1455にはバグがあります。ENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN を返します。したがって、OrderModify で COrderInfo::TypeFilling() を使って充填を設定すると、同じ RoboForexEU-MetaTrader 5 上で[Unsupported filling mode] という論理エラーが発生します。しかし、MetaQuotes-Demoではこのエラーは発生しません。開発者のサーバーの設定がおかしいのでしょうか?OrderModifyで未決済注文を変更しようとすると、一部の取引サーバーで[Unsupported filling mode]エラーが発生することがあります。この問題が発生した場合、次の方法でこのバグを回避することができます。MT4Orders.mqhの該当行を探してください。 Request.type_filling = (ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);以下の行に置き換えてください。 Request.symbol = ::OrderGetString(ORDER_SYMBOL); // https://www.mql5.com/ru/forum/1111/page1759#comment_2906850 if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE) Request.type_filling = (ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING); エラー、バグ、質問 取引トランザクション:リクエストとレスポンスの構造体、説明、ロギング MetaTrader 4でMQL5ウィザードの既製エキスパートアドバイザーが機能 fxsaber 2016.10.20 16:01 #27 MT5標準ライブラリ VS クロスプラットフォームMT4-OSS標準ライブラリを 勉強し、テストEAを書きました。#define SLTP (10 * _Point)#include <Trade\Trade.mqh>;#include <Trade\OrderInfo.mqh>// MT5標準ライブラリ経由 - MT5のみ// SellLimitを設定し、SL/TPを設定する。void MT5Order( const double Price ){ CTrade Trade; if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE) Trade.SetTypeFilling(ORDER_FILLING_RETURN); Trade.OrderOpen(_Symbol, ORDER_TYPE_SELL_LIMIT, 1, 0, Price, 0, 0, ORDER_TIME_GTC, 0, __FUNCTION__); const ulong Ticket = Trade.ResultOrder(); if (Ticket > 0) { COrderInfo Order; if (Order.Select(Ticket)) Trade.OrderModify(Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration()); } }#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006// MT4-OSJS経由 - クロスプラットフォーム対応(MT4/5)// SellLimitを設定し、SL/TPを設定する。void MT4Order( const double Price ){ const int Ticket = OrderSend(_Symbol, OP_SELLLIMIT, 1, Price, 0, 0, 0, __FUNCTION__); if ((Ticket > 0) && OrderSelect(Ticket, SELECT_BY_TICKET)) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + SLTP, OrderOpenPrice() - SLTP, OrderExpiration(), clrNONE);}void OnTick(){ static bool FirstRun = true; if (FirstRun) { const double Price = SymbolInfoDouble(_Symbol, SYMBOL_BID) + 100 * _Point; MT5Order(Price); // MT5標準ライブラリ経由 - MT5のみ MT4Order(Price); // MT4-OSJS経由 - クロスプラットフォーム対応(MT4/5) FirstRun = false; }} MT4Order関数とMT5Order関数のコードを比較できます。 エラー、バグ、質問 Errors, bugs, questions RangeBreakout EA 削除済み 2016.10.22 22:48 #28 そうです。パフォーマンスが低下するのは OrdersHistoryTotal() のせいです。 fxsaber 2016.10.22 22:58 #29 Aliaksandr Kryvanos: はい、おっしゃるとおりです。処理が遅いのはOrdersHistoryTotal()のせいです。この関数の高速バージョンを作る価値があるかもしれません。遅くなることなく動作しますが、MT4に100%準拠しているわけではありません。今コードを見てみました。高速化する方法はいくつかあります。例えば、テスターではすべてが単純なので、MT5-historyとの同期について気にする必要はない。しかし、正直なところ、テスターでも実際の取引でも、TSが履歴を分析する必要があるタスクに遭遇したことはない。したがって、そのような加速を行うことはないだろう。 Aleksey Vyazmikin 2016.11.03 12:07 #30 fxsaber:この機能の高速バージョンを作る価値があるかもしれない。遅延なく動作しますが、MT4に100%準拠しているわけではありません。今コードを見てみた。高速化する方法はいくつかあります。例えば、テスターではすべてが単純なので、MT5の履歴との同期については気にする必要はありません。しかし、正直なところ、テスターでも実際の取引でも、TSが履歴を分析する必要があるタスクに遭遇したことはない。そのため、そのような加速をすることはないだろう。私のMMはポジションの クローズとオープンが 行われる状況を取引することを意味し、リスクは状況の始まりからの財務結果を使って考慮されます。このような状況下では、トレンドが確認されることを想像することができます。トレンドが完了するまでの展開はさまざまで、ポジションを開いたり閉じたりします。 12345678910...95 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Wo、そしてfxsaberは、この間違いに気づいたのが私一人であることに腹を立てている。)私たちの仲間はとても観察力が鋭いというだけのことです。
私はウェビナーを行っていて、録画があることを10回繰り返した。最後にもう一度、録画は明日になります、質問があれば聞いてください、と言った。そして今、最初の質問を当てる )))))
取引、自動取引システム、取引戦略のテストに関するフォーラム
MT5でOrderSendを正しく動作させる方法
fxsaber, 2016.10.13 07:10
自作の非常に単純なOrderSendオーバーロード:OnTradeが応答を返すまで、後続のOrderSendはすべてfalseを返します。応答が受信されると、強制的にfalseがキャンセルされます。
ZY 完全な機能を使用したい場合(SB用ではありません)、対応する同期が到着したときに、OnTrade OnTickとOnTimerを個別に呼び出す必要があります。
通常のMT4-Order関数(OrderSend、OrderModify、OrderClose、OrderDelete)を使用する場合は、このMT5の状況を考慮してください。
取引注文後の保証された(MT4 のような)履歴同期を、引用のアルゴリズムを使用して自分で MT5 に追加することは可能です。
アイデアは面白い。しかし、MT4 Expert AdvisorをMT5上で変換すると、動作が遅い。
OrderSelect(index、SELECT_BY_POS、MODE_HISTORY)の実装だけが遅い。もっと速くできるかもしれないが、そうすると、MT4で利用可能で、一部の人が使用している、履歴の特定の並べ替えができなくなる。もしそれを使わなければ、このモードがMT4より遅くならないようにすることは可能だろう。他のすべてが遅くなることはありません。なので、上記のOrderSelectモードを使わないのであれば、MT4Orders以外のブレーキを探してください。
時系列やその他のものに関しては、このトピックは説明で強調されており、触れられていません。ほとんどの場合、そこにブレーキがあります。
ENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN を返します。
したがって、OrderModify で COrderInfo::TypeFilling() を使って充填を設定すると、同じ RoboForexEU-MetaTrader 5 上で[Unsupported filling mode] という論理エラーが発生します。しかし、MetaQuotes-Demoではこのエラーは発生しません。開発者のサーバーの設定がおかしいのでしょうか?
OrderModifyで未決済注文を変更しようとすると、一部の取引サーバーで[Unsupported filling mode]エラーが発生することがあります。
この問題が発生した場合、次の方法でこのバグを回避することができます。
// https://www.mql5.com/ru/forum/1111/page1759#comment_2906850
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Request.type_filling = (ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);
標準ライブラリを 勉強し、テストEAを書きました。
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// MT5標準ライブラリ経由 - MT5のみ
// SellLimitを設定し、SL/TPを設定する。
void MT5Order( const double Price )
{
CTrade Trade;
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Trade.SetTypeFilling(ORDER_FILLING_RETURN);
Trade.OrderOpen(_Symbol, ORDER_TYPE_SELL_LIMIT, 1, 0, Price, 0, 0, ORDER_TIME_GTC, 0, __FUNCTION__);
const ulong Ticket = Trade.ResultOrder();
if (Ticket > 0)
{
COrderInfo Order;
if (Order.Select(Ticket))
Trade.OrderModify(Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
}
}
#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006
// MT4-OSJS経由 - クロスプラットフォーム対応(MT4/5)
// SellLimitを設定し、SL/TPを設定する。
void MT4Order( const double Price )
{
const int Ticket = OrderSend(_Symbol, OP_SELLLIMIT, 1, Price, 0, 0, 0, __FUNCTION__);
if ((Ticket > 0) && OrderSelect(Ticket, SELECT_BY_TICKET))
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + SLTP, OrderOpenPrice() - SLTP, OrderExpiration(), clrNONE);
}
void OnTick()
{
static bool FirstRun = true;
if (FirstRun)
{
const double Price = SymbolInfoDouble(_Symbol, SYMBOL_BID) + 100 * _Point;
MT5Order(Price); // MT5標準ライブラリ経由 - MT5のみ
MT4Order(Price); // MT4-OSJS経由 - クロスプラットフォーム対応(MT4/5)
FirstRun = false;
}
}
MT4Order関数とMT5Order関数のコードを比較できます。
はい、おっしゃるとおりです。処理が遅いのはOrdersHistoryTotal()のせいです。
この関数の高速バージョンを作る価値があるかもしれません。遅くなることなく動作しますが、MT4に100%準拠しているわけではありません。
今コードを見てみました。高速化する方法はいくつかあります。例えば、テスターではすべてが単純なので、MT5-historyとの同期について気にする必要はない。
しかし、正直なところ、テスターでも実際の取引でも、TSが履歴を分析する必要があるタスクに遭遇したことはない。
したがって、そのような加速を行うことはないだろう。
この機能の高速バージョンを作る価値があるかもしれない。遅延なく動作しますが、MT4に100%準拠しているわけではありません。
今コードを見てみた。高速化する方法はいくつかあります。例えば、テスターではすべてが単純なので、MT5の履歴との同期については気にする必要はありません。
しかし、正直なところ、テスターでも実際の取引でも、TSが履歴を分析する必要があるタスクに遭遇したことはない。
そのため、そのような加速をすることはないだろう。
私のMMはポジションの クローズとオープンが 行われる状況を取引することを意味し、リスクは状況の始まりからの財務結果を使って考慮されます。
このような状況下では、トレンドが確認されることを想像することができます。トレンドが完了するまでの展開はさまざまで、ポジションを開いたり閉じたりします。