ライブラリ: BestInterval - ページ 14 1...789101112131415161718192021...29 新しいコメント fxsaber 2019.02.02 06:58 #131 gspencer: 私はコーディングやMeta EditorでのEAの操作について何も知りませんが、BestIntervalのコンセプトはとても気に入っています。私がテストしたいEAにこれを追加する方法を教えていただくのは面倒でしょうか?このスレッドの議論を 理解するようにしてください。 Библиотеки: BestInterval 2018.10.12www.mql5.com Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: BestInterval fxsaber 2019.02.08 22:06 #132 // チャートにBestIntervalバランスチャートを表示する。 #property strict #property script_show_inputs input int inAmountIntervals = 3; // ワーストケースのトレード間隔をいくつ捨てるか #include <Graphics\Graphic.mqh> //https://www.mql5.com/ja/articles/2866 void ToChart( const double &Y[] ) { CGraphic graphic; graphic.Create(0, __FUNCTION__, 0, 30, 30, 780, 380); graphic.CurveAdd(Y, CURVE_LINES); graphic.CurvePlotAll(); graphic.Update(); } #include <MT4Orders.mqh> // MT4 の場合は必要ありません。 #include <fxsaber\BestInterval\BestInterval.mqh> // 最適な取引間隔の計算 void OnStart() { BESTINTERVAL BestInterval; // 最適な取引間隔を計算するオブジェクトを作成 BestInterval.Set(); // 入札履歴を掲載 for (int i = 0; i < inAmountIntervals; i++) if (BestInterval.DeleteWorseInterval()) // 何かが捨てられた場合 Print(BestInterval.ToString()); // 得られた取引データを出力しよう else break; // そうでなければ退場 double Profits[]; double Balance[]; const int Size = ArrayResize(Balance, BestInterval.GetProfits(Profits) + 1); // BestIntervalトランザクションの利益を得た Balance[0] = 0; // バランス曲線を計算する for (int i = 1; i < Size; i++) Balance[i] = Balance[i - 1] + Profits[i - 1]; ToChart(Balance); // 視覚化された。 } fxsaber 2019.02.13 19:29 #133 標準配送のEAの最後にこれを挿入する場合// オプティマイザーの各パスの見積もりをターミナルに送信。BestIntervalを適用して可視化する。 #include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006 #include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/ja/code/22710 #include <TypeToBytes.mqh> //https://www.mql5.com/ja/code/16280 #include <Graphics\Graphic.mqh> //https://www.mql5.com/ja/articles/2866 input int inAmountIntervals = 1; // ワーストケースのトレード間隔をいくつ捨てるか // グラフを出力する void ToChart( const double &Y[] ) { CGraphic graphic; graphic.Create(0, __FUNCTION__, 0, 30, 30, 780, 380); graphic.CurveAdd(Y, CURVE_LINES); graphic.CurvePlotAll(); graphic.Update(); } // 貿易史の収集 int GetDeals( DEAL_BASE &Deals[] ) { const int Total = ArrayResize(Deals, OrdersHistoryTotal()); int Amount = 0; for (int i = 0; i < Total; i++) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL)) { Deals[Amount].OpenTime = OrderOpenTime(); Deals[Amount++].Profit = OrderProfit() + OrderCommission() + OrderSwap(); } return(ArrayResize(Deals, Amount)); } // ここから(エージェント)、ターミナルにデータを送信する。 double OnTester() { DEAL_BASE Deals[]; if (MQLInfoInteger(MQL_OPTIMIZATION) && GetDeals(Deals)) // 最適化の場合、取引履歴を収集 { CONTAINER<uchar> Container; //https://www.mql5.com/ru/forum/95447/page4#comment_5464205 Container[0] = Deals; // 入札履歴をコンテナに入れる FrameAdd(NULL, 0, 0, Container.Data); // エージェントからターミナルへデータを送信 } return(0); } // ここで(端末)はエージェントからデータを受け取る void OnTesterPass() { ulong Pass; string Name; long ID; double Value; CONTAINER<uchar> Container; //https://www.mql5.com/ru/forum/95447/page4#comment_5464205 while (FrameNext(Pass, Name, ID, Value, Container.Data)) { Print("Pass = " + (string)Pass); // パス番号 DEAL_BASE Deals[]; // エージェントからデータを受信 Container[0].Get(Deals); BESTINTERVAL BestInterval; // 最良の取引間隔を計算するオブジェクトを作成 BestInterval.Set(Deals); // 送信された入札履歴を掲載 Print(BestInterval.ToString() + "\n"); // 得られた取引データを出力しよう for (int i = 0; i < inAmountIntervals; i++) if (BestInterval.DeleteWorseInterval()) // 何かが捨てられた場合 Print(BestInterval.ToString() + "\n"); // 得られた取引データを出力しよう else break; // そうでなければ退場 double Profits[]; double Balance[]; const int Size = ArrayResize(Balance, BestInterval.GetProfits(Profits) + 1); // BestIntervalトランザクションの利益を得た Balance[0] = 0; // バランス曲線を計算する for (int i = 1; i < Size; i++) Balance[i] = Balance[i - 1] + Profits[i - 1]; ToChart(Balance); // 視覚化された。 } }ターミナルログに以下のように表示されます(標準移動平均の例)。Pass = 0 Amount of Delete Intervals = 0 (2018.10.01 - 2019.02.05) 00:00:00 - 23:59:59 : Profit = -8498.94 (100.00%), Total = 6394 (26.07%), PF = 0.52, Mean = -1.33, DD = 8660.23, RF = -0.98 SUMMARY: 00:00:00 - 23:59:59 : Profit = -8498.94 (100.00%), Total = 6394 (26.07%), PF = 0.52, Mean = -1.33, DD = 8660.23, RF = -0.98 Amount of Delete Intervals = 1 (2018.10.01 - 2019.02.05), 18:00 - 18:00, CountHours = -1 17:40:01 - 17:42:59 : Profit = 364.25 (100.00%), Total = 9 (100.00%), PF = Max, Mean = 40.47, DD = 4.63, RF = 78.67 SUMMARY: 00:00:00 - 23:59:59 : Profit = 364.25 (100.00%), Total = 9 (100.00%), PF = Max, Mean = 40.47, DD = 4.63, RF = 78.67 Pass = 1 Amount of Delete Intervals = 0 (2018.10.01 - 2019.02.05) 00:00:00 - 23:59:59 : Profit = -9757.53 (100.00%), Total = 6394 (24.70%), PF = 0.55, Mean = -1.53, DD = 10076.19, RF = -0.97 SUMMARY: 00:00:00 - 23:59:59 : Profit = -9757.53 (100.00%), Total = 6394 (24.70%), PF = 0.55, Mean = -1.53, DD = 10076.19, RF = -0.97 Amount of Delete Intervals = 1 (2018.10.01 - 2019.02.05), 09:00 - 10:00, CountHours = 0 08:27:01 - 10:14:59 : Profit = 628.59 (100.00%), Total = 472 (39.41%), PF = 1.39, Mean = 1.33, DD = 550.93, RF = 1.14 SUMMARY: 00:00:00 - 23:59:59 : Profit = 628.59 (100.00%), Total = 472 (39.41%), PF = 1.39, Mean = 1.33, DD = 550.93, RF = 1.14そしてチャート上には、対応するパスの BestInterval-profit チャートが表示されます。 Stanislav Korotky 2019.02.15 20:47 #134 通りかかったんだ。私はそれを読んだ。 説明にはこうある。 アイデアは作者のものです。類似品があるかもしれません。" もっと一般的なことは、英語のブログで紹介した(その1、その2)。時間間隔だけの断面積は、非常に特殊なアプローチである。アイデアとしては、他のパラメータの断面積も同じように面白いかもしれない。 fxsaber 2019.02.15 21:25 #135 Stanislav Korotky:通りかかったんだ。私はそれを読んだ。説明にはこうある。アイデアは作者のものです。類似品があるかもしれない。"より一般的なものについては、英語のブログポジション・オープンの 瞬間にМАшкаが何であったか(それをOrderCommentに書きます)がわかっています。したがって、取引履歴のすべてのポジションをこれらのMA値と比較することができます。 そして、これらのMAにBestIntervalを適用します。そして出力で、ポジションを建てるべきМАшкиの範囲と、建てるべきでないМАшкиの範囲が得られます。 もちろん、MAの代わりに任意の数値関数を使用することもできます。その結果、時間を凌駕するクールなフィルターを見つけることができます。 Stanislav Korotky 2019.02.15 21:31 #136 fxsaber:残念ながら、言葉の壁があるため、あなたの作品に触れることができない。他のフィルターへの興味については、もちろん同感だいつからそんな壁ができたんだ?;-)以前は明確だった。それとも、私の英語が間違っていたのでしょうか? fxsaber 2019.02.15 21:40 #137 Stanislav Korotky:いつからそんな壁ができたのか?;-)昔はクリアだったんだけどね。それとも僕の英語がめちゃくちゃだったのかな?いつも壁があった。ソースコードを読みながら直進することもあった。 Алексей Тарабанов 2019.02.15 21:41 #138 fxsaber:残念ながら、言葉の壁があるため、あなたの作品に触れることができない。他のフィルターへの興味については、もちろん同感だ神はあなたの審判です。 fxsaber 2019.03.08 15:20 #139 メモ#include <fxsaber\BestInterval\BestInterval.mqh> void OnStart() { BESTINTERVAL BestInterval; // BestInterval全体の対応値 Print(BestInterval.GetTotal()); // クローズドポジションの数。 Print(BestInterval.GetTotalPlus()); // クローズしたポジションの数。 Print(BestInterval.GetTotalMinus()); // 不採算のクローズポジション数。 Print(BestInterval.GetMean()); // 期待値 Print(BestInterval.GetProfit()); // 利益 Print(BestInterval.GetProfitFactor()); // プロフィット・ファクター Print(BestInterval.GetProfitPlus()); // プラス取引の利益 Print(BestInterval.GetProfitMinus()); // マイナス取引の損失 Print(BestInterval.GetRecoveryFactor()); // 回復係数 Print(BestInterval.GetMaxDrawDown()); // 絶対残高の最大ドローダウン Print(BestInterval.GetAmountDeleteIntervals()); // 不良インターバルの削除数 INTERVAL Intervals[]; const int Size = BestInterval.GetIntervals(Intervals); // BestIntervalを構成する区間を取得する。 // 各区間について、そのインデックスを表示した for (int i = 0; i < Size; i++) { Print(Intervals[i].Total); // クローズドポジションの数。 Print(Intervals[i].TotalPlus); // クローズしたポジションの数。 Print(Intervals[i].TotalMinus); // 不採算のクローズポジション数。 Print(Intervals[i].Mean); // 期待値 Print(Intervals[i].Profit); // 利益 Print(Intervals[i].ProfitFactor); // プロフィット・ファクター Print(Intervals[i].ProfitPlus); // プラス取引の利益 Print(Intervals[i].ProfitMinus); // マイナス取引の損失 Print(Intervals[i].RecoveryFactor); // 回復係数 Print(Intervals[i].MaxDrawDown); // 絶対残高の最大ドローダウン Print(Intervals[i].OpenTime); // インターバルオープン時間。 Print(Intervals[i].CloseTime); // インターバル終了時間。 } } Andrei Trukhanovich 2019.03.10 11:55 #140 Stanislav Korotky:時間間隔だけによる断面積の作成は、非常に特殊なアプローチである。実際、他のパラメータによる断面積も、それに劣らず興味深いものである。いろいろ考えてみたが、時間のように効果的にフィルターにかけられるものは思いつかなかった。 これは戦略の一部ではなく、市場の 動きに直接影響するものでなければならない。 スタックか、他のデータフィードか? 理屈の上では、個々にうまくフィルタリングされるはずです。 1...789101112131415161718192021...29 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私はコーディングやMeta EditorでのEAの操作について何も知りませんが、BestIntervalのコンセプトはとても気に入っています。私がテストしたいEAにこれを追加する方法を教えていただくのは面倒でしょうか?
このスレッドの議論を 理解するようにしてください。
ターミナルログに以下のように表示されます(標準移動平均の例)。
そしてチャート上には、対応するパスの BestInterval-profit チャートが表示されます。
通りかかったんだ。私はそれを読んだ。
説明にはこうある。
"
もっと一般的なことは、英語のブログで紹介した(その1、その2)。時間間隔だけの断面積は、非常に特殊なアプローチである。アイデアとしては、他のパラメータの断面積も同じように面白いかもしれない。
通りかかったんだ。私はそれを読んだ。
説明にはこうある。
"
より一般的なものについては、英語のブログポジション・オープンの 瞬間にМАшкаが何であったか(それをOrderCommentに書きます)がわかっています。したがって、取引履歴のすべてのポジションをこれらのMA値と比較することができます。
そして、これらのMAにBestIntervalを適用します。そして出力で、ポジションを建てるべきМАшкиの範囲と、建てるべきでないМАшкиの範囲が得られます。
もちろん、MAの代わりに任意の数値関数を使用することもできます。その結果、時間を凌駕するクールなフィルターを見つけることができます。
残念ながら、言葉の壁があるため、あなたの作品に触れることができない。他のフィルターへの興味については、もちろん同感だ
いつからそんな壁ができたんだ?;-)以前は明確だった。それとも、私の英語が間違っていたのでしょうか?
いつからそんな壁ができたのか?;-)昔はクリアだったんだけどね。それとも僕の英語がめちゃくちゃだったのかな?
いつも壁があった。ソースコードを読みながら直進することもあった。
残念ながら、言葉の壁があるため、あなたの作品に触れることができない。他のフィルターへの興味については、もちろん同感だ
神はあなたの審判です。
時間間隔だけによる断面積の作成は、非常に特殊なアプローチである。実際、他のパラメータによる断面積も、それに劣らず興味深いものである。
いろいろ考えてみたが、時間のように効果的にフィルターにかけられるものは思いつかなかった。
これは戦略の一部ではなく、市場の 動きに直接影響するものでなければならない。
スタックか、他のデータフィードか?
理屈の上では、個々にうまくフィルタリングされるはずです。