私たちのファンページに参加してください
Virtual - MetaTrader 5のためのライブラリ
- ビュー:
- 1379
- 評価:
- パブリッシュ済み:
- 2019.01.07 07:07
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このクロスプラット フォームは、最も簡単な方法で仮想トレード環境の操作をすることができます。
仮想トレード環境を使用するシナリオ
- リアルタイムテスター. これはつまり、リアルタイムでテスターで最近の価格を用いてEAのトレードを観察できるということです。 これにより、実際の相場とテスター間の不一致の原因を特定することができます。 ニューデイ (MetaTrader5 テスター制限) を待ったり、特別なツールを作成する必要はありません。最近のデータを拾うことができます。 したがって、更新を得るために繰り返しテスターを実行する必要はありません。 実際には、仮想のトレード環境は、リアルタイム テスターです。
- 自動最適化 仮想トレード環境では、ともに動作するものを定義する必要があります。 したがって、ヒストリーデータの配列では、仮想トレード環境内で任意の TS を実行することができます。 したがって、プログラムへの自動最適化を実装することができます。プログラムは定期的に従来のテスターのような最適化をします。
- リアルトレードを仮想トレードに変える(逆もあり) たとえば、損失の場合 TS を一時的に無効にします。 TS を再度有効にするには、テスターや最小ロットをトレードすることによって分析できます。 代わりに、仮想環境では、仮想のトレード環境でトレードを継続しながら、リアルタイムでトレードをストップできます。 TSと再トレードを有効にする機能を再度有効にするべきか分析する際に利便性を発揮します。
- 稼働中のアカウントでトレードロジックをシンプルにする 相場は、テスターには存在しない状況を作り出します。 これには約定拒否や部分的な約定が含まれます。 最大の問題は、実際の取引可能なテスターで TS によって実行されるものと同様です。 一般的には、TS の開発者は、相場の雰囲気を予見することに多大な努力を費やします。 実際には、デモ口座では実際の相場のすべてをエミュレートすることができないので、過ちを犯し、リアルマネーを浪費します。 仮想環境では、代わりに、完璧な実行を見て取れます。 したがって、実際の相場の落とし穴を回避するためには、現実の仮想環境からこの完璧で高品質のシンクロナイザー (コピー サービス) へのアクセスをする必要があります。 したがって、実際の相場における困難な状況を扱う場合、仮想トレード環境は大きな助けになります。
- テスターアクセレレーション 組み込みテスターは、ユニバーサルツールです。 これは、できるだけ完全にトレード環境をエミュレートする必要があることを意味します。 これは、操作速度の影響により、高いコストを伴います。 TSを開発・分析する際、このような高精度は必然です。 テスターを加速させるにはさまざまな方法があります。これにはカスタムシンボルや仮想トレード環境を含み、スピードを犠牲にする必要はありません。 テスターの加速は、仮想トレード環境の利点であり、コンピューティングリソース、時間を節約します。
- TS反転 仮想トレード環境は、任意の TS を反転させることができます。
- ネットのアカウントで複数の TS を使用します。仮想トレード環境はかなり任意の数のネットアカウントで TS を起動を簡略化します。 TS はお互いに干渉しません。
- ネットアカウントの単一方向のポジション 1 つの方向のポジションを開くことができます。 それぞれに、Magic、OpenTime、OpenPrice、Commentなどがあります。 ネットアカウントでグリッド TS を作成することにより、一方向ポジションの各TPが異なります。
- Limit/Stop/SL/TPlevelsを隠す. トレードの重要なレベルを非表示にするタスクがある場合、仮想トレード環境を使用します。
- ネットアカウントでヘッジTSを起動 すべての TS は、ヘッジ仮想環境で起動されます。 ネッティングリアル環境を仮想環境と同期します。
- (異常な)ストップ後のTSオペレーションの再開 多くの TS のロジックは、前にあったものに依存します。 これが、たとえTSを無効にしてすぐに再起動した場合でも、TSをシャットダウンせずに得られた結果を得られない理由です。 仮想トレード環境では、このタスクを解決することができます。 起動すると、TS は、一時的に現在の瞬間までの価格ヒストリーの仮想環境で実行します。 実際の環境を完全にトレードに移行されます。 たとえば、 TS のシャット ダウンと再起動を含む多くの異常な状況を解決する可能性があります。
実装
このライブラリでは、あたかも実際のトレード環境に仮想トレード環境を作成することができます。 提供されたクロスプラット フォームライブラリは重要なプロパティがありますが、このライブラリ関数は新しくありません。そのため、使用法を勉強する必要はありません。 MetaTrader4 の(MetaTrader5ではありません) トレードロジックで十分です。
MetaTrader4 のトレードロジックは、より使いやすく、クロスプラット フォームのEAを開発できるので、仮想トレードに選ばれました。
例
このライブラリ関数は、事前に準備された例によって伝統的に発揮できます。
// Launching TS in real and virtual trading environments #include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006 #include <fxsaber\Virtual\Virtual.mqh> // Virtual trading environment input double Lots = 1; input int Interval = 100; // Position lifetime input bool Example = true; // What code example to select // Reversal TS void System() { if (!OrderSelect(OrdersTotal() - 1, SELECT_BY_POS)) OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 100, 0, 0); // If there is no position, open one else if (TimeCurrent() - OrderOpenTime() > Interval) // If the position lifetime exceeds the specified time { // Reverse the position OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100); OrderSend(_Symbol, 1 - OrderType(), Lots, OrderClosePrice(), 100, 0, 0); } } void OnTick() { static const int handle = VIRTUAL::Create(); // Virtual trading environment handle created. 0 - real trading environment if (Example) { if (VIRTUAL::SelectByHandle()) // Real trading environment selected System(); // Launching TS on a selected trading environment (real) if (VIRTUAL::SelectByHandle(handle)) // Virtual trading environment selected { VIRTUAL::NewTick(); // Added tick to the virtual trading environment System(); // Launching TS on a selected trading environment (virtual) } } else // Alternative fixation of the same actions. // Move along all existing trading environments for (int i = 0; i <= VIRTUAL::Total(); i++) if (VIRTUAL::SelectByIndex(i)) // Selected appropriate trading environment { VIRTUAL::NewTick(); // Added tick to a selected trading environment System(); // Launching TS on a selected trading environment } Comment(VIRTUAL::ToString()); // Display the status of the virtual trading environment on the chart }
これが、クロスプラット フォーム反転EAです。 MetaTrader4スタイルのおかげで、わずかな文字 (System 関数) でトレードロジックを記述できます。 このEAは、現実トレード環境と仮想トレード環境で 同時に起動します。 これは、MetaTrader4 や MetaTrader5 テスター (CTRL + F5) で見ることができます。
このスクリーン ショットは、リアル環境とバーチャル環境でトレードが同じであることを示します。
TS コードは変わりません。 トレード環境だけが選択されています。
ここに表示されるコードは冗長です。 2 つのバージョンは、ライブラリを操作のロジックを表示します。
テスターの加速
テスターの加速シナリオ (p 5) が他のものより多く必要なので、仮想環境とコードの先頭の 2 つの文字列を追加することによって、任意の TS を切り替える関数を追加しました。
#define VIRTUAL_TESTER // Launch in the virtual trading environment #include <fxsaber\Virtual\Virtual.mqh> // Virtual trading environment
強調表示された文字列は、TS の元のコードに干渉しないようにできます。
このモードは、テスター用にしました。 リアル環境の代わりに仮想環境を有効にした状態で (VirtualTester = true) 長期的な最適化が開始されたことを表します。 最適化の速度 (時間) の大幅な向上がみられます。 得られた結果(OnTester criterion - Balance)は、実際の取引環境で標準的な実行ができます (VirtualTester = false)。
TS 反転
テスターの加速を意図した同じの 2 つの文字列は、別の一般的な問題 - TS 反転を解決することができます。
ReverseDEAls = trueモードは、取引の反転ができます。 内部のアルゴリズムは次のとおりです。
- 元のEAはまるでリアル環境のように、仮想環境内でトレードされています。
- リアル環境ではポジションがあり、これはバーチャル環境と逆向きです。
したがって、EAのロジックはどのような方法でも違反していません。 同時に、TS 反転を見ることができます。 このモードは、テスターにもあります。
特徴
- 組み込みのテスターと比較すると、この仮想トレード環境にはすべて実装されている訳ではありません。
- ヘッジファンド/ネットモードの両方がサポートされています。 たとえば、MetaTrader4/5で同時にネット/ヘッジ仮想環境を作成できます。
- 仮想環境の数に制限はありません。
- MT5テスターではたびたび起こりますが、直前の価格では注文は実行されません。
- 指値オーダーとテイクプロフィットレベルは、スリッページなしで指定された価格で常に実行されます。 これはMetaTrader5 テスターによって作られた聖杯を排除します。
- ストップオーダー、StopLoss レベルは最初の価格 (ネガティブなスリッページ) で常に実行されます。
- 現在の価格での予約注文とSL/TPの設定は、同時に実行されます。これはMT5テスターの実行モードとは異なります。 このような動作は、現実の相場に則しています。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/22577
MAMy v.3 インジケータベースのEA
TrendLinEAlert_V2このインジケータには、スロープトレンド ラインが表示されます。 そのパラメータは、トレーダーによってインジケータが起動されるときに設定されます。 トレンド ラインは、シグナルトリガー レベルを定義します。 トレンド ラインのブレイクスルーのメールとプッシュ通知を伴うシグナルをアクティブにします。