externstring A3 = "Расчет лота по Р.Винсу"; // При количестве сделок на истории от 150 (при наличии репрезентативной выборки)externstring A4 = "через значение оптимального f"; // метод геометрического среднего externbool optimal_f = true; // Торговать с расчетом последующих объемов лотов по методу Р.Винса: Да/Нетexterndouble Transaction_number = 150; // номер сделки, с которого считаем последующие объемы открываемых позиций через // оптимальное f. До этой сделки - минимальный лот.
externdouble Lots = 0;
externstring A0 = "Вариант ММ";
externstring A1 = "Процент от своб. ср-тв";
externstring A2 = "с возможностью уменьшения Lots при проигрыше";
externbool MaximumRisk_DecreaseFactor = true; //считать объем лотов от процента своб ср-тв и также с уменьшающим коэффициентом//(при его значении больше "0") при предыщущей убыточной позиции на истории торгового счетаexterndouble MaximumRisk = 0.02; // процент от своб ср-тв
externdouble DecreaseFactor = 3; // уменьшающий коэфиициент при проигрыше для открытия очередной меньшей предыдущей по объему позиции
最適なfによる バリエーション№3-。
計算方法については、「コスト計算」の章を参照してください。31-33 - 2ページ目のアーカイブの予告編 - 書籍「Mathematics of Capital Management」。
Vinceのフルロット計算機能が完成したら、例えば毎月(あるいは毎週)ロットを計算して、オープントレードを管理するようなEAの例も見てみたいものです:))
また、Vinceによるロット計算のないExpert Advisorの動作のバリエーション、すなわち、永久ロットまたは預金の%に応じてロット増加。
この実験の結果は興味深いものです。
やはり、これがすべての始まりだったのですね!?;)
EAにコードを入れて自分で確認するのが面倒くさかったです:)))
まだちゃんとしたExpert Advisorがないんです。アイデアだけはあるんです。そのため、最適化せずに標準的なMoving Averageを取り、利益の出る期間を選びました。
TWRが "1 "にリセットされないことを理解した上で、最後に試したコードは次の通りです。
TWRアレイはありません。
オーバーフローで長い時間待たされることになりますよ。でも、全然なかったかもしれない...。
もう一つ、変数Dは歴史上の取引の最大損失額なので、この構成を変更する必要があります。
すなわち、(外部変数による面倒な操作を避けるために)履歴のループの中で、その最大値(テスト履歴の中で最も損失の大きい取引の最大損失)も求め、取引中に大きな損失を出すことができるように係数、例えば1.5を掛け、その値(注文履歴 ループから先に得た)をさらにTTRの計算で考慮します。
TWR = 1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D));
D - これは過去(または最初の損失)ではなく、これはテスト中の全体の歴史のための貿易あたりの最大損失であり、その後、我々は(現在の瞬間から)後で開かれるロットのサイズを決定するために、エキスパート-アドバイザーの最適なfの計算のための外部変数なしで行うことができます。
Vinceのロット計算機能が充実してきたら、例えば毎月(あるいは毎週)ロットを計算して、オープントレードを管理するようなEAの例も見てみたいです:))
また、Vinceによるロット計算のないExpert Advisorの動作のバリエーション、すなわち、永久ロットまたは預金の%に応じてロット増加。
この実験の結果は興味深いものです。
やはり、これがすべての始まりだったのですね!?;)
MMには多くのバリエーションがあり、例えばこの ようなものがあります。私はこれを関数(ストップロスの大きさに応じて、資本金あたりの割合でポジションのボリューム)でラップしています。もしご興味があれば、このフィウをここに掲載することもできます。
すべてが完了したら、すぐにチェックし、いくつかのバリエーションのフクロウ(MMの異なるバリエーションを含む)のコードに投稿し、一緒に比較し、チェックする...。:-)))
同じEAで同じ設定、異なるMMのバリエーションでのテスト結果の例は、幾何平均を使ったR.Vinceによる最適fの計算に成功した週明けに紹介する予定です。
Roman.:
マキシムさん、ありがとうございます、確認してみます。もう一つあります。D変数は履歴のトレードの最大損失なので、この構造を変更する必要があります。
つまり、ループの中で(外部変数と揉めないように)最大値(テストの歴史の中で最も損失の大きい取引での最大損失)を見つけることです。このように、最大限の損失を追求した構造になっています。レポートとログを比較しているところです。すべてフィットする。
:-)))そうですね...:-))もう目が洗われた...。:-))) まだ水曜日なのに...。働いて働いて働きまくる:-)))
R.Vinceの幾何平均のためのmetodによるバージョン3を含むMMの異なるバリエーションでテストした結果をお見せしています - 最適なf。 同じロット計算の機能をEAに表示し、得られた出力残高変化値を比較することができます。ここでの課題は、R.Vinceの最適fによるMMを使ったフクロウの操作を最適に見せることではなく、最適fを正しく計算するf関数を書くこと、その結果、その後の注文を開ける量を計算することであった。以下は外部変数です。
ここで、本Expert Advisor(トレーラーでは、МАをベースに、MT端末の標準添付)には、レポートとともに、以下のような最適fの算出方法が実装されています。テスターまたは取引口座での取引量がTransaction_number変数で指定された量(後続の注文が設定/開始される量を考慮した特性(利益/損失)に基づく決済ポジションの量)を超えた場合、R.Vinceによるロットの計算に進みます。つまり、次の注文はすべて新しい fの値で出され、その結果、新しい 数量が出されるのです。しかし、この方法はあまり正しくありません。 もし、あなたがこのロット計算方法に興味を持ったなら、次のことを考慮する必要があります:私は例をあげますが、このロット計算方法は正しいですが、新しいボリュームは Transaction_numberより大きい連続取引ごとにではなく、次のように計算するべきです(それは最適fの計算方法のみが重要である例です):2008年1月から2010年1月までH1でEAパラメータを最適化して、最適f値と順張りのポジション量を計算してから、その後にその後、我々はこの手順を繰り返し、すなわち2008年1月 - 2010年6月 - 次の30ヶ月と次の期間15〜25%の最適fを計算 - すなわち、最大7または8ヶ月 - 我々は与えられた計算期間(計算期間Transaction_numberで - それは代表サンプリングの考え方に対応するであろう数値、すなわち200から500を持っていなければならない - すでに規範、IMHO)新しい最適f計算結果として得られた新しい一定のボリュームを使って 取引しています。この期間中、取引量は以前に計算された最適値fに対応して一定であり、次の取引ごとに再計算されることはありません。
バリアントです。バリエーション№1 - 固定ロット - 0,1.
バリエーション2 - フリー・ファンドの割合
最適なfによる バリエーション№3-。
計算方法については、「コスト計算」の章を参照してください。31-33 - 2ページ目のアーカイブの予告編 - 書籍「Mathematics of Capital Management」。
これに関連して、同書のPGから興味深い言葉を引用する。36:
"
分散投資を効果的に行えば、損失は完全に回避できるという誤解があります。効果的な分散投資によって損失を軽減できることはある程度事実ですが、完全に回避できるわけではありません。惑わされないでください。どんなに優れたシステムを適用しても、どんなに効果的に分散投資をしても、大きな損失に見舞われることに変わりはありません。その理由は、皆さんの市場システムが相互に相関しているからではなく、本来はそうでないと思うのに、ポートフォリオの市場システムのほとんど、あるいはすべてが不利に働く場合があるからです。すべてのトレーディングシステムが最適な状態で動作し、なおかつ最大損失が30%未満になるように、5年間のヒストリカルデータを持つポートフォリオを探してみてください。簡単なことではないでしょう。市場制度はいくつあっても困らない。数学的に正しいことを全てやろうと思ったら、口座残高の30~95%を失う覚悟が必要です...:-))厳しい規律が要求され、誰もがそれを守れるわけではありません。
トレーダーは、一定数の契約を取引することをあきらめた途端、いくつ取引するかという問題に直面する。トレーダーが問題を認めるかどうかに関係なく、常に起こることです。なぜなら、この方法では幾何学的な成長を遂げることができないからです。したがって、好むと好まざるとにかかわらず、次のトレードでいくつ取引するかという問題は、誰にとっても避けられないものとなるのです。単にランダムな数量を選ぶと、重大なエラーにつながる可能性があります。 最適な fは、数学的に正しい唯一の解である。"
P.S. あなたの専門家にこのFを回し、見て、チェックして、他のMMバリアントと結果を比較し、興味深いレポートや結論をここで共有 することを忘れないでください...
次のコードに関する注記があります。
精度を「1」から「2」に変更します。結局のところ、Min_Lot = 0.01もありますか?
今すぐ最後のテストを試してください。
このコードにはもう1つ注意があります。負けトレードのパーセンテージが利益のあるトレードのパーセンテージを超える場合、ロット計算で利用可能なすべての資金を使用することはお勧めできません。
または、Vinceによるロットの計算を開始する前に、より大きなロットを使用する必要があります。以下の説明。
次の結果が得られました(EURUSD通貨ペア、上半期、今年、最適化は実行されませんでした、パラメーターはあなたのものです):
0)。一定のロット(ロット= 0.1)。
結論:
結果は許容範囲内です:トランザクションの数、収益性。設定を最適化しませんでした。
1)。著者のコード(Transaction_number = 100)を使用する最初の試みでは、0.01の定数ロットから始めます。
結論:
EAが100回の取引を行うまで:損失は小さく、最大損失も大きくありません(D)。したがって、Hは小さいです。
そして、Vinceの計算されたロットは巨大になります:
パラメータHの何倍も大きいすべての無料資金を使用するためです。
先ほど書いたように、負けトレードの割合は儲かるトレードよりも高く、テストで起こった負けの確率は高くなっています。
次の最適なfの計算で、パラメータDは前のパラメータの数倍になり、それで到着しました...ポジションは0.01ロットのボリュームで開かれます。
2)。著者のコード(Transaction_number = 100)を使用する2番目の試みでは、0.1の定数ロット(Initial_Lots入力パラメーターを追加)から開始します。
次の行へのコードの変更:
結論:
チャートはより面白くなりましたが、それでも収益性は悪化しています...
ポジションのボリュームの急激なジャンプに憤慨し、コードに入りました。
3)。一定のロット0.1から開始して、作成者のコード(Transaction_number = 100)を使用する3回目の試行で、ロット計算の精度が修正されました。
次の行へのコードの変更:
結論:
ロットはよりスムーズに出始めましたが、やはり、負け取引の数が多いため、アドバイザーの収益性は低下しました。
4)。著者のコード(Transaction_number = 100)を使用する4番目の試みは、一定のロット0.1から開始し、フリーマージンの一部(50%)のみを使用して、Vinceに従ってロットを計算します(FreeMarginRisk入力パラメーターを追加)。
次の行へのコードの変更:
結論:
まず、最大ドローダウンと収益性を見てみましょう。最初の試みよりもはるかに優れています。
次のパターンは、バランスチャートとボリュームチャートにも表示されます。
-収益性の高い領域が観察されると、ロットは増加します。
-しかし、一連の損失が発生し(パラメータDが急激に増加)、それに応じて計算されたロットが急激に減少するとすぐに;
-その後、ロットの収益性の高いセクションが復元されますが、収益性の高い取引の割合が低いため、この現象は長くはありません。
ある幾何平均か何かがあります! :)))
最新のコードを添付しています...
結論:
結果の式からVinceに従ってロットを正しく計算する方法:
わかりません...つまり、どのパラメータを使用する必要がありますか。
あるいは、誰かが結果に異議を唱えるかもしれません。
しかし、私はあなたがどういうわけか最大損失(パラメータD)に対処する必要があることを確かに知っています、それでそれはロットに比例して成長しません(多分どういうわけかStopLossとの取引を制限します)...
しかし、まず第一に、収益性の高い取引と収益性の低い取引の比率を上げる必要があります。 Expert Advisor自体は非常に単純であり、私は非常に有益な結果を期待していませんでした。
一般的に、ヴィンスに従ってロットを計算するこの方法には生存権があると思います。しかし、それを完全に習得するためには、追加の研究が必要であり、私は現時点では準備ができていません。そのような既製の取引システムはありません...
私は今、波動理論、テクニカル分析、ローソク足、価格行動法、ピプソマニアの間をさまよっている道を進んでいます、そして時々私はLavinshchikとMartinshchikを見ます! :DD
以下のコードにコメントがあります。
1. 精度を「1」から「2」に変更します。結局、Min_Lot = 0.01もあるんですか?
今すぐ最後のテストに挑戦してください。
2 また、このコードについては、もう一つコメントがあります。 負けトレードの割合が利益トレードの割合を上回る場合、ロット計算で利用可能なすべての資金を使用することは望ましくありません。
あるいは、Vinceによるロットの計算の前に、より大きなロットを使用する必要があります。以下、説明します。
...
まず、最大ドローダウンと 収益 性を見てみましょう。最初の試みに比べれば、明らかに良くなっています。
また、残高・出来高のチャートでは、以下のようなパターンを見ることができます。
- 儲かるところがあれば、ロットは大きくなる。
- が、負けが続くとすぐに(パラメータDが急上昇)、計算ロットが激減してしまうのです。
- その後、利益が出ているところでロットが回復するのですが、やはり利益が出ている取引の割合が低いため、この現象は長くは続きません。
ある種の幾何学的な平均 化が行われている、とか!:)))
最新版のコードを添付します・・・。
3.結 論
...
しかし、まずは利益が出ているトレードと負けているトレードの比率を上げることが大切です。E xpert Advisor自体は非常にシンプルで、超高収益の結果は期待していませんでした。
一般的に、ビンスによるこのロット計算方法は生きる権利があると思うのです。
4. このような既成の取引システムはありません...。
マックスさん、この件に関する興味深く詳細なコメントとレビューをありがとうございました。
回答については、上記のポイント(質問)をご覧ください...
1." Min_Lot = 0.01 もありますか?" - いいえ。 Min_Lot = 0.1 はデモクラシック口座、Step パラメータ = 同じ、つまり小数点以下1桁の精度です。
0.01はマイクロです。
2. 絶対に正しい。
3. もちろん、すでに運用中の車両に直接依存するのですが...。:-)))もちろん、生きる権利もある。
4. CUがある。説明-ここから+ 次ページ、ここから ブランチの終わりまで・・・、「バスケット通貨指数・・・」ブランチ-ここから、ベースはここ(記事末の「出典」の内容を含む)、動画はここ です。
MMバリアントの選択に興味がある人は、このバリアントを自分のTSに接続して結果を見ることができ、フォーラムのこのブランチで興味深い点を共有することも忘れてはいけません。
ヴァリー#3 - 最適なfによって。
この写真では、計算されたロットがひどく飛び跳ねているだけですが...。だから、まず0.01ロットを取引し、次に0.1の倍数を取引しているのだと思ったのです。私のミスです!:))
この写真では、計算されたロットがひどく飛び跳ねていますね...。だから、最初は0.01ロットで取引して、その次は0.1の倍数で取引しているんだと思いました。私のミスです!:))
なるほど、R.Vinceは無駄なことは書かないんですね。
"
すべてのトレーディングシステムが最適な状態で動作し、なおかつ最大損失が30%未満になるように、5年間のヒストリカルデータを持つポートフォリオを探してみてください。簡単にはいきませんよ。市場制度はいくつあっても困らない。 数学的に正しいことを全てやろうと思ったら、口座残高 の30〜95%を失う覚悟が必要です。 厳しい規律が要求され、誰もがそれを守れるわけではありません。
トレーダーは、一定数の契約を取引することをあきらめた途端、いくつ取引するかという問題に直面する。トレーダーが問題を認めるかどうかに関係なく、常に起こることです。なぜなら、この方法では幾何学的な成長を遂げることができないからです。したがって、好むと好まざるとにかかわらず、次のトレードでいくつ取引するかという問題は、誰にとっても避けられないものとなるのです。単にランダムな数量を選ぶと、重大なエラーにつながる可能性があります。 最適な fは、数学的に正しい唯一の解である。"
:-)))
それに合わせてアイロンのようなものも...。どうでしょう、この質問にはあまり悩まずに、原典に忠実にすべてを表示することを課題としました......。やったね...。万歳!:-)))
Dに何らかの係数、例えば1.5を掛けて、バッファ(許容範囲)のようなものを作るというアイデアもあったのですが......。でも、それでは、おっしゃるような問題は解決しません。"しかし、すぐに一連の損失が発生し(Dパラメータが急激に増加)、計算ロットが急激に減少する..." - Dパラメータが増加するのは一連のためではなく、特定の取引の最大損失のためです、おそらくここで平滑化は必要ありません、あなたはただストップを使用しなければなりません...:-)))フクロウは止まらない... :-)))だからこそ、こういう事態が起こるのだが......。
いずれにせよ、本物のフクロウを使ったこのMMのバリエーションは、もっとよく見ておく必要があると思います