エリオット波動理論に基づくトレーディング戦略 - ページ 58 1...515253545556575859606162636465...309 新しいコメント Forex Trader 2006.06.20 22:48 #571 人生には、最初は重要なようで、重要でないことがたくさんあります。原始的なExpert Advisorの結果のように、Avalsによると、直感的にその背後にあるアイデアは正しいのですが、最初は正当化されなければなりませんでした。でも、反証を試みるより、実際にテストにかける方が簡単だったんです。年末まで続けば、テスターでのテストに踏み切れるかもしれませんね :)<br /> translate="no">。 概要 入金/出金: 5,000.00 クレジット機能: 0.00 クローズド・トレード P/L:1 186.63 フローティング P/L:560.29 マージン:961.62 残高: 6 186.63 自己資本: 6 746.92 フリーマージン: 5 785.30 売上総利益: 3 669.45 売上総損失: 2 482.82 合計 純利益: 1 186.63 プロフィットファクター: 1.48 予想ペイオフ: 23.27 絶対値ドローダウン: 143.75 最大ドローダウン(%): 858.39 (13.20%) 総トレード数: 51 ショートポジション (勝率): 26 (42.31%) ロングポジション (勝率): 25 (56.00%) 利益トレード(全体に占める割合): 25 (49.02%) 損失トレード(全体に占める割合): 26 (50.98%) 最大の利益取引:540.94損失取引:-292.62 平均的な利益取引:146.78損失取引:-95.49 最大連勝数(ドル):6(1,099.13)連敗数(ドル):4(-744.95) 最大連続利益(回数):1,099.13(6)連続損失(回数):-744.95(4) 平均連勝数:2連敗数:2 Forex Trader 2006.06.22 13:37 #572 Expert Advisorを少しいじって、相場のエントリー条件を緩和し、可変ロットを追加しました。 結果はこちらhttps://c.mql5.com/mql4/forum/2006/06/new_results.zip ロットは5ドルから80ドルまで様々であった。 EURUSDを対象に開発されたため、3年間のヒストリーでかなりの成績を残しています。計算量が多いので、チャンネルを推定するサンプルを単純に予測可能な時間内に300本だけに限定しました。これは12.5取引日である。実際、エントリーポイントの信頼性を高めるためには、もっと長いサンプルを検討すべきです。実験的に証明するために、もう一度ロングサンプルでExpert Advisorを実行しますが、計算には時間がかかります。EURUSD のファイルで示された結果を得た後、EURUSD 用に最適化されたのと同じパラメータ(トレーリング ストップのパラメータも含む!)でエキスパート アドバイザーを GBPUSD と USDCAD で実行したところ、EURUSD の結果と同じ結果になりました。もちろん、他の2組では目立った結果は得られませんでしたが、それでもポジティブなバイアスがかかった結果になっていると思います。したがって、私は2つの結論を導き出すことができます。1つは、ウラジスラフの提案するシステムは、正確な技術的実現により、十分な利益を生む可能性があるということだ。おそらくウラジスラフは、すべての通貨ペアで修正なしに機能する普遍的な特性を見つけることに成功したのでしょう。この3つの通貨ペアを比較すると、以下のような違いが見受けられます。USDCADはEURUSDと比較して動きが速いです。EURUSD が 1.5 の数字を通過するには 3 時間かかりますが、USDCAD には 1 時間程度かかることがあり、少なくとも結果を得た時間枠 H1 では遅延の問題に直面することになります。一般的には、この方向で研究を続けていこうと思っています。今は、ストップの適度な締め付けが最も重要だと考えています。取引するときに、いつ、どれくらい引き上げるか。標準的なトレーリングストップでは、あまり取ることができないことは明らかなので。さらに分析します。 Forex Trader 2006.06.22 14:00 #573 ソランドルさん、こんにちは。 どのような条件を緩和したのか教えてください。 Forex Trader 2006.06.22 14:12 #574 どのような条件を緩和したのか教えてください。 計算のサンプル数を減らし、マレーレベル指標の計算 期間も短くしました。サンプル数が少なければ、エントリーポイントを満足させる局所的な高値・安値が多くなります。また、マレー水準が短い期間で計算されている場合、互いに近い位置にあり、市場に参入する確率が高くなります。前のファイルの31トレードと新しいファイルの80トレードを比較します。その結果、案件数は増えたが、その分品質が低下している。しかし、Vladislavのような可変ロットサイズを導入することで、同じ期間、同じリスク量で、以前のファイルで得られた結果を上回ることができました。 Forex Trader 2006.06.23 10:36 #575 Expert Advisorの新しいテスト結果を掲載しましたhttps://c.mql5.com/mql4/forum/2006/06/new_results2.zip この結果は、EURUSDについて、チャネルの探索が行われた異なるサンプル長で得られたデータを示しています。H1期間の300本と1000本でテストしてみました。予想通り、より長いサンプルによってExpert Advisorのテストに関するレポートが改善されました。しかし、あまり意味はありません。サンプルの長さを3倍以上にしても、最終的な利益はわずか4%しか増えません。予想通り、長いサンプルの案件数は少なくなっている(19%減)が、収益性指数の14%増に見られるように、案件の質は向上している。その結果、案件数の減少や収益性の向上にもかかわらず、利益総額がいくらか増加しました。 このファイルには、EURUSD用に開発されたExpert AdvisorをUSDCHFとUSDJPYでH1の300バーの時間枠で取引した結果も含まれています。USDCHFの通貨ペアでは、結果は明らかにプラスに転じた。そして、USDJPYの結果は、テスト期間中ずっとゼロ付近をさまよっています。同時に、取引量も他の通貨ペアで同時期にテストしたときの約3倍となりました。このことから、USDJPYの性質は、すでにテストが行われているペアとは大きく異なると判断できます。したがって、もし私の戦略のバージョンがUSDJPYで機能するならば、このペアのために多少の努力と場合によってはエントリー/エグジットアルゴリズムの修正が必要になるであろう。 ところで、ウラジスラフはなぜかデモのすべてのペアで取引しておらず(技術的な問題がないか解決可能なのですが)、EURUSD, USDCHF, GBPUSDの3ペアのみで取引しています。そして、もしかしたら、ただ楽しいだけでなく、何か理由があるのかもしれないと思うのです。 Forex Trader 2006.06.23 19:00 #576 皆さん、こんにちは!MTSinkaは少し完成しました(^^)- 先ほどお話したように、月曜日にはEmpireにアップロードするために使っているLitesのアカウントへの直接アクセスを終了します。投資家のパスワードを変更するだけで、もしかしたらテスト用に残しておくかもしれません。無駄にコンピュータを動かす意味はありません。この先どうなるのか......それは見てのお楽しみ。 多くの方が実用化まで進んでいるのでしょうか? 頑張って、良い流れを作ってください。 Forex Trader 2006.06.24 11:46 #577 ウラジスラフさん、こんにちは。 このスレッドに戻ってきてくれて、とてもうれしいです。 あなたが不在の間、いくつかの質問について多くの議論が交わされました。 1.Jhonny 16.06.06 16:48 <br /> translate="no">。 ウラジスラフさん、いくつかの質問に答えてください...。 1) チャネル選択基準の重要度が同じ(つまり,これらの基準の最適な組み合わせを見つける),または,重要度の高い基準から重要度の低い基準への選択が一貫している. 2)賢い本をたくさん読んだので、何を探せばいいのか忘れてしまった :)もし、ポテンシャルエネルギーが関数的であることを意味しているのだとしたら、その結果は、ポテンシャルエネルギーが変化する移動時の軌道の方程式(値ではなく、関数!)になるので、なぜそれを探すのかがよくわかりません(終点到達時ではなく、移動中に!)。価格がまさにこの軌跡に沿って動くことは理解しており、この軌跡を近似する式(回帰式)は既に選択されているので、あとはこの軌跡をどれだけ近似できるかの結論だけである。しかし、とにかく探してみると、実は2次関数が見つかるかもしれないし、式Ах^2+Вх+Сの係数ВとСが回帰式の係数と等しい(あるいは非常に近い)場合、おそらくこれが必要なチャンネルなのではないかと、すでに疑ってしまっているが :)。 2. チャンネルでの配信についての質問ですが...。 ウラジスラフ 13.03.06 21:38 ...中心極限定理というのもあって、自由度が増していく収束分布はすべて正規分布に収束するというものです(だから、収束さえすれば中身はどうでもいいんです ;)。 この言葉は、チャンネル内の分布を正規分布と認め、正規分布関数を用いて信頼区間を計算するという意味だと理解しました。でも、他にも論理的に正しい意見があったし......。 ソランドル 18.06.06 08:42 正直なところ、Nの値の違いだけで、私の興味は尽きません。スチューデント分布は、定性的には同じ形をしていますが、自由度の違いで定量的なパラメータが変化します。自由度が非常に大きい場合、正規分布と一致するはずである。自由度が小さいと、正規分布と異なる。 スチューデント分布は、自由度が異なる。 99%の確率の場合。 q(30バー)=2.750 q(100バー)=2.626 q(300バー)=2.593 q(1000気圧)=2.581 30本と1000本の分位値で6%の差は、余分な労力をかけるに値しないと考えるなら、それは個人の自由である。私は少し違う意見を持っています。 3. ハースト係数について、もう一つ質問です。 ジョニー 17.06.06 16:49 ...実際、約80より小さいサンプルのチャンネルではHearstの値が>1になっているので、どこかでエラーが起きているのでしょう...。 しかし、http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380、そのような記述があるのです。 ただ、線形近似で指数を求めると誤差が生じるので、1として考えてください。 この発言は本当だと考えていいのか、それとも私のアルゴリズムに誤りがある可能性が高いのか? P.S. このような質問でご迷惑をおかけしていなければよいのですが、よろしくお願いします。 Forex Trader 2006.06.26 10:50 #578 Good afternoonVladislav! このスレッドを再び覗いてくださるとは、とても親切な方ですね。 あなたが不在の間、スレッドで活発に議論された質問がいくつかありました。 1.ジョニー 16.06.06 16:48 ウラジスラフさん、いくつかの質問に答えてください...。 1) チャネル選択の基準の重要度が一様である(つまり,これらの基準の最適な組み合わせを見つける)か,または重要度の高い基準から低い基準へと連続的に選択されている。 いいえ、そうではありません。それぞれに重み付けがあるのです。 2) たくさんの賢い本を読んだ後、何を見つけるべきかを忘れてしまった :)。もし、位置エネルギーの関数という概念を正しく理解しているのであれば、探索の結果、位置エネルギーが変化する軌跡の方程式(値ではなく、関数!)になるので、なぜそれを探索するのかは不明です(終点達成時ではなく、移動中に!)。価格がまさにこの軌跡に沿って動くことは理解しており、この軌跡を近似する式(回帰式)は既に選択されているので、あとはこの軌跡をどれだけ近似できるかの結論だけである。しかし、とにかく探してみると、2次関数が見つかるかもしれないし、Ah^2+Bx+Cという式の係数BとCが回帰式の係数と等しい(あるいは非常に近い)場合、おそらくこれが必要なチャンネルなのだろうと、すでに疑問を感じ始めてはいるが :). これまでにも何度も書いてきたことだが。回帰チャネルを構築するためのサンプルを探していると、このサンプルが現時点での唯一の方法で構築されていない可能性があることがわかります。どうにかして選択しなければならない。私はこれを主な判断基準としています。その根拠は、上記のスレッドに記載されています。アルゴリズムは単純で、作って、チェックして、極端なものを選ぶというものです。 2. チャネル内の分布についての質問... ウラジスラフ 13.03.06 21:38 ...また、収束した分布は自由度の増加とともに正規分布に収束するという中心極限定理があります(だから、収束さえすれば中身はどうでもいいんです ;)。 チャンネル内の分布を正規分布とみなし、正規分布関数を使って信頼区間を計算する、という意味だと理解しました。でも、他にも論理的に正しい意見があったし......。 いいえ - 最悪のコンバージェントと言われています :)(自由度の増加とともに正規に収束する)。と書いたら、solandrさんがかなり正しく理解してくれました。 ソランドル 18.06.06 08:42 正直なところ、Nの値を変えたときの違いだけが気になる。スチューデント分布は、定性的には同じ形をしていますが、自由度の違いで定量的なパラメータが変化します。自由度が非常に大きい場合、正規分布と一致するはずである。自由度が小さいと、正規分布と異なる。 スチューデント分布は、自由度が異なる。 99%の確率の場合。 q(30バー)=2.750 q(100バー)=2.626 q(300バー)=2.593 q(1000気圧)=2.581 30本と1000本の分位値で6%の差は、余分な労力をかけるに値しないと考えるなら、それは個人の自由である。私は少し違う意見を持っています。 3 もう一つ、ハースト係数について ジョニー 17.06.06 16:49 ...実際、約80より小さいサンプルのチャンネルではHearstの値が>1になっているので、どこかでエラーが起きているのでしょう...。 しかし、http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380、それについてこんな記述がある。 線形近似によってインデックスを求める際に誤差が生じるだけで、1だと思えばいいのです。 この発言は本当だと考えていいのか、それとも私のアルゴリズムに誤りがある可能性が高いのか? P.S. このような質問でご迷惑をおかけしていなければよいのですが、よろしくお願いします。 もちろん、計算の際には誤差が生じます。主な基準は、0.5を超える/下回る値です(それは、k値0.5の式のバージョンで、0または1にシフトした場合、それぞれ、シフトパラメータに相対的です)。アルゴリズムのエラーについて - かもしれません;)。あなた以外に誰がチェックできるのですか? 頑張って、良い流れを作ってください。 Forex Trader 2006.06.26 21:37 #579 Vladislav ありがとうございます。許してくれるって、もう図々しくて...。 しかし、少なくとも私には、ファンキトナルについての疑問が残っています。私自身もこの分野で何か発明してみようと思っています :) 。いつもありがとうございます。 Forex Trader 2006.06.28 10:28 #580 このスレッドにはかなり長い間来ていますが、当時はまだ4番目のスレッドがなく、そこから面白いものが始まっています。参加者の皆さん、ありがとうございました。自分にとって興味深いことをたくさん学ぶことができました。しかし、知の多さは不幸というより、むしろ疑問の多さだとも言われます。 Hurst Indexの計算に関する資料を読み進めていくと、Federの研究に行き着いた。彼は、経験則 - H=Log(R/S)/Log(0.5*N) - はむしろ悪く働き、小さなサンプルに対してのみ比較的正しいデータを与える(ただし、これらのサンプルのサイズについては何も語られていない)と主張した。そこで、ハースト指数計算を方法論的な資料に基づいて厳密に実施することにした(Feder氏が警告した以上に悪い結果になったようだ)。 私は、このコードがパフォーマンスの面で最も最適なものではない(多くの関数呼び出しとすべて)かもしれないことを認識していますが、主なものは他のものです - 私は、結果が疑わしいと私には思えるので、私はその計算のロジックを正しく理解しているかどうかを自分自身で明らかにしたかった、と私は知識のある人々に尋ねることにしました。 私の計算では、マニュアルにある計算式だけを考慮し、余分なものは何も入れていません。 実装は非常にシンプルで、スクリプトの形になっています。関数は8つだけですが、その説明とソースコードのコメントを以下に添付します。関数から計算されたデータを含む配列を取得する、以下のように実装されています。各関数は double out[] 配列を受け取り、関数本体で初期化され、関数の目的に応じて計算データを配列に書き込む。 void GetVn(double out[], int N, int i) I form "inflow" - v[].終値はインフローとする。結果は配列 out[] に書き込まれます void SetArrayMv(double v[], double out[], int N) 全ての観測値について平均流入量 - mv[] を計算しています。この関数は、流入量と観測回数 - N を受け取ります void SetArrayDv(double v[], double out[], double mv[], int N) 流入量の累積偏差 - dv[] を計算します。流入量、平均流入量、観測回数を配列で渡す void SetArrayR(double dv[], int N, double out[]) spread - r[] を計算している。関数に流入量と観測回数を渡しています。 void SetArrayS(double v[], double mv[], double out[], int N) 標準偏差 s[]を計算しています。流入量」「平均流入量」「観測回数」を渡す void SetArrayRS(double r[], double s[], double out[], int N) 正規化したスプレッドを計算する。R/Sの値をrs[]配列に書き込んでいます。関数「スプレッド」「標準偏差」「観測回数」を渡す void LogN(double out[], int N) Nから配列対数を計算 void GetLine(double x[],double y[], int N) 近似線の係数を計算しています。 //+------------------------------------------------------------------+ //| HERST.mq4 | //+------------------------------------------------------------------+ #property copyright "" #property link "grasn@rambler.ru" int start() { int i=0; int N=100; double v[]; // Приток double mv[]; // Средний приток double dv[]; // Накопившееся отклонение double r[]; // Размах double s[]; // Стандартное отклонение double rs[]; // Нормированный размах double logN[]; // логарифм от N GetVn(v, N, i); SetArrayMv(v, mv, N); SetArrayDv(v, dv, mv, N); SetArrayR(dv, N, r); SetArrayS(v, mv, s, N); SetArrayRS(r, s, rs, N); LogN(logN, N); GetLine(logN, rs, N); return(0); } // Приток // ________________________________________________________________________________________ // "Приток".....................................................................double out[] // Длина выборки......................................................................int N // номер бара с которого выполняется выборка..........................................int i void GetVn(double out[], int N, int i) { int n; int k; double x[]; ArrayResize(x, N); ArrayInitialize(x, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); k=i+N-1; for(n=0; n<=N-1; n++) { x[n]=Close[k]; k=k-1; } ArrayCopy(out, x, 0, 0, WHOLE_ARRAY); return(0); } // Средний приток // ________________________________________________________________________________________ // Приток ........................................................................double v[] // Средний приток ..............................................................double out[] // Число наблюдений...................................................................int N void SetArrayMv(double v[], double out[], int N) { int n; int i; double SUM; double mv[]; ArrayResize(mv, N); ArrayInitialize(mv, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); for(n=0; n<=N-1; n++) { SUM=0.0; for(i=0; i<=n; i++) { SUM=SUM+v[i]; } mv[n]=(1.0/(n+1))*SUM; } ArrayCopy(out, mv, 0, 0, WHOLE_ARRAY); return(0); } // Накопившееся отклонение притока от среднего // ________________________________________________________________________________________ // Приток ........................................................................double v[] // Накопившееся отклонение притока..............................................double out[] // Средний приток................................................................double mv[] // Число наблюдений...................................................................int N void SetArrayDv(double v[], double out[], double mv[], int N) { int n; int i; double dv[]; double SUM; ArrayResize(dv, N); ArrayInitialize(dv, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); for(n=0; n<=N-1; n++) { SUM=0.0; for(i=0; i<=n; i++) { SUM=SUM+(v[i]-mv[i]); } dv[n]=SUM; } ArrayCopy(out, dv, 0, 0, WHOLE_ARRAY); return(0); } // Размах // ________________________________________________________________________________________ // Накопившееся отклонение притока от среднего...................................double dv[] // Размах.......................................................................double out[] // Число наблюдений...................................................................int N void SetArrayR(double dv[], int N, double out[]) { int n; int idMax; int idMin; double rn[]; double max; double min; ArrayResize(rn, N); ArrayInitialize(rn, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); for(n=1; n<=N; n++) { idMax=ArrayMaximum(dv, n, 0); idMin=ArrayMinimum(dv, n, 0); max=dv[idMax]; min=dv[idMin]; rn[n]=MathAbs(max-min); } ArrayCopy(out, rn, 0, 0, WHOLE_ARRAY); return(0); } // Стандартное отклонение // ________________________________________________________________________________________ // Приток.........................................................................double v[] // Среднее приток................................................................double mv[] // Стандартное отклонение.......................................................double out[] // Число наблюдений...................................................................int N void SetArrayS(double v[], double mv[], double out[], int N) { int n; int i; double sn[]; double SUM; ArrayResize(sn, N); ArrayInitialize(sn, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); for(n=0; n<=N-1; n++) { SUM=0.0; for(i=0; i<=n; i++) { SUM=SUM+MathPow((v[i]-mv[i]), 2); } sn[n]=MathSqrt((1.0/(n+1))*SUM); } ArrayCopy(out, sn, 0, 0, WHOLE_ARRAY); return(0); } // Нормированный размах // ________________________________________________________________________________________ // Размах.........................................................................double r[] // Стандартное отклонение.........................................................double s[] // Нормированный размах.........................................................double out[] // Число наблюдений...................................................................int N void SetArrayRS(double r[], double s[], double out[], int N) { int n; double rs[]; ArrayResize(rs, N); ArrayInitialize(rs, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); for(n=3; n<=N-1; n++) { if(s[n]==0) { rs[n]=0.0; } else { rs[n]=MathLog(r[n]/s[n]); // Print("rs ", rs[n]); } } ArrayCopy(out, rs, 0, 0, WHOLE_ARRAY); return(0); } // Логарифм N // ________________________________________________________________________________________ // Логарифм N...................................................................double out[] // Число наблюдений...................................................................int N void LogN(double out[], int N) { int n; double logN[]; ArrayResize(logN, N); ArrayInitialize(logN, 0.0); ArrayResize(out, N); ArrayInitialize(out, 0.0); for(n=3; n<=N-1; n++) { logN[n]=MathLog(n); // Print("n ", logN[n]); } ArrayCopy(out, logN, 0, 0, WHOLE_ARRAY); return(0); } // Расчет коэффициентов аппроксимирующей линии // ______________________________________________________________ // log(R/S).......................................................................double x[] // log(N)................................................................................y[] // Число наблюдений...................................................................int N void GetLine(double x[],double y[], int N) { double m=0; double b=0; double tan = 0; int size=N; double sum_x=0.0; double sum_y=0.0; double sum_xy=0.0; double sum_xx=0.0; for (int i=3; i<size; i++) { sum_x=sum_x+x[i]; sum_y=sum_y+y[i]; sum_xy=sum_xy+(x[i]*y[i]); sum_xx=sum_xx+(x[i]*x[i]); } m = (size*sum_xy - sum_x*sum_y) / (size*sum_xx - sum_x*sum_x); b = sum_y/size - m * sum_x / size; Print("Аппроксимирующая прямая: y(x)=", m, "x+", b); Print("Показатель Херста= ", m); return(0); } 以下は、乱数系列とEURUSDの日足に対するlog(R/S)とlog(N)のプロットです。 乱数系列は、以下のパラメータでMathRand()を使用して生成しました。 N=100 結果: H=0.5454 Y(x)=0.5454x+0.2653 Nが増加すると、ハースト指数は0.5に近づく EURUSD D1計算は、以下のパラメータで行った: i=0 (27.06 から開始) N=100 計算結果。H=1.0107(なんでこんなにでかいんだ) y(x)=1.0197x-0.5885 いくつか疑問がありますね。1.インフローに何を取るか?フルプライス、モジュロ差、プラス差のみ?つまり、当該メソッドにおける「流入」の概念は、データの事前準備に何らかの影響を与えるのでしょうか。それとも、調査するデータを流入とすべきなのか。私は直感的に、例えば終値を計算に取り入れた。 2.スプレッド、特に標準偏差の値がゼロの場合の正規化スプレッドの求め方。これは、小さな配列のインデックスにほとんど存在します。ゼロが検出された場合は、とりあえず正規化したスプレッドもゼロとする。これでよいのでしょうか?とりあえず、最初の値の計算を放棄する。3.結果そのものは好きではありません。 Inflow (Close[] D1) on all bars Hurst index 0.9069 Inflow (Close[] D1) i=0, N=200 Hurst index 0.8264 数字が楽観的すぎてVladislavaのデータ(全シリーズで0.64)と一致しないが、非常に低い値も存在する。すべてのバーの価格差について、私はハースト指数0.5119 4を取得します。平均流入量を正しく計算できているか。すべてのイテレーションで1つの値なのか、それとも現在のNに応じて変化させるべきか?5.私が混同して、間違った方法で計算している可能性もあります。どうか、私がどこを間違えたのか説明してください :o( 追記: このフォーラムのメンバーが私を助けてくれることを期待しています。このような単純な方法論でどこが間違っているのか、Vladislavが説明してくれると非常にありがたいのですが。 a trading strategy based Big Expert Advisor example DoEasyライブラリの時系列(第35部): バーオブジェクトと銘柄の時系列リスト 1...515253545556575859606162636465...309 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
概要
入金/出金: 5,000.00 クレジット機能: 0.00
クローズド・トレード P/L:1 186.63 フローティング P/L:560.29 マージン:961.62
残高: 6 186.63 自己資本: 6 746.92 フリーマージン: 5 785.30
売上総利益: 3 669.45 売上総損失: 2 482.82 合計 純利益: 1 186.63
プロフィットファクター: 1.48 予想ペイオフ: 23.27
絶対値ドローダウン: 143.75 最大ドローダウン(%): 858.39 (13.20%)
総トレード数: 51 ショートポジション (勝率): 26 (42.31%) ロングポジション (勝率): 25 (56.00%)
利益トレード(全体に占める割合): 25 (49.02%) 損失トレード(全体に占める割合): 26 (50.98%)
最大の利益取引:540.94損失取引:-292.62
平均的な利益取引:146.78損失取引:-95.49
最大連勝数(ドル):6(1,099.13)連敗数(ドル):4(-744.95)
最大連続利益(回数):1,099.13(6)連続損失(回数):-744.95(4)
平均連勝数:2連敗数:2
結果はこちらhttps://c.mql5.com/mql4/forum/2006/06/new_results.zip
ロットは5ドルから80ドルまで様々であった。
EURUSDを対象に開発されたため、3年間のヒストリーでかなりの成績を残しています。計算量が多いので、チャンネルを推定するサンプルを単純に予測可能な時間内に300本だけに限定しました。これは12.5取引日である。実際、エントリーポイントの信頼性を高めるためには、もっと長いサンプルを検討すべきです。実験的に証明するために、もう一度ロングサンプルでExpert Advisorを実行しますが、計算には時間がかかります。EURUSD のファイルで示された結果を得た後、EURUSD 用に最適化されたのと同じパラメータ(トレーリング ストップのパラメータも含む!)でエキスパート アドバイザーを GBPUSD と USDCAD で実行したところ、EURUSD の結果と同じ結果になりました。もちろん、他の2組では目立った結果は得られませんでしたが、それでもポジティブなバイアスがかかった結果になっていると思います。したがって、私は2つの結論を導き出すことができます。1つは、ウラジスラフの提案するシステムは、正確な技術的実現により、十分な利益を生む可能性があるということだ。おそらくウラジスラフは、すべての通貨ペアで修正なしに機能する普遍的な特性を見つけることに成功したのでしょう。この3つの通貨ペアを比較すると、以下のような違いが見受けられます。USDCADはEURUSDと比較して動きが速いです。EURUSD が 1.5 の数字を通過するには 3 時間かかりますが、USDCAD には 1 時間程度かかることがあり、少なくとも結果を得た時間枠 H1 では遅延の問題に直面することになります。一般的には、この方向で研究を続けていこうと思っています。今は、ストップの適度な締め付けが最も重要だと考えています。取引するときに、いつ、どれくらい引き上げるか。標準的なトレーリングストップでは、あまり取ることができないことは明らかなので。さらに分析します。
どのような条件を緩和したのか教えてください。
計算のサンプル数を減らし、マレーレベル指標の計算 期間も短くしました。サンプル数が少なければ、エントリーポイントを満足させる局所的な高値・安値が多くなります。また、マレー水準が短い期間で計算されている場合、互いに近い位置にあり、市場に参入する確率が高くなります。前のファイルの31トレードと新しいファイルの80トレードを比較します。その結果、案件数は増えたが、その分品質が低下している。しかし、Vladislavのような可変ロットサイズを導入することで、同じ期間、同じリスク量で、以前のファイルで得られた結果を上回ることができました。
この結果は、EURUSDについて、チャネルの探索が行われた異なるサンプル長で得られたデータを示しています。H1期間の300本と1000本でテストしてみました。予想通り、より長いサンプルによってExpert Advisorのテストに関するレポートが改善されました。しかし、あまり意味はありません。サンプルの長さを3倍以上にしても、最終的な利益はわずか4%しか増えません。予想通り、長いサンプルの案件数は少なくなっている(19%減)が、収益性指数の14%増に見られるように、案件の質は向上している。その結果、案件数の減少や収益性の向上にもかかわらず、利益総額がいくらか増加しました。
このファイルには、EURUSD用に開発されたExpert AdvisorをUSDCHFとUSDJPYでH1の300バーの時間枠で取引した結果も含まれています。USDCHFの通貨ペアでは、結果は明らかにプラスに転じた。そして、USDJPYの結果は、テスト期間中ずっとゼロ付近をさまよっています。同時に、取引量も他の通貨ペアで同時期にテストしたときの約3倍となりました。このことから、USDJPYの性質は、すでにテストが行われているペアとは大きく異なると判断できます。したがって、もし私の戦略のバージョンがUSDJPYで機能するならば、このペアのために多少の努力と場合によってはエントリー/エグジットアルゴリズムの修正が必要になるであろう。
ところで、ウラジスラフはなぜかデモのすべてのペアで取引しておらず(技術的な問題がないか解決可能なのですが)、EURUSD, USDCHF, GBPUSDの3ペアのみで取引しています。そして、もしかしたら、ただ楽しいだけでなく、何か理由があるのかもしれないと思うのです。
多くの方が実用化まで進んでいるのでしょうか?
頑張って、良い流れを作ってください。
このスレッドに戻ってきてくれて、とてもうれしいです。
あなたが不在の間、いくつかの質問について多くの議論が交わされました。
1.
ウラジスラフさん、いくつかの質問に答えてください...。
1) チャネル選択基準の重要度が同じ(つまり,これらの基準の最適な組み合わせを見つける),または,重要度の高い基準から重要度の低い基準への選択が一貫している.
2)賢い本をたくさん読んだので、何を探せばいいのか忘れてしまった :)もし、ポテンシャルエネルギーが関数的であることを意味しているのだとしたら、その結果は、ポテンシャルエネルギーが変化する移動時の軌道の方程式(値ではなく、関数!)になるので、なぜそれを探すのかがよくわかりません(終点到達時ではなく、移動中に!)。価格がまさにこの軌跡に沿って動くことは理解しており、この軌跡を近似する式(回帰式)は既に選択されているので、あとはこの軌跡をどれだけ近似できるかの結論だけである。しかし、とにかく探してみると、実は2次関数が見つかるかもしれないし、式Ах^2+Вх+Сの係数ВとСが回帰式の係数と等しい(あるいは非常に近い)場合、おそらくこれが必要なチャンネルなのではないかと、すでに疑ってしまっているが :)。
2. チャンネルでの配信についての質問ですが...。
ウラジスラフ 13.03.06 21:38
...中心極限定理というのもあって、自由度が増していく収束分布はすべて正規分布に収束するというものです(だから、収束さえすれば中身はどうでもいいんです ;)。
この言葉は、チャンネル内の分布を正規分布と認め、正規分布関数を用いて信頼区間を計算するという意味だと理解しました。でも、他にも論理的に正しい意見があったし......。
ソランドル 18.06.06 08:42
正直なところ、Nの値の違いだけで、私の興味は尽きません。スチューデント分布は、定性的には同じ形をしていますが、自由度の違いで定量的なパラメータが変化します。自由度が非常に大きい場合、正規分布と一致するはずである。自由度が小さいと、正規分布と異なる。
スチューデント分布は、自由度が異なる。
99%の確率の場合。
q(30バー)=2.750
q(100バー)=2.626
q(300バー)=2.593
q(1000気圧)=2.581
30本と1000本の分位値で6%の差は、余分な労力をかけるに値しないと考えるなら、それは個人の自由である。私は少し違う意見を持っています。
3. ハースト係数について、もう一つ質問です。
ジョニー 17.06.06 16:49
...実際、約80より小さいサンプルのチャンネルではHearstの値が>1になっているので、どこかでエラーが起きているのでしょう...。
しかし、http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380、そのような記述があるのです。
この発言は本当だと考えていいのか、それとも私のアルゴリズムに誤りがある可能性が高いのか?
P.S. このような質問でご迷惑をおかけしていなければよいのですが、よろしくお願いします。
このスレッドを再び覗いてくださるとは、とても親切な方ですね。
あなたが不在の間、スレッドで活発に議論された質問がいくつかありました。
1.
ウラジスラフさん、いくつかの質問に答えてください...。
1) チャネル選択の基準の重要度が一様である(つまり,これらの基準の最適な組み合わせを見つける)か,または重要度の高い基準から低い基準へと連続的に選択されている。
いいえ、そうではありません。それぞれに重み付けがあるのです。
2) たくさんの賢い本を読んだ後、何を見つけるべきかを忘れてしまった :)。もし、位置エネルギーの関数という概念を正しく理解しているのであれば、探索の結果、位置エネルギーが変化する軌跡の方程式(値ではなく、関数!)になるので、なぜそれを探索するのかは不明です(終点達成時ではなく、移動中に!)。価格がまさにこの軌跡に沿って動くことは理解しており、この軌跡を近似する式(回帰式)は既に選択されているので、あとはこの軌跡をどれだけ近似できるかの結論だけである。しかし、とにかく探してみると、2次関数が見つかるかもしれないし、Ah^2+Bx+Cという式の係数BとCが回帰式の係数と等しい(あるいは非常に近い)場合、おそらくこれが必要なチャンネルなのだろうと、すでに疑問を感じ始めてはいるが :).
これまでにも何度も書いてきたことだが。回帰チャネルを構築するためのサンプルを探していると、このサンプルが現時点での唯一の方法で構築されていない可能性があることがわかります。どうにかして選択しなければならない。私はこれを主な判断基準としています。その根拠は、上記のスレッドに記載されています。アルゴリズムは単純で、作って、チェックして、極端なものを選ぶというものです。
2. チャネル内の分布についての質問...
ウラジスラフ 13.03.06 21:38
...また、収束した分布は自由度の増加とともに正規分布に収束するという中心極限定理があります(だから、収束さえすれば中身はどうでもいいんです ;)。
チャンネル内の分布を正規分布とみなし、正規分布関数を使って信頼区間を計算する、という意味だと理解しました。でも、他にも論理的に正しい意見があったし......。
いいえ - 最悪のコンバージェントと言われています :)(自由度の増加とともに正規に収束する)。と書いたら、solandrさんがかなり正しく理解してくれました。
ソランドル 18.06.06 08:42
正直なところ、Nの値を変えたときの違いだけが気になる。スチューデント分布は、定性的には同じ形をしていますが、自由度の違いで定量的なパラメータが変化します。自由度が非常に大きい場合、正規分布と一致するはずである。自由度が小さいと、正規分布と異なる。
スチューデント分布は、自由度が異なる。
99%の確率の場合。
q(30バー)=2.750
q(100バー)=2.626
q(300バー)=2.593
q(1000気圧)=2.581
30本と1000本の分位値で6%の差は、余分な労力をかけるに値しないと考えるなら、それは個人の自由である。私は少し違う意見を持っています。
3 もう一つ、ハースト係数について
ジョニー 17.06.06 16:49
...実際、約80より小さいサンプルのチャンネルではHearstの値が>1になっているので、どこかでエラーが起きているのでしょう...。
しかし、http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380、それについてこんな記述がある。
この発言は本当だと考えていいのか、それとも私のアルゴリズムに誤りがある可能性が高いのか?
P.S. このような質問でご迷惑をおかけしていなければよいのですが、よろしくお願いします。
もちろん、計算の際には誤差が生じます。主な基準は、0.5を超える/下回る値です(それは、k値0.5の式のバージョンで、0または1にシフトした場合、それぞれ、シフトパラメータに相対的です)。アルゴリズムのエラーについて - かもしれません;)。あなた以外に誰がチェックできるのですか?
頑張って、良い流れを作ってください。
しかし、少なくとも私には、ファンキトナルについての疑問が残っています。私自身もこの分野で何か発明してみようと思っています :) 。いつもありがとうございます。
Hurst Indexの計算に関する資料を読み進めていくと、Federの研究に行き着いた。彼は、経験則 - H=Log(R/S)/Log(0.5*N) - はむしろ悪く働き、小さなサンプルに対してのみ比較的正しいデータを与える(ただし、これらのサンプルのサイズについては何も語られていない)と主張した。そこで、ハースト指数計算を方法論的な資料に基づいて厳密に実施することにした(Feder氏が警告した以上に悪い結果になったようだ)。
私は、このコードがパフォーマンスの面で最も最適なものではない(多くの関数呼び出しとすべて)かもしれないことを認識していますが、主なものは他のものです - 私は、結果が疑わしいと私には思えるので、私はその計算のロジックを正しく理解しているかどうかを自分自身で明らかにしたかった、と私は知識のある人々に尋ねることにしました。
私の計算では、マニュアルにある計算式だけを考慮し、余分なものは何も入れていません。
実装は非常にシンプルで、スクリプトの形になっています。関数は8つだけですが、その説明とソースコードのコメントを以下に添付します。関数から計算されたデータを含む配列を取得する、以下のように実装されています。各関数は double out[] 配列を受け取り、関数本体で初期化され、関数の目的に応じて計算データを配列に書き込む。
void GetVn(double out[], int N, int i)
I form "inflow" - v[].終値はインフローとする。結果は配列 out[] に書き込まれます
void SetArrayMv(double v[], double out[], int N)
全ての観測値について平均流入量 - mv[] を計算しています。この関数は、流入量と観測回数 - N を受け取ります
void SetArrayDv(double v[], double out[], double mv[], int N)
流入量の累積偏差 - dv[] を計算します。流入量、平均流入量、観測回数を配列で渡す
void SetArrayR(double dv[], int N, double out[])
spread - r[] を計算している。関数に流入量と観測回数を渡しています。
void SetArrayS(double v[], double mv[], double out[], int N)
標準偏差 s[]を計算しています。流入量」「平均流入量」「観測回数」を渡す
void SetArrayRS(double r[], double s[], double out[], int N)
正規化したスプレッドを計算する。R/Sの値をrs[]配列に書き込んでいます。関数「スプレッド」「標準偏差」「観測回数」を渡す
void LogN(double out[], int N)
Nから配列対数を計算
void GetLine(double x[],double y[], int N)
近似線の係数を計算しています。
以下は、乱数系列とEURUSDの日足に対するlog(R/S)とlog(N)のプロットです。 乱数系列は、以下のパラメータでMathRand()を使用して生成しました。 N=100 結果: H=0.5454 Y(x)=0.5454x+0.2653 Nが増加すると、ハースト指数は0.5に近づく EURUSD D1計算は、以下のパラメータで行った: i=0 (27.06 から開始) N=100 計算結果。H=1.0107(なんでこんなにでかいんだ) y(x)=1.0197x-0.5885 いくつか疑問がありますね。1.インフローに何を取るか?フルプライス、モジュロ差、プラス差のみ?つまり、当該メソッドにおける「流入」の概念は、データの事前準備に何らかの影響を与えるのでしょうか。それとも、調査するデータを流入とすべきなのか。私は直感的に、例えば終値を計算に取り入れた。 2.スプレッド、特に標準偏差の値がゼロの場合の正規化スプレッドの求め方。これは、小さな配列のインデックスにほとんど存在します。ゼロが検出された場合は、とりあえず正規化したスプレッドもゼロとする。これでよいのでしょうか?とりあえず、最初の値の計算を放棄する。3.結果そのものは好きではありません。 Inflow (Close[] D1) on all bars Hurst index 0.9069 Inflow (Close[] D1) i=0, N=200 Hurst index 0.8264 数字が楽観的すぎてVladislavaのデータ(全シリーズで0.64)と一致しないが、非常に低い値も存在する。すべてのバーの価格差について、私はハースト指数0.5119 4を取得します。平均流入量を正しく計算できているか。すべてのイテレーションで1つの値なのか、それとも現在のNに応じて変化させるべきか?5.私が混同して、間違った方法で計算している可能性もあります。どうか、私がどこを間違えたのか説明してください :o( 追記: このフォーラムのメンバーが私を助けてくれることを期待しています。このような単純な方法論でどこが間違っているのか、Vladislavが説明してくれると非常にありがたいのですが。