記事「リプレイシステムの開発 - 市場シミュレーション(第23回)FOREX (IV)」についてのディスカッション

 

新しい記事「リプレイシステムの開発 - 市場シミュレーション(第23回)FOREX (IV)」はパブリッシュされました:

これで、ティックをバーに変換したのと同じ時点で作成がおこなわれます。こうすることで、変換プロセス中に問題が発生した場合、すぐにエラーに気づくことができます。これは、早送り中にチャート上に1分足を配置するコードと同じコードが、通常のパフォーマンス中に足を配置する位置決めシステムにも使用されるためです。言い換えれば、このタスクを担当するコードは他の場所には複製されません。このようにして、メンテナンスと改善の両方においてはるかに優れたシステムが得られます。

前回の「リプレイシステムの開発 - 市場シミュレーション(第22回):FOREX (III)」稿では、シミュレーターがLast値だけではなくBid価格に基づいて情報を生成できるように、システムにいくつかの変更を加えました。しかし、私はこれらの変更では満足できませんでした。理由は簡単です。コードが重複しているため、これは私にはまったく適していません。


ただ、記事用のコードができていて、記事もほぼ完成していたので、そのまま放置していたのですが、これがすごく気になりました。コードが、ある状況では機能し、他の状況では機能しないのはおかしいです。コードをデバッグしてエラーの原因を探し出そうとしても、見つけることができませんでした。しかし、コードをしばらく放置してシステムフローチャートを確認した後(そう、コーディングを高速化するには常にフローチャートを使用するように努めるべきです)、コードの重複を避けるためにいくつかの変更を加えることができることに気づきました。さらに悪いことに、コードは実際に重複していました。これにより、解決できない問題が発生しました。しかし、解決策はあります。この問題の解決策からこの記事を始めます。この問題が存在すると、FOREX市場データを操作するシミュレーターコードを正しく作成できなくなる可能性があるからです。

作者: Daniel Jose

 

こんにちは、親愛なるダニエル、

あなたが設計したこの素晴らしいシステム、おめでとうございます。

私はあなたのシステムをテストしている間にいくつかの問題に遭遇しました。

まず、1ヶ月分のティックデータを保存し、リプレイに使用しました。しかし、1ヶ月のリプレイの1分TimeFrameで、スライダー上のピンの変化で、表示されるローソク足の数がスライダー上のピンの位置と一致しません。私はピンを最後まで持って行きましたが、ローソク足はわずかな数の 1分足(約20本)しか繰り返していません。

もうひとつは、Strategy Testerのようにバーが動くように、つまりピンの位置がバーの表示速度を表すように、あるいはTradingViewのウェブサイトのようにバーごとに動くように、このシステムを変更する必要があるということです。御社のシステムはこのように変更できるようになっているのでしょうか?

ご教示いただければ幸いです。

よろしくお願いいたします、

ファイル:
Part_23.gif  811 kb
 
Philip Tweens な数の 1分足(約20本)しか繰り返し表示されません。

もうひとつは、Strategy Testerのようにバーが動くように、つまりピンの位置がバーの表示速度を表すように、あるいはTradingViewのウェブサイトのようにバーごとに動くように、このシステムを変更する必要があるということです。御社のシステムはこのように変更できるのですか?

ご教示いただければ幸いです。

よろしくお願いいたします、

さて、JACKさんらしく、部分的に行きましょう...😁👍。

このアプリケーションについて、非常に迷っているというか、そもそもこのアプリケーションが意図していないことに使われることを期待しているかもしれません。攻略テスターなど、特に何かに使えないとは言いません。しかし、それは導入の当初の目的ではなかった。

最初の質問について:リプレイ/シミュレーションがどのように行われるかをよく理解していないかもしれません。スライダーのことは少し忘れてください。システムを再生すると、読み込まれたデータをティックまたはバーとして取得し、1分の時間を基準にグラフ上にバーとして表示します。これは、使用したいチャート時間に関係ありません。そのため、ファイル内のデータは1分間のバーとして考える必要がある。ファイル内のデータを個々のデータとして見るべきではありません。このアプリケーションはそのように見ません。たとえ2時間足であっても、常に1分足として解釈します。常に です。

バーを使用している場合、アプリケーションは自動的にこのことに気づき、各バーが約1分の長さになるようにシミュレーションを作成します。グラフ上に値が正しくプロットされるために必要な目盛り数を作成します。ファイルのデータが目盛りの場合、システムはそれぞれの目盛りの間に定義されたおおよその間隔で起動します。この間隔は数ミリ秒から数時間まで様々です。しかし、こうすることで、この間隔にあるものはオークションまたは取引停止として扱われます。したがって、1日または24時間以上のインターバルを持つデータを使用する場合、アプリケーションはバーを正しく認識できない可能性が高くなります。スライダーを使用して新しい調査ポイントを検索する場合も同様です。このため、1日以上のタイムスパンのデータを使用することは避けるべきです。

このアプリケーションは、リアルタイムに相当する時間で使用するように設計されていることを忘れないでください。つまり、短い期間です。調査に長い期間を入力するには多くのバーをプロットする必要がある平均やインディケータを使用する必要がある場合。リプレイやシミュレータでデータを使用してはならない。前のバーとして使用する必要があります。これが、あなたが理解すべき最初のポイントです。

つ目の質問について:あなたは、スライダーが特定のポイントを検索すると想像しています。確かにそうですが、あなたが望む、あるいは想像する方法ではありません。これをよりよく理解するために、スライダーが実装された以前の記事を見てください。そこでは、スライダーが実際にどのように特定の位置を検索するのかが詳しく説明されています。しかし、この質問では、コントロールの使い方を混同しています。また、棒グラフをプロットする速度を変更するために使用されるかもしれないという考えも提起されています。そのようなことは全くありません。コントローラーをドラッグして再生ボタンを押すと、プロットが高速で行われます。これはアプリケーションが作り出した錯覚です。シミュレーションやリプレイの開始を指示した時点までのバーがどのように作成されたかを示し、研究を実行できるようにするためです。

私からの提案:これまでの記事をよく読み、質問があればコメントとして投稿してください。そうすることで、何が実際に起こっているのか、どのようにすれば良いユーザーエクスペリエンスでアプリケーションを使うことができるのかを、より簡単に理解することができます。何か質問があれば、コメント欄で尋ねてください ...😁👍

 
daniel jose # :

よし、JACKの言うように分解してみよう...😁👍。

おそらく、このアプリケーションについて非常に混乱しているというか、このアプリケーションが、実際には原則的に使用されることを意図していない何かに役立つようになることを期待しているのでしょう。例えば戦略テスターのような、特別な何かに使えないとは言いません。しかし、これは実装された当初の目的ではありませんでした。

最初の質問について:リプレイやシミュレーションがどのように行われるのか、よく理解されていないようですね。スライダーのことは少し忘れてください。システム上で再生を押すと、読み込まれたデータがティックまたはバーとしてフェッチされ、チャート上にバーとして表示されます。これは使用するタイムフレームとは無関係です。このため、ファイル内にあるはずのデータは、1分間のバーとして考えなければなりません。ファイルデータを個々のデータとして見てはいけません。なぜなら、このアプリケーションはそのように見ていないからです。2時間足であっても、常に1分足として解釈します。 常に

バーを使用している場合、アプリケーションは自動的にこのことに気づき、それぞれのバーが約1分の長さになるようにシミュレーションを作成します。値がチャートに正しくプロットされるために必要な目盛りの数を作成します。ファイルに存在するデータが目盛りの場合、システムはそれぞれの目盛りを、目盛りの間に定義されたおおよその間隔で記録します。これを理解するには、以前の記事を参照してください。このような間隔は、数ミリ秒から数時間までさまざまである。しかし、こうすることで、範囲内にあるものはすべて、オークションまたは取引保留として扱われます。したがって、1日以上、つまり24時間以上の間隔でデータを使用すると、アプリケーションはバーを正しく認識できない可能性が高くなります。これは、スライダーを使って新しい調査ポイントを探す場合です。したがって、1日以上の時間を持つデータの使用は避けるべきである。

このアプリケーションは、リアルタイムに相当する時間で使用されることを想定していることを忘れないでください。つまり、短い期間である。調査に長い期間を入力すること。多くのバーをプロットする必要がある平均やインディケータを使用する必要がある場合。リプレイやシミュレータでデータを 使用してはならない 。プレバーとして配置する必要があります。これが、あなたが理解すべき最初のポイントです。

つ目の質問について:あなたは、スライダーが特定のポイントを探すと想像しています。確かにそうですが、あなたが望んだり想像したりする方法ではありません。よりよく理解するために、このコントロールが実装された以前の記事を見てください。そこでは、スライダーが実際にどのように特定の位置を探すのかが詳しく説明されています。しかし、この同じ質問において、あなたはコントロールの使い方を混同している。あなたはまた、棒グラフをプロットする際のスピードを変更するのに役立つかもしれないという考えを提起しているからです。これは実際にはまったく起こりません。コントロールをドラッグして再生ボタンを押すと、このようなプロットが高速で表示されます。これはアプリケーションが作り出した錯覚です。シミュレーションまたはリプレイを開始するように指示した時点まで、バーがどのように作成されたかを示すために、

私からの提案は、これまでの記事を落ち着いて読み、疑問があればコメントとして投稿することです。そうすれば、実際に何が起きているのか、どのようにアプリケーションを使えば良いユーザーエクスペリエンスが得られるのかを理解しやすくなるからです。どんな質問でもコメントでどうぞ。😁👍

私の言っている意味が理解できていないと思うし、私の表現が悪かったのかもしれない。
スライダーの機能は理解しています。リプレイに1ヶ月間(約20日間)データを入れました。しかし、ピンをスライダーの端に近づけたのですが、最初の日に数本のバーしか描画されませんでした。何か間違っているのだろうか?日以上のデータを使わないというお話のせいだと想像しています。
バーの表示速度についてですが、このようにシステムを変更するにはどうしたらよいか、アドバイスいただければと思います。
ご回答ありがとうございました。
 
Philip Tweens #:
私の言っていることが理解できなかったようだし、私の表現が悪かったのかもしれない。
スライダーの機能は理解している。Replayに1ヶ月間(約20日間)データを入れました。しかし、ピンをスライダーの端に近づけたのですが、最初の日に数本のバーしか描画されませんでした。何か間違っているのだろうか?日以上のデータは使わないというお話のせいだと想像しています。
バーの表示速度についてですが、このようにシステムを変更する方法についてアドバイスをお願いします。
ご回答ありがとうございました。

スピードを変えるのはとても簡単です。C_Replay クラスでLoopEventOnTime 関数を探してください。そこにSleep 呼び出しがあります。これがプレイモード時のプロットスピードをコントロールする場所です。しかし、これは以前の記事で十分に説明されていると思います。

 
Daniel Jose #:

スピードを変えるのはとても簡単だ。C_Replay クラスでLoopEventOnTime 関数を探すだけだ。そこにSleep 呼び出しがある。ここでプレイモード時のプロットスピードをコントロールする。しかし、これは以前の記事で十分に説明されていると思う。

そうではなく、スライダーの動作を変えたいのです。ピンの位置が特定のポイントの位置と等しくなる代わりに、長い時間のリプレイでバーが表示されるスピードを表します。ストラテジーテスターで見るのと同様です。
ありがとうございました。