75,000のオプション - 4GBのRAMと4GBのディスクキャッシュでは不十分? - ページ 5

 
ビジュアライゼーションは、まだ必要ないんです。
でも、おそらく次のバージョンでやると思います。

私ができることをお見せします。
Expert Advisorを100%転送することは不可能です。
近似値を出す、Expert Advisorのことではないんですよね?
オプティマイザーの能力についてですね。
 
Mak:
ビジュアライゼーションは、まだ必要ないんです。
でも、おそらく次のバージョンでやると思います。

私ができることをお見せします。
Expert Advisorを100%転送することは不可能です。
近似値を出す、Expert Advisorのことではないんですね。
オプティマイザーの能力についてですね。
そんなことはありません。マッピングとユーザビリティの複合体全体がその本質であり、大きなリソースの支出を伴います。

プログラマーに全コードを突っ込ませて、外部のオプティマイザーとの通信を埋め込み、そこで何かを計算するオプティマイザーを走らせるのは、一つの方法であると思います。そして、これにはコストがかかっています。また、どのエキスパートでも「遺伝的最適化」のチェックボックスにチェックを入れ、通常の範囲(数百億ではない)を選択して結果を出し、オプティマイザが動作している間にすぐに目を通すことができ、追加のプログラムを必要としないのは別の問題です。 しかも無料ですからね。

私たちは一貫して、可能な限りシンプルで便利な、一体型のシステムを作り続けています。私のテスターは10~100倍速い」と主張する人がいますが、それを証明するものではありません。誰かが「球形の真空の中の馬」で架空のタスクを語っています。私たちは、MetaTraderを使用する何十万人ものトレーダーのために大規模に機能するシステムを作っています。そして、私たちが他社を大きくリードしているのは、やはりシステム構築の思想があるからです。

ps: ところで、御社のジェネティック・オプティマイザーの配布パッケージは、なぜMetaTraderのものよりも大きいのでしょうか?書いても経済的ではないのでしょうか?
 
さて、ここからが本番です。

私はOmegaで通貨を持っていない、私は31年間(> 11千バー)
- IBM(D1)の分布にあるもので実行されます。

Athlon XP 1500+ で 1000 回実行すると ~10 分かかった

ボラティリティが株式で高いので、パラメータの範囲を広げた

TakeProfit = (10, 10000, 1)
TralingStop = (10, 10000, 1)
Lots = (1, 1000, 1) - 私の銘柄数は
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

合計パラメータスペースは ~ 10^14 ステートである。

以下は、EasyLanguageのコードとScreenShotです。
また、OmegaのシグナルコードとレポートもZipファイルに添付しています。

(コードの貼り付けが うまくいかなかった)
===================================
Inputs: Gen(1);
Vars: TakeProfit(50),
TralingStop(30),
Lots(0.1),
MACDOpenLevel(3),
MACDCloseLevel(2),
MATrendPeriod(26);

Vars: R(0),K(0);
If CurrentBar = 1 Then Begin
R = TS.GO.K(0),K(0),K(0),K(0), If CurrentBar = 1 Then Begin R = TS.GO.K(0),K(0), If CurrentBar = 2,K(0),K(0), Is CurrentBar = 2,K(0),K(0), Is CurrentBar = 2,K(0),K(0),K(0),K(0)Start("MACD");
If Gen = 1 Then Begin
R = TS.GO.Mode(0);
R = TS.GO.Popul(100);
R = TS.GO.Var("Gen");
R = TS.GO.Var("Trads");

R = TS.GO.Method(1);
R = TS.GO.Criterion("NetProfit",1);
R = TS.GO.Criterion("MaxDD",1);
R = TS.GO.Criterion("PF",1);

K = TS.GO.Chrom("Stops");
R = TS.GO.Gen("TakeProfit", K, 10, 10000, 1);
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1);

K = TS.GO.Chrom("Lots");
R = TS.GO.Gen("Lots", K, 1, 1000, 1);

K = TS.GO.Chrom("MACD");
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1);
R = TS.GO.Chrom("MACD", K, 1); R = TS.GO.Gen("MACDOpenLevel"), K, 1, 1000, 1)GO.Gen("MACDCloseLevel", K, 1, 100, 1);
R = TS.GO.Gen("MATrendPeriod", K, 2, 100, 1);
End;

R = TS.GO.Next(Gen);
R = TS.GO.Gen("MATrendLevel", K, 1, 100, 1); R = TS.GO.Next(Gen); R = TS.GO.Next(Gen); R = TS.GO.Gen(Gen)Set("Gen",Gen);
R = TS.GO.ShowViewer;

TakeProfit = TS.GO.Get("TakeProfit", 0);
TralingStop = TS.GO.Get("TralingStop", 0);
Lots = TS.GO.Get("Lots", 0);
MACDOpenLevel = TS.GO.Get("MACDOpenLevel",0);
MACDCloseLevel = TS.GO.Get("MACDCloseLevel",0);
MATrendPeriod = TS.GO.Get("MACDOpenLevel", 0); MACDOpenLevel = TS.GO.Get("Lots")Get("MATrendPeriod",0);
End;

Vars:MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0);

MacdCurrent = MACD(Close,12,26);
MacdPrevious = MACD(Close,12,26)[1] です。
SignalCurrent = XAverage(MacdCurrent,9);
SignalPrevious = XAverage(MacdCurrent,9)[1];
MaCurrent = XAverage(Close,MATrendPeriod);
MaPrevious = XAverage(Close,MATrendPeriod)[1];

Vars.XAverage(MacdCurrent)[1]; SignalCurrent=XAverage(MATrendPeriod)[2StopLoss(0);
If MarketPosition = 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent > (MACDOpenLevel Point) and MaCurrent > (MACDOpenPrevious)MaPrevious
Then Begin
Buy Lots shares this bar on close;
end;

If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) >...(MACDOpenLevel Point)
and MaCurrent < MaPrevious
Then Begin
Sell Lots shares this bar on close;
end;
end;

If MarketPosition > 0 Then Begin
If MacdCurrent > 0
and MacdCurrent <SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitLong ("CloseLong") this bar on close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice - TralingStop Points;
StopLoss = MaxList(StopLoss,High - TralingStop Points);

ExitLong ("TakeLong") Next Bar at EntryPrice + TakeProfit Points Limit;
ExitLong ("テイクロング)StopLong") Next Bar at StopLoss Stop;
end;

If MarketPosition < 0 Then Begin
If MacdCurrent < 0
、MacdCurrent > SignalCurrent
、MacdPrevious < SignalPrevious
、AbsValue(MacdCurrent) >(MACDCloseLevel Point)
Then Begin
ExitShort ("CloseShort") this bar on close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice + TralingStop Points;
StopLoss = MinList(StopLoss,Low + TralingStop Points).Of the Bar on Close; StopLoss = EntryLoss + TralingStop Points; StopLoss = EntryLoss + TralingStop Points;

ExitLong ("TakeShort") Next Bar at EntryPrice - TakeProfit Points Limit;
ExitLong ("StopShort") Next Bar at StopLoss Stop;
end;


IF LastBarOnChart Then Begin
R = TS.GO.Set("Trades",TotalTrades);
R = TS.GO.Set("NetProfit",NetProfit);
R = TS.GO.Set("MaxDD",MaxIDDrawDown);
R = TS.GO.Set("PF",GrossProfit/(0.001-GrossLoss));
R = TS.GO.Fit(0);
End;
======================================================================================================================================================================================================================================================================


ファイル:
macd_test.zip  32 kb
 
Renat:
Mak:
ビジュアライゼーションは、まだ必要ないんです。
でも、おそらく次のバージョンでやると思います。

私ができることをお見せします。
Expert Advisorを100%転送することは不可能です。
私は何かおおよそのものを作る、それはExpert Advisorの問題ではなく、オプティマイザの能力の問題なのでしょうか?
オプティマイザーの能力についてですね。
絶対にダメです。ポイントは、膨大なリソースを費やすマッピングとユーザビリティのコンプレックスにあります。

プログラマーに、外部のオプティマイザーとの通信を統合するためにコードをすべて突っ込ませ、そこで何かを計算するオプティマイザーを走らせるのは、一つの手だ。そして、これにはコストがかかっています。また、どのエキスパートでも「遺伝的最適化」のチェックボックスにチェックを入れ、通常の範囲(数百億ではない)を選択して結果を出し、オプティマイザが動作している間にすぐに目を通すことができ、追加のプログラムを必要としないのは別の問題です。 しかも無料ですからね。

私たちは一貫して、可能な限りシンプルで便利な、一体型のシステムを作り続けています。私のテスターは10~100倍速い」と主張する人がいますが、それを証明するものではありません。誰かが「球形の真空の中の馬」で架空のタスクを語っています。私たちは、MetaTraderを使用する何十万人ものトレーダーのために大規模に機能するシステムを作っています。そして、私たちが他社を大きくリードしているのは、やはりシステム構築の思想があるからです。

ps: ところで、御社のジェネティック・オプティマイザーの配布パッケージは、なぜMetaTraderのものよりも大きいのでしょうか?書いても経済的ではないのでしょうか?

レナート、あなたは私にこれを見せるよう要求しましたね。
私は何度も「THIS」とは何かと尋ねています.
私が質問した時に前の記事を書いていたら。
ということになれば、話は違っていたでしょうし、このMACDをOmega用に書き直す必要もなかったでしょう。
他のことはさておき、「私はラクダではない」ことを証明するために、忙しくしていました。

結論から言うと
なんてことを言いながら、タダで.
そんなことで、私はあなたと議論していたのでしょうか(全く議論していませんでした)。

私はただ、あなたのオプティマイザーがメモリを消費しすぎていることを指摘しただけです。
これは、まだCSがなかったころの古いバージョンのオプティマイザーからの遺産だと思います。
これは簡単に修正でき、オプティマイザーをより良いものにすることができます。

注、私の批判ではありません。
私はただ、あなたの力になりたかっただけです。
 
自分の立場を細かく守るのと、そうでないのとでは、まったく違います。本当に、なぜこんな広いスペースに1,000本しかオーバーシュートがないのでしょうか?それは、とても粗雑な見方です。MT4でこのEAを1.5Bの値で実行したところ、EURUSD H1 履歴の18000バーで4分以内に4400の純反発を達成しました。

このタスクは、もちろん真空中の球形の馬の領域であり、私たちMT4は、実際には、可能な値の巨大な領域(ブルートフォース機構の遺産)のために一定のメモリ量を確保しようとするのは間違っているのです。この点は修正される予定です。

あなたの粘り強さに感謝します。あなたのおかげで、テスターをもっと深く掘り下げることができました。
 
Renat писал (а):

....しかし、なぜこれほど広いスペースに1000本しかないのでしょうか。 非常に粗雑な感じです。MT4でこのExpert Advisorを15億の値の領域で実行したところ、18000のEURUSD H1バーの履歴で4分間で4400の正味オーバーシュートを得た。 ... 続きを読む
遺伝学における探索速度は、パラメータ空間の大きさに依存しない。
ターゲット関数の品質(フィットネス)に依存する。

さらに、私たちが知っている他のアルゴリズムよりも一桁以上速いオリジナルのアルゴリズムを使用しています。
1000回というのはちょっと多すぎですね。私は通常、100~200回(パラメータの数に関わらず)実行して、解を評価します。
 
Renat писал (а):
はい、実はこのEA、テストではメモリを消費しすぎてダウンしてしまうのです。調べてみます。
コード提供ありがとうございました。


レナート、まだか?
 

正気か、ニュースがあるぞ。メモリリークが見つかったんです。コンパイラがラインリリースコマンドを正しい位置に挿入していない。

 
stringo писал (а):

正気か、ニュースがあるぞ。メモリリークが見つかったんです。コンパイラがラインリリースコマンドを正しい位置に挿入していない。


OK、新しいビルドを待っています。
 
sane:
ストリングス

正気か、ニュースがあるぞ。メモリリークが見つかったんです。コンパイラがラインリリースコマンドを正しい位置に挿入していない。


OK、新しいビルドを待っています。

198 EAの新しいビルドであなたの例を実行しました。







過剰なメモリ消費はなくなり、遺伝的最適化を有効にした場合、21600件中1088件が検索され、計算時間は8分31秒となりました。

Expert Advisor 自体について - 重大な誤りがあるため、絶対に使用しないでください。
  • 停止位置が正しくなく、すべてのログにそれに関するメッセージが散見される
  • SetOrder 関数を使用すると、ブローカーから Expert Advisor での取引を厳しく禁止される可能性があります。

    この機能は古い価格で5回取引しようとしますが、Expert Advisorの作者は何をしているのか理解していません(RefreshRatesを 使おうとしていますが、それでも古い価格が表示されます)。また、意味のあるエラー処理も全くありません。