コーディングのヘルプ - ページ 407

 

こんにちは、私が作ったインジケータについてあなたの助けが必要です。基本的に、これはテスターで、ストラテジーの設定を最適化する(また、そのパフォーマンスをテストする)ためにのみ使用することを想定しています。テストモード(OptimizeをFalseにする)では、デフォルトのパラメータで勝率と収支が表示され、とてもうまく動作します。しかし、最適化機能を動作させるのに苦労しています。最適な設定の結果は、常に低い値(PeriodMin)になってしまいます。最適化2重関数内で宣言したバッファの使い方が悪いのかなと思います(616行目、617行目、バッファの解放に使用した746行目、747行目を参照ください)。もしこれらのバッファを使わなければ(AllowMultipleOpenTradesをFalseにする)、まだ一貫性のない結果が得られるので、それだけではないのだと思います。もし、どなたか見て、助けていただけるなら、感謝します。どうもありがとうございました。

ファイル:
 
airquest:
何を作ろうとしているのかよくわかりません。もしかしたら、こんな感じでしょうか?

いいえ、そうではありません。スクリーンショットで説明しましょう。ピンクの上矢印で、LOWの赤いバーがHIGHの青いバーよりずっと大きいことがはっきりわかります。しかし、Linear Bar Diff インジケータの対応する出力はゼロを超えています!(下のピンクの矢印を参照)。赤のLowのバーが青のHighのバーより大きい場合、両方のバーの差はプラスではなく、マイナスになるはずです。緑の矢印は同じ問題の別の例を示しています。

よろしくお願いします。

ファイル:
example.png  25 kb
 
mrcodix:
いいえ、そうではありません。スクリーンショットで説明しましょう。ピンクの矢印のところでは、LOWの赤いバーがHIGHの青いバーよりずっと大きいことがはっきりわかります。しかし、Linear Bar Diff インジケータの対応する出力はゼロを超えています!(下のピンクの矢印を参照)。赤のLowのバーが青のHighのバーより大きい場合、両方のバーの差はプラスではなく、マイナスになるはずです。緑の矢印は同じ問題の別の例を示しています。 よろしくお願いします。

ということは、もしかして、これ?バッファ3とバッファ4は、High VS OpenとLow VS Openではなく、Close VS Openに関係していることを確認する必要があります。

ファイル:
 
mrcodix:
いいえ、そうではありません。スクリーンショットで説明しましょう。ピンクの矢印のところでは、LOWの赤いバーがHIGHの青いバーよりずっと大きいことがはっきりわかります。しかし、Linear Bar Diff インジケータの対応する出力はゼロを超えています!(下のピンクの矢印を参照)。赤のLowのバーが青のHighのバーより大きい場合、両方のバーの差はプラスではなく、マイナスになるはずです。緑の矢印は同じ問題の別の例です。 よろしくお願いします。

あるいは、High/Low VS Open、Close VS Openのいずれかを選択した場合です。

ファイル:
 
airquest:
こんにちは、私は私が作ったインジケータについてあなたの助けを必要としています。基本的に、これはテスターで、ストラテジーの設定を最適化するためにのみ使用することになっています(パフォーマンスもテストします)。テストモード(OptimizeをFalseにする)では、デフォルトのパラメータで勝率と収支が表示され、とてもうまく動作します。しかし、最適化機能を動作させるのに苦労しています。最適な設定の結果は、常に低い値(PeriodMin)になってしまいます。最適化2重関数内で宣言したバッファの使い方が悪いのかなと思います(616行目、617行目、バッファの解放に使用した746行目、747行目を参照ください)。もしこれらのバッファを使わなければ(AllowMultipleOpenTradesをFalseにする)、まだ一貫性のない結果が得られるので、それだけではないのだと思います。もし、どなたか見て、助けていただけるなら、感謝します。どうもありがとうございました。

エアクエスト

602行目の配列recTP[]とrecSL[]のサイズが変更されていません(ループの最初に宣言されているため、サイズ0です)、for()ループの前にリサイズしてみてください

 
airquest:
それとも、High/Low VS OpenかClose VS Openのどちらかを選択した場合でしょうか?

いいえ、これは私が言いたかったことです。

int start()

{

int counted_bars=IndicatorCounted();

int i;

//int UpDays, DownDays, NeutralDays;

double BarH, BarL, BarC;

//----

for(i=0; i<Bars; i++)

{

BarH = High - Open;

BarL = Open - Low;

BarC = Close - Open;

//if(BarC>0) UpDays +=1;

//else if(BarC<0) DownDays +=1; //else if(BarC=0) NeutralDays +=1;

//else if(BarC==0) NeutralDays +=1;

ExtMapBuffer1 = BarH;

ExtMapBuffer2 = BarL;

ExtMapBuffer5 = BarH - BarL;

}

//----

return(0);

}

私は今なんとなく自分でそれを考え出したが、とにかく努力に感謝します。

どなたかこのインジケーターの理由を教えてください。Candles Ratio " Metatrader Files does not show the output for the last few candlesticks?それはthatsが示されている画像でそれを行うように見えることはありません。

 
mladen:
エアクエスト 602行目の配列recTP[]とrecSL[]のサイズが変更されていません(ループの最初に宣言されているため、サイズ0になっています)。

Mladenさんありがとうございます、やってみたのですが、やはり最適化が正しい結果を出してくれません。OptimizeをTrueにすると、一番低い値が最適な設定(バンド期間=5)となり、FalseにしてBandsPeriodを40にすると、例えば5よりも良い勝率を示します。基本的に最適化のアイデアは、どの設定が最高の勝率を与えるかを見つけることです。このコードを何度も読み直したのですが、何が問題なのかが分かりません。もし何かお分かりになることがあれば、教えてください。

これはArrayResizeを追加 したものです。また、いくつかのバグを修正しましたが、まだ最適化しない場合と同じ結果を得ることはできません。

ファイル:
 
airquest:
Mladenさんありがとうございます、やってみたのですが、やはり最適化が正しい結果を出しません。OptimizeをTrueにすると、一番低い値が最適な設定(バンド期間=5)となり、Falseにすると、例えばデフォルトのBandsPeriodを40にすると、5よりも良い勝率を示します。基本的に最適化のアイデアは、どの設定が最高の勝率を与えるかを見つけることです。このコードを何度も読み直したのですが、何が問題なのかが分かりません。 もし、何か思い当たる節があれば、教えてください。 これは、ArrayResizeを追加したものです。また、いくつかのバグを修正しましたが、まだ最適化なしと同じ結果を得ることはできません。

理由は不明ですが、CSVファイルに出力して結果を確認すると、総取引額、勝率、残高が10倍になっています :http://clip2net.com/s/38YHODl ...

 
airquest:
なぜかわかりませんが、CSVファイルに書いて結果を確認すると、総取引額、勝率、残高が10倍になっています:Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

エアクエスト

私が見る限り、総トレードと勝利はOKです(そうでなければ、0 で終わらせる必要があります)。

 
mladen:
airquest 私が見る限り、総取引と総勝ちはOKです(そうでなければ0になるはずです)。

まあ、それでも...。以下は、いくつかのテストです。

- デフォルト設定 (最適化なし、WriteCSVをTrueに設定) :http://clip2net.com/s/38YSV53

- 最適化をTrueに設定し、PeriodMinを20、PeriodMaxを20に設定 :http://clip2net.com/s/38YT2hN

最初のものは、首尾一貫した値を与えます(CSVファイルと画面の結果が一致します)。どちらも同じ変数から取得したものなので、これは正常です。しかし、2番目のものは、optiの結果がスクリーンの結果に比べてほぼ10倍になっています。とはいえ、最終的には同じ結果になるはずなのですが...。

とにかく、急がず、時間をかければ何が問題なのか分かるかもしれません。Mladenさんの親切な手助けに感謝します。