Типы торговых операций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
ブロックの計算方法に戻る。私は今、次のようなバリエーションを使用しています。基準点は前週の金曜日の終値です。そこから、記事(*1.1)にあるような高さのブロックのセットを過去に構築する(1回!)。最初のポイントから(iATR(sy, PERIOD_M1, 1440) X 5)を最初の高さとした。すぐにStepMax+MAX_STATの長さ(例えば48+1000)のセットを作り、ブロック単位(24から48までとする)で各長さの滑走頻度分布などを計算する。次に、新しいバーごとにフォワード・セットを完成させ、長さの範囲(たとえば)[24;48]ブロックの各Hのシグナルを探し、以前に計算された統計に導かれ、適切なものを選択し、新しいものをオープンし、古いものをクローズ/アップグレードするなどの決定を下す。この方法は計算速度を大幅に向上させ、記事で提案されている方法(小節ごとに「ゼロから」計算する)とあまり変わらないと思う。同時に、いくつかの可能性が追加されます。特に、レベルが週中に変化しない場合、H=180pのシグナルがあれば(例えば)、予想される動きの方向にグリッド注文を置くことができます。
ブロックの計算方法に戻る。私は今、次のようなバリエーションを使用しています。基準点は前週の金曜日の終値です。そこから、記事(*1.1)にあるような高さのブロックのセットを過去に構築する(1回!)。最初のポイントから(iATR(sy, PERIOD_M1, 1440) X 5)を最初の高さとした。すぐにStepMax+MAX_STATの長さ(例えば48+1000)のセットを作り、ブロック単位(24から48までとする)で各長さの滑走頻度分布などを計算する。次に、新しいバーごとにフォワード・セットを完成させ、長さの範囲(たとえば)[24;48]ブロックの各Hのシグナルを探し、以前に計算された統計に導かれ、適切なものを選択し、新しいものをオープンし、古いものをクローズ/アップグレードするなどの決定を下す。この方法は計算速度を大幅に向上させ、記事で提案されている方法(小節ごとに「ゼロから」計算する)とあまり変わらないと思う。同時に、いくつかの可能性が追加されます。特に、週中にレベルが変化しない場合、H=180pのシグナルがあれば(例えば)、予想される動きの方向にグリッド注文を置くことができます。
..Expert Advisor自体で各ペアの基準値を再計算する必要はないと思います。数日間実行するスクリプトを作成し、基準値をファイルに保存し、ロボットにファイルから読み込ませるだけです。1年後に再計算する。このような期間であっても、これらの分布が変わることはまずない。仮に変わったとしても、あまり変わらないだろう......。
むき出しの数学的データはまったく変わらない。私は、これらの計算をキャッシュすることを提案する。私は、これらの階乗、確率、確率の和、計算された平均振幅の計算をしたファイルを添付した。私以外にも役に立つ人がいるかもしれない。だから、たとえ小節ごとであっても、これらの値を計算することはもはやストレスではない。
しかし、過去のブロックを新しいバーごとに、しかもいくつかのブロック・サイズごとに新たに構築するのは......。サイズが大きくなればなるほど、分析に必要なサイズのブロック数を得るためには、より多くのバーを処理しなければならない。
私の意見では、下降バーでは (O->H->L->L->C)、上昇バーでは (O->L->H->H->C) を通過すると仮定する方が、クローズだけを仮定するよりもいくらか有用です。この方法では、もちろん計算回数は(絶対時間では)それほど増えないが、利点もある。たとえば、必要な数の逆方向ブロックをより速く入力できる。また、M1からM5に切り替えた場合、タイピングのイメージはほとんど変わらない。また、M15以上に変更した場合、M5と比較して変化はないか、さらに軽微である。これもまた、パフォーマンス向上の見通しを与えてくれる。フォワード・ブロックを構築する場合、"動きながら "1つの画像を構築し(例えば、ティックで即座に)、再計算時には別の画像を構築することができるため、あまり楽しくはない。フォワード・ブロックが次のバーの終値で描画されることになっているのであれば、OHLC も使用できます。パンダがよく言っていたように、「私はマスターではない」。しかし、私がこの記事に基づいて膝の上で構築したものは、いくつかの最適化(最初のものは統計計算のキャッシュである)の後、おおよそこのような結果を与えてくれる:
- USDJPYのM1通貨、始値で、ブロックのセットは24から40まで、ブロックサイズは90ピップスから、さらに前のものに+10%(最大256ピップス)、合計12のサイズ。
- 1ヶ月の単純取引にかかる時間は平均2.5分で、取引 処理に占める割合はわずか10%です。トレンド検出の要件が厳しければ厳しいほど、オープンのシグナルが検出される頻度は低くなり、ブロックサイズと検索時間が増加する方向にオーバーシュートする。シグナルの頻度が高ければ高いほど、バックブロックの固定と順張りのみの計算の頻度が高くなり、ああ、とてもスピーディーだ。
1ヶ月の計算を2.5分で実行した結果では、ニュアンスを特定したり、いくつかの操作パラメーターを最適化したりするのは難しいが、可能性はある :)
この記事のアイデアは興味深く、単純明快に思える。しかし、ある少女が言ったように、「理解できたかどうかわからなかった」。以上、アイデアそのものやその評価についてではなく、その具体的な実現(もちろん、私自身の理解による不完全なものだが)について述べた。
P.S.そしてそれは、24ブロックでは平均3.8になるのではないかという疑問から始まった :)
素の計算はまったく変わらない。これらの計算をキャッシュすることをお勧めする。私は、これらの階乗、確率、確率の和、平均振幅の計算をしたファイルを添付した。私以外にも役に立つ人がいるかもしれない。だから、たとえ小節ごとであっても、これらの値を計算することはもはやストレスではない。
しかし、過去のブロックを新しいバーごとに、しかもいくつかのブロック・サイズごとに新たに構築するのは......。サイズが大きくなればなるほど、分析に必要なサイズのブロック数を得るためには、より多くのバーを処理しなければならない。
私の意見では、下降バーでは (O->H->L->L->C)、上昇バーでは (O->L->H->H->C) を通過すると仮定する方が、クローズだけを仮定するよりもいくらか有用です。この方法では、もちろん計算回数は(絶対時間では)それほど増えないが、利点もある。たとえば、必要な数の逆方向ブロックをより速く入力できる。また、M1からM5に切り替えた場合、タイピングのイメージはほとんど変わらない。また、M15以上に変更した場合、M5と比較して変化はないか、さらに軽微である。これもまた、パフォーマンス向上の見通しを与えてくれる。フォワード・ブロックを構築する場合、"動きながら "1つの画像を構築し(例えば、ティックで即座に)、再計算時には別の画像を構築することができるため、あまり楽しくはない。フォワード・ブロックが次のバーの終値で描画されることになっているのであれば、OHLC も使用できます。パンダがよく言っていたように、「私はマスターではない」。しかし、私がこの記事に基づいて膝の上で構築したものは、いくつかの最適化(最初のものは統計計算のキャッシュである)の後、おおよそこのような結果を与えてくれる:
- USDJPYのM1通貨、始値で、ブロックのセットは24から40まで、ブロックサイズは90ピップスから、さらに前のものに+10%(最大256ピップス)、合計12のサイズ。
- 暦月の期間では、単純実行に平均2.5分かかり、取引 処理の割合はわずか10%です。トレンド検出の要件が厳しければ厳しいほど、オープンのシグナルが検出される頻度は低くなり、ブロックサイズと検索時間が増加する方向にオーバーシュートする。シグナルの頻度が高ければ高いほど、バックブロックの固定と順張りのみの計算の頻度が高くなり、ああ、とてもスピーディーだ。
1ヶ月の計算を2.5分で実行した結果では、ニュアンスを特定したり、いくつかの操作パラメーターを最適化したりするのは難しいが、可能性はある :)
この記事のアイデアは興味深く、単純明快に思える。しかし、ある少女が言ったように、「わかったようなわからないような...」。以上、アイデアそのものやその評価についてではなく、その具体的な実現(もちろん、私自身の理解による不完全なものだが)について述べた。
P.S.そしてそれは、24ブロックの平均ワンダリングが3.8になるのではないかという疑問から始まった :)
はい、私の計算は実行時にキャッシュされます。テストはとても長いんだ。年明け前に、次の記事のためのテストを準備していた。テスターはシングルスレッドなので、テストを2年分(28通貨ペア)に分割し、5つの端末をロードしました。14日間テストした後、ルーターが故障し、直接ケーブルでインターネットに接続し始めたら、すべてのテスターで送信エラー10054が発生した......。というわけで、次の記事はまだ先です。ところで、送信 エラー10054が どのようなエラーで、今後どのように回避すればいいのか、 ご存知の方はいらっしゃいますか?
まだ全ては記事に書かれていません。ほぼ全てはToRに書かれていますが、そこにも全ては書かれていません))。今はもっといいバージョンを作っているところだ。
ところで、図3.8についての疑問はどのようにして消えたのだろうか?)
とりあえず、2010.06.25から2012.02.27までの1.5年間の結果を書いておきます。パラメーターはすべて同じです。
ところで、10054の送信 エラーとはどのようなエラーなのか、また今後どのように回避すればよいのか、 ご存知の方はいらっしゃいますか?
ところで、3,8という数字が消えたのはどういうことなのだろう?)疑問は消えました、数学です。
と10054は、ネットワーク接続の喪失によるネットワーク・プロトコル・エラーと思われる。プラグを挿し直したことは関係ない。この問題は通常、ネットワークカードからリンクを抜いた(またはルーターを外した)ときに多くのプログラムで現れます。この場合(特にdhcpによるipを受信した場合)、Windowsはもはや動作するネットワークデバイスがないと考え始めるので、ネットワークサービスはめちゃくちゃになる。同時に、例えばローカルアドレス127.0.0.1へのネットワーク接続を介してローカルで実行されているプログラムも壊れてしまう。
仮想ネットワークデバイス(ループバック、ググってみてください)を作成し、そこに127.0.1.1のようなIPアドレスを割り当て、hostsに自分のPCの名前とこのアドレスを書き込みました。その結果、システムには常にアクティブなネットワーク・デバイスが存在し、PCは名前とこのアドレスで利用可能で、ネットワーク・サービスが開始され、tcp/ip経由で自分自身と通信するプログラムも利用できることがわかった。
まあ、私はいつもipv6も無効にしている。
繰り返しになるが、長い間この現象に気づかなかったのは、常に接続しているか、どこかで何かが変わったか、どちらかだ。疑念は消えたよ、数学。
と10054は、おそらくネットワーク接続の喪失によるネットワークプロトコルエラーであろう。プラグが差し込まれているかどうかは関係ない。この問題は通常、ネットワークカードからリンクを抜いたとき(またはルーターを外したとき)に多くのプログラムで現れます。この場合(特にdhcpによるipを受信した場合)、Windowsはもはや動作するネットワークデバイスがないと考え始めるので、ネットワークサービスはめちゃくちゃになる。同時に、例えばローカルアドレス127.0.0.1へのネットワーク接続を介してローカルで実行されているプログラムも壊れてしまう。
仮想ネットワークデバイス(ループバック、ググってみてください)を作成し、そこに127.0.1.1のようなIPアドレスを割り当て、hostsに自分のPCの名前とこのアドレスを書き込みました。その結果、システムには常にアクティブなネットワーク・デバイスが存在し、PCは名前とこのアドレスで利用可能で、ネットワーク・サービスが開始され、tcp/ip経由で自分自身と通信するプログラムも利用できることがわかった。
まあ、私はいつもipv6も無効にしている。
また、私は長い間これをキャッチしていない、私は常に接続されているか、何かがどこかで変更されているかのいずれか...ああ、ありがとう.うっかりネットワークカードを外してしまったんだ。そこでワインドアップがパニックになって、テスターが止まったんだと思う。ありがとう!
MT5 EAのサンプルを添付してください。
MT5 EAのサンプルを添付してください。
このアルゴリズムはパブリックドメインでは配布されていませんが、次の記事ではバックテストの 例を使ってどのように機能するかを紹介します。
ご挨拶
いくつかの考えとその結果。少し長い。
ブロック偏差の分析には2つのアプローチがある:グラフがランダムウォークである-統計関数(階乗など)を使うか、グラフがまったくランダムでない動きである-過去の動きに関する統計データを使うか。ブロック・チャートの形成を長い間観察している人なら、チャートが最初の構築ポイントに依存していることに気づいているだろう。各ローソク足の始値でチャートを構築すると、N本目のローソク足とN+1本目のローソク足では若干異なるチャートになります。したがって、過去のブロックの統計データを作成するには、ローソク足の始値ごとに作成する方法と、定期的に作成する方法があります。各バーですべてを再計算するアプローチは可能ですが、それは非常に遅いです。
私は、テスターで何かをピックアップ/テストするために、このオプションに絶望し、私はすべての推測または最適なパラメータをデモ、オンラインでテストし、オンラインでもエクイティ/バランスチャートで結果を制御しました。これらの短い期間(2001年1月21日から現在までの 最後の期間)において、アルゴリズムは(私が理解し実装したように)非常に安定していると言わなければなりません。ちなみに私は、すべてのバーでシグナルが出たときにオープンするのではなく、新しいシグナルが出たときにオープンしています(つまり、Hブロック150pで買いシグナルが出たので買い、次はH=165の買いでオープンし、それがマイナスになったらオープンしています)。ポジティブな展開では、ワンダリングの不均衡がそれぞれ減少し、シグナルが消えるため)、8つのデモ口座のうち1つだけ、非常にアグレッシブな設定で、$ 1000のバランスとレバレッジ1:1000で、48通貨ペア、金属、2つのオイルを使用し、通貨のヘッジ(「ヘッジ」)のコントロールなしで、ストップアウトに行きました。- あなたがUSDJPYを買うとき、あなたはUSDCADを購入することはできませんが、あなたはシンボルのセット全体でEURUSDなどを購入することができ、記事を持っている)、取引に割り当てられた$ 10、ロット適応、ブロックのサイズに依存し、シンボル上のトランザクションの合計またはすべてのオープンシンボルの利益の合計に蓄積された利益だけで終了します。
安定はしているが、ドローダウンは大きい。我々は "間違った方向に "行き、マイナスであることを、ポジションを構築し続けるとき、それは理解できる。しかし、あまり積極的な設定は、はい、他のアカウントを殺すことはありませんでした。
ブロックの計算方法に戻る。私は今、次のようなバリエーションを使用しています。基準点は前週の金曜日の終値です。そこから、記事(*1.1)にあるような高さのブロックのセットを過去に構築する(1回!)。最初のポイントから(iATR(sy, PERIOD_M1, 1440) X 5)を最初の高さとした。すぐにStepMax+MAX_STATの長さ(例えば48+1000)のセットを作り、ブロック単位(24から48までとする)で各長さの滑走頻度分布などを計算する。次に、新しいバーごとにフォワード・セットを完成させ、長さの範囲(たとえば)[24;48]ブロックの各Hのシグナルを探し、以前に計算された統計に導かれ、適切なものを選択し、新しいものをオープンし、古いものをクローズ/アップグレードするなどの決定を下す。この方法は計算速度を大幅に向上させ、記事で提案されている方法(小節ごとに「ゼロから」計算する)とあまり変わらないと思う。同時に、いくつかの可能性が追加されます。特に、レベルが週中に変化しない場合、H=180pのシグナルがあれば(例えば)、予想される動きの方向にグリッド注文を置くことができます。
さらに。このアプローチでは、純粋な統計ではなく、特定のシンボルとブロック・サイズで特定の分布と期待値を測定することができました。これにより、「純粋なワンダリング」と比べて結果が若干改善された。同時に、我々はmodulo(statfunctionsでも私はmoduloの移動の長さを使用し、ランダムウォークは、一般的に、ゼロについて対称であることが理解できる)の放浪の長さのデータを収集しました。1000個というサンプルサイズは、どちらかというと条件付きで「統計的に信頼できる」と言えることを別途記しておくが、そういう問題ではない。
さて、次に私は、ブロック内の走行距離の長さの分布を、その符号(上か下か)を考慮して集めてみた。そして結果は悪化した。予想外だった。
私はシンボルのセット「28メジャー」と各メジャーのセット(*AUD*など)でチェックした。これはすでにMT5にある。さまざまな期間、ブロック構築のパラメータ、入出力のさまざまなニュアンスをチェックした......。
入手可能な結果によると)一般的な結論は、ブロック内の動きの長さの方向を考慮に入れると、システムの効率が低下するということです。どなたか説明してくださる方がいれば、何をどのように説明してくださるとうれしいです。また、同じような経験をお持ちの方で、逆の結果を出された方がいらっしゃいましたら、喜んで議論し、比較したいと思います。
ご挨拶を。
いくつかの考えとその結果。少し長い。
ブロック偏差の分析には2つのアプローチがある:グラフがランダムウォークである-統計関数(階乗などに関する)を使うか、グラフがまったくランダムでない動きである-過去の動きに関する統計データを使うか。ブロック・チャートの形成を長い間観察している人なら、チャートが最初の構築ポイントに依存していることに気づいているだろう。各ローソク足の始値でチャートを構築すると、N本目のローソク足とN+1本目のローソク足では若干異なるチャートになります。したがって、過去のブロックの統計データを作成するには、ローソク足の始値ごとに作成する方法と、定期的に作成する方法があります。各バーですべてを再計算する方法は可能ですが、非常に時間がかかります。
私は、テスターで何かをピックアップ/テストするために、このオプションに絶望し、私はすべての推測または最適なパラメータをデモ、オンラインでテストし、オンラインでも株式/バランスチャートで結果を制御しました。これらの短い期間(2001年1月21日から現在までの 最後の期間)において、アルゴリズムは(私が理解し実装したように)非常に安定していると言わなければなりません。ちなみに私は、各バーでシグナルが出たらオープンするのではなく、新しいシグナルが出たらオープンするようにしています(つまり、Hブロック150pで買いシグナルが出たので買い、次はH=165の買いでオープンし、それがマイナスになったらオープンするようにしています)。ポジティブな展開では、ワンダリングの不均衡がそれぞれ減少し、シグナルが消えるため)、8つのデモ口座のうち1つだけ、非常にアグレッシブな設定で、$ 1000のバランスとレバレッジ1:1000で、48通貨ペア、金属、2つのオイルを使用し、通貨のヘッジ(「ヘッジ」)のコントロールなしで、ストップアウトに行きました。- あなたはUSDJPYを購入するときは、USDCADを購入することはできませんが、あなたはシンボルのセット全体でEURUSDなどを購入することができ、記事は持っている)、取引に10ドル、ロットの適応を割り当て、ブロックのサイズに依存し、シンボル上のトランザクションの合計またはすべてのオープンシンボルの利益の合計に蓄積された利益だけで終了します。
安定はしているが、ドローダウンは大きい。我々は "間違った方向に "行き、マイナスであることを、ポジションを構築し続けるとき、それは理解できる。しかし、あまり積極的な設定は、はい、他のアカウントを殺すことはありませんでした。
ブロックの計算方法に戻る。私は今、次のようなバリエーションを使用しています。基準点は前週の金曜日の終値です。そこから、記事(*1.1)にあるような高さのブロックのセットを過去に構築する(1回!)。最初のポイントから(iATR(sy, PERIOD_M1, 1440) X 5)を最初の高さとした。すぐにStepMax+MAX_STATの長さ(例えば48+1000)のセットを作り、ブロック単位(24から48までとする)で各長さの滑走頻度分布などを計算する。次に、新しいバーごとにフォワード・セットを完成させ、長さの範囲(たとえば)[24;48]ブロックの各Hのシグナルを探し、以前に計算された統計に導かれ、適切なものを選択し、新しいものをオープンし、古いものをクローズ/アップグレードするなどの決定を下す。この方法は計算速度を大幅に向上させ、記事で提案されている方法(小節ごとに「ゼロから」計算する)とあまり変わらないと思う。同時に、いくつかの可能性が追加されます。特に、週中にレベルが変化しない場合、H=180pのシグナルがあれば(例えば)、予想される動きの方向にグリッド注文を置くことができます。
さらに。このアプローチでは、純粋な統計ではなく、特定のシンボルとブロック・サイズで特定の分布と期待値を測定することができました。これにより、「純粋なワンダリング」と比べて結果が若干改善された。同時に、モジュロ徘徊の長さに関するデータも収集しました(statfunctionsでもモジュロ移動の長さを使いましたが、一般的にランダムウォークはゼロについて対称であることが理解できます)。1000個というサンプルサイズは、むしろ条件付きで「統計的に信頼できる」と言えることを別に記しておきたいが、問題はそこではない。
さて、次に私は、ブロック内の走行距離の長さの分布を、その符号(上か下か)を考慮して集めてみた。そして結果は悪化した。予想外だった。
私はシンボルのセット「28メジャー」と各メジャーのセット(*AUD*など)でチェックした。これはすでにMT5にある。異なる期間、ブロック構築のパラメータ、入出力のさまざまなニュアンス......をチェックした。
入手可能な結果によると)一般的な結論は、ブロック内の動きの長さの方向を考慮に入れると、システムの効率が低下するということです。どなたか説明できる方がいれば、何をどのように説明していただけるとうれしいです。また、同じような経験をお持ちの方で、逆の結果を出された方がいらっしゃいましたら、喜んで議論し、比較したいと思います。
そうです、チャートは構築の初期点に依存します。これは2つの理由で意図的に行われており、ブロックの助けを借りて価格の丸め誤差にもかかわらず、アルゴリズムが最大スケールをよりよく見つけるためと、2つ目の理由は、歴史へのフィッティングを避けるためです。開始点によってチャートが変化する場合、アルゴリズム自体の品質をより正確に評価することができます。
テスターで私はテストし、それがどのように動作するかの多くのテストを次の記事で表示されます。デモでは長くて参考にならない。28通貨ペアで1年間のテストは私に15日かかります(Ryzen 3700)。説明されている方法では、リターンは大きくありませんが、バックテストは非常に安定しています。私は今アルゴリズムを改良しています。
このツールの統計的特性には特徴があります。統計的な特徴を把握し、それに基づいてアウトパフォームの割合を調整することはできますが、商品全体の特徴を評価するためには、大きなサンプル値を使用する必要があります。局所的な乖離は捉えることができるが、それは別の目的のためである。私がテストしたところ、ロング・ポジションとショート・ポジションで別々のオーバーウェイト・パラメータが株式ではうまく機能しました。つまり、非対称性が考慮されると、より良くなります。これについても、次の記事で簡単に示します。
最初のブロックサイズも、現在の市場状況に合わせて調整する必要がある。私は当初、ボラティリティによってそれを作ったが、今は市場の特殊性を考慮して作り直している。
しかし、まず基本的なアルゴリズムを作り、それを統計でカバーするというアイデアだ。統計はそのままでは測定できません。大きな窓で統計的特性を測定し、ランダム・ウォークから外れた場合は将来的にその傾向になることを考慮する必要があり、事前に最適でないパラメータを使用する必要があります。そして、統計はむき出しではなく、理論を考慮したものでなければならないが、理論については証明しなかったので書かなかったし、証明されていないことを書くのは好きではない。
一般的に、アルゴリズムはビレットであり、現段階では、そのタスクは何かを排出し、稼ぐことではない。
素晴らしい仕事だ、
ありがとう!