注意!最初のバッファ (Mode 0) を他の2つのバッファと比較して、それが High Point か Low Point かを判断する必要があります (たとえば、バッファ 1 とバッファ 3 が同じ値ならそれは Low ZigZag ポイントであり、バッファ 1 とバッファ 2 が同じ値ならそれは High Point となります)。
if( dblZigZagPoint > 0 ) // Test if a ZigZag Point is found
{
intZZCount++; // Increment ZigZag Counter// Test if it is a High, Low or Unknownstring strZZType = strZZUnknown;
if( dblZigZagHigh > 0 ) strZZType = strZZHigh;
elseif( dblZigZagLow > 0 ) strZZType = strZZLow;
// Output the ZigZag Point Data to CSV File
FileWrite( intCSVFileHandle, intZZCount, strZZType, DoubleToString( dblZigZagPoint, intDigits ), Time[ intBarShift ] );
}
以前の記事で説明したように、ZigZagのポイントはHighとLowのバッファーだけでは取得できないので、リペイントポイントも含まれます(私の場合はシアンとピンクのドット)。標準のZigZagでもそうなのですが、それが見えないだけなのです。そのため、私のインジケーターでは、これを表示することで、より理解しやすくしています。
ZigZagのポイントだけを取り除くには、HighとLowのバッファを、LowとHighを両方保持している最初のバッファと比較する必要があります。
注意!最初のバッファ (Mode 0) を他の2つのバッファと比較して、それが High Point か Low Point かを判断する必要があります (たとえば、バッファ 1 とバッファ 3 が同じ値ならそれは Low ZigZag ポイントであり、バッファ 1 とバッファ 2 が同じ値ならそれは High Point となります)。
もしよろしければ、ファイルを添付して投稿してください。私が修正しますので、正しい使い方がわかると思います。
FMICさん、こんにちは。
説明とヘルプをありがとうございます。高値と低値の取得はまだ成功しませんでした。問題は、リペイント(正常)してしまい、過去の高値安値がわからないことです。オリジナルのジグザグインジケーターでモード0とモード1、モード0とモード2も使っているのですが、すべての結果がすでに両方の値を持っています。つまり、zh(モード1)やzl(モード2)の値はあってもzz(モード0)の値がない線が1本もないのです。というわけで、この方法は成功しませんでした。
また、iCustom()関 数のindexも使ってみましたが、うまくいきませんでした。とても簡単なことのように見えますが、1日以上取り組んでいますが、解決策は見つかりませんでした。
私のコードを添付ファイル(バージョン5)に記載しています。どんな助けでも非常に感謝します。
さらにいくつかのテストを実行し、視覚的なテストも行って います。再描画を避けるためにiCustomのインデックスを100ティックに戻しましたが、再描画されました。問題は、ジグザグ・インジケータを呼び出すときに、実際のデータを見ることです。そのため、インデックスを1として使用する方が良いでしょう。
私の理解では、もう一つのループで配列をチェックし、高値と安値のデータを削除して修正する必要があります。最初の考えでは、配列の100日前までさかのぼって、連続した高値があるかどうかをチェックします。まだアルゴリズムに結論は出ていません。
もっといいアイデアはないでしょうか?ヒストリカルデータの高値と安値を識別するために完全に異なるアプローチを使用することを含めて?
さらにいくつかのテストを実行し、視覚的なテストも行っています。再描画を避けるために、iCustomのインデックスを100ティック前に戻したのですが、再描画されてしまいました。問題は、ジグザグ・インジケータを呼び出すときに、実際のデータを見ることです。そのため、インデックスを1として使用する方が良いでしょう。
私の理解では、もう一つのループで配列をチェックし、高値と安値のデータを削除して修正する必要があります。最初の考えでは、配列の100日前までさかのぼって、連続した高値があるかどうかをチェックします。まだアルゴリズムに結論は出ていません。
もっといいアイデアはないでしょうか?過去データの高値と安値を識別するために完全に異なるアプローチを使用することを含めて?
aed71さん、こんにちは。
私はちょうど仕事から帰ってきて、寝る時間です。朝、あなたのコードをもっと詳しく見て、正しい解決策を提供します。
ただし、簡単なメモとして、1000本や100本のバーを振り返る必要はなく、「深さ」と「バックステップ」のパラメータを 熟考するのに十分な量です。
また、データを収集し分析するだけなので、ティック間隔を使用するEAではなく、全履歴データを瞬時にウォークフォワードするスクリプトを検討してみてください。そうすれば、リペイントの心配がなくなります。
明日は、もっと詳しい説明をさせていただきます。
よろしくお願いします。
FMIC
こんにちは、FMICです。
昨日から偽の高値と安値を除去するアルゴリズムに取り組んでいて、添付のバージョンでコーディングしています。これはどうにかして偽のシグナルを除去しますが、時々それを行うべきではありません元のものを削除します。
コードの背後にある原理は次のとおりです。
高値がある場合、それは最後の既知の安値まで戻り、ステップバイステップで現在の高値が前のものより高い場合は、前の高値を消去することをチェック します。
安値も同じです。このコードにはいくつか説明があります。
少なくとも、高値や安値が同時に発生することはもうありません :-)
今、私はオリジナルの高値/安値のポイントを削除するバグを見つける必要があります。
もしあなたが私のコードを見てくれるなら、そのバグを短時間で理解することができるかもしれません。私は集中しすぎていて、簡単なバグさえも見ることができないかもしれません...。
またの機会によろしくお願いします。
おはようございます、"aed71 "です。
おはようございます、"aed71 "です。
素晴らしい仕事で、スムーズに動作し、コードベースに含まれるべきです...。ありがとうございました。
もしよろしければ、2つの質問をさせてください。
1-) ダウンロードしてグラフで見た私のデータは4桁を表示していましたが、スクリプトの出力は5桁でした。どうしたらそんなことができるのでしょうか?つまり、最後にゼロがない5桁の数字です。
カウント,タイプ,価格,日付時間
1,H,1.34962,2013.11.04 00:30:00
2,L,1.34861,2013.11.04 02:15:00
3,H,1.35015,2013.11.04 03:00:00
4,L,1.34417,2013.11.04 05:15:00
5,H,1.35127,2013.11.04 11:15:00
6,L,1.34910,2013.11.04 15:45:00
7,H,1.35236,2013.11.04 18:15:00
8,L,1.35045,2013.11.04 19:45:00
9,H,1.35203,2013.11.04 22:45:00
2-) このスクリプトは非常に便利ですが、これは私のプロジェクトの 最初の部分で、過去のデータを分析するものでした。その後、私は私の専門家にコードを含めることを計画し、何とか最近の履歴との相関関係を見つけ、それに応じて、現在の変数のさらなる最適化を決定しました。言い換えれば、エキスパートでも同様のことを実行する必要があります。そこで、どのようにエキスパートに変換することが可能でしょうか?
ご協力ありがとうございます :-)
素晴らしい仕事、スムーズに動作、コードベースに含まれるべき...。ありがとうございます。
もしよろしければ、2つの質問があります。
1-) ダウンロードしてグラフで見た私のデータは4桁を表示していましたが、スクリプトの出力は5桁でした。どうしたらそんなことができるのでしょうか?つまり、末尾にゼロがない5桁の数字です。
2-) スクリプトは非常に有用ですが、これは私のプロジェクトの最初の部分で、過去のデータを分析するものでした。その後、私は自分の専門家にコードを含めることを計画していた、何とか最近の履歴との相関関係を見つけ、それに応じて、現在の変数のさらなる最適化を決定する。言い換えれば、エキスパートでも同様のことを実行する必要があります。そこで、どのようにエキスパートに変換することが可能でしょうか?
あなたの助けのために再びありがとうございます:-)
5桁のブローカーがあれば、データは5桁の数字を持つことになります。多くのインディケータでは、"IndicatorDigits()"関数を 使用しないため、ブローカーが提供する数字に関係なく、デフォルトの数字しか表示されないという問題があります。私のZigZagZugのコードを見ていただければ、この問題を修正するために、MetaQuotesが独自のコードで行っていないことを明示的に設定したことがお分かりいただけると思います。
エキスパートでのコードの使用に関しては、ストラテジーやリペイントがどのように影響するかなど、多くの事柄に依存します。リペイントの影響を受けないストラテジーもあれば、非常に影響を受けやすいストラテジーもあります。未知の」ストラテジーに対しては、あまりアドバイスができません。その場合は、具体的に説明する必要があります。しかし、1000本のバーを振り返る必要はないことを覚えておいてください。ジグザグがどのように機能し、どのようにハイブレイクアウトとローブレイクアウトを使用し、どのように検索するかを学ぶと、時には(深さ+バックステップ)バーの距離だけ振り返る必要があります - 戦略によっては、それは少し多くまたは少なくなるかもしれませんが、決してあなたが使用して1000または100を振り返る必要はないのです。
桁についての情報ありがとうございます。細かいところまで読んで理解しないといけないので、頭が痛いです...。
私が達成しようとしていることをもっと詳しく説明させてください。私は過去10年間にテストした、かなり収益性の高いエキスパートを持っています(現在)。しかし、そのエキスパートが各条件ですべてうまく動作するわけではなく、非常に悪いわけではありませんが、いくつかの年/月には有望ではありません。このエキスパートには最適化された変数があり、それが収益性に影響を及ぼしています。私は、変数を自己最適化するために、最近の歴史と今日の間に相関関係を見つけたいと思っています。
そこで必要なのは、過去のデータの周期と振幅を計算するために、過去のデータからピークとローを見つけることです。私は、最近の履歴データとエキスパートの現在の利益 変数との相関関係を手動で探してみる。もし、それが見つかったら、同じようなコードを私のエキスパートに追加して、毎日、過去一週間の統計データをチェックし、相関のある定数に従って、エキスパートの変数を自己最適化することにします。
というわけで、これが戦略です。フーリエ、ハーツサイクル、ゲルツェル、MESAなど、過去データを分析するための他のトピックを数多く手がけましたが、既存のデータ上で実行する方法を使用する方がずっと良いという結論に達しました。
そのため、リアルタイムのハイ・ロー分析は必要なく、15Mのデータセットで、半日分のデータ(ほぼ45ティック)でも構わないと思っています。おそらく、直近の5日間を見ることになると思いますが、4.5日間の変化で新しい最適化された値を見つけるには十分だと思います。
私のコードについてですが、問題は、過去の高値をチェックする際に、あまりに後ろに行き過ぎたことだと思います。私はこのツールの専門的な部分が必要なので、まだ取り組んでいます。
桁についての情報ありがとうございます。細かいところまで読んで理解しないといけないので、頭が痛いです...。
私が達成しようとしていることをもっと詳しく説明させてください。私は過去10年間にテストした、かなり収益性の高いエキスパートを持っています(現在)。しかし、そのエキスパートが各条件ですべてうまく動作するわけではなく、非常に悪いわけではありませんが、いくつかの年/月には有望ではありません。このエキスパートには最適化された変数があり、それが収益性に影響を及ぼしています。私は、変数を自己最適化するために、最近の歴史と今日の間に相関関係を見つけたいと思っています。
そこで必要なのは、過去のデータの周期と振幅を計算するために、過去のデータからピークとローを見つけることです。私は、最近の履歴データとエキスパートの現在の利益変数との相関関係を手動で探してみる。もし、それが見つかったら、同じようなコードを私のエキスパートに追加して、毎日、過去一週間の統計データをチェックし、相関のある定数に従って、エキスパートの変数を自己最適化することにします。
というわけで、これが戦略です。フーリエ、ハーツサイクル、ゲルツェル、MESAなど、過去データを分析するための他のトピックを数多く手がけましたが、既存のデータ上で実行する方法を使用する方がずっと良いという結論に達しました。
そのため、リアルタイムのハイ・ロー分析は必要なく、15Mのデータセットで、半日分のデータ(ほぼ45ティック)でも構わないと思っています。おそらく、直近の5日間を見ることになると思いますが、4.5日間の変化で新しい最適化された値を見つけるには十分だと思います。
私のコードについてですが、問題は、過去の高値をチェックする際に、あまりに後ろに行き過ぎたことだと思います。私はツールの専門家が必要なので、まだそれに取り組んでいます。
あなたが説明したことは、あなたにアドバイスするためにEAの性質を理解するのに役立ちません。
もしご希望であれば、プライベートメッセージ で詳細を送っていただければ、あなたのEAをよく見て、必要なコードを提案させていただきます。
あるいは、できる限りの実装を試みて、具体的な問題が発生したときに、このフォーラムに戻ってきて、その問題についての問い合わせを投稿して、ユーザーが助けてくれるかどうかを確認することをお勧めします。
OK ありがとうFMIC。
実は、私の問題は、私がフォーラムで共有したエキスパートについてでした。あなたのスクリプトは問題なく動作しています、ありがとうございました。