Vinceによるロット計算 - ページ 6

 
Vinin:

あくまで分析するトレードの数の話です。リアルかバーチャルか。


ああ、なるほど。サンプルは代表的なものであるべきで、つまり多ければ多いほど良いというのは、正しいアプローチではないのかもしれませんね...。

もちろん、基準は人それぞれで、200枚で十分な人もいれば、500枚では足りない人もいる......。

R.Vinceの幾何 平均法による最適解(トホホですみません)を求めて、さらに掘り下げ続けているのです。

 
MaxZ:
それは、私のアドバイスとはちょっと違いますね。もう、どちらかというとあなたのやり方ですね。重要なのは、それが正しいことも判明することです。 。


さて、どのようにかというと、私はまさにその通り、TWRに直接関係することだけを行い、その幾何 平均Gには関係しないことを行ったからです。

"数_1の次数Kの根が数_2の同じ次数Kの根より大きいなら、数_1は数_2より大きい!:))))))"

TWRは「相対的有限資本」(Terminal Wealth Relative である。

 TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR    
 
Roman.:


私は、始値、2002年から2011年までの取引-503、最も後退した取引=-628で、すべての計算をteeter totterで行っています。

結果は上記の通りです。現在、他のEAバリアントでテストしています。

以下、この問題を解決するためのアプローチを原典からテキストで紹介する-p.31.

最良のトレーディングシステムは、幾何平均が最も高いシステムであることを見てきました。幾何平均を計算するためには、fを知る必要がある。それでは、順を追ってアクションを記述していきましょう。

1.与えられた市場システムにおける取引の履歴を取る。

2.0から1までの様々なfの値を見て、最適なfを求めます。最適なfはTWRの最高値に対応します。

3.fを求めたら、次数Nのルート TWR Nはトレードの総数 )を取る。 これが、この市場システムにおける幾何平均です。これで、得られた幾何平均を使って、このシステムを他と比較することができる。f値は、このマーケットシステムで何枚のコントラクトを取引するかを教えてくれる。fが求まれば、最大の損失を負の最適値で割ることで貨幣価値に換算することができる。例 えば、最大の損失が100ドルに相当し、最適f=0.25であれば、-$100 / -0.25 = $400 となる。つまり、400ドルのアカウントに対して1単位を賭ける必要があります。簡単にするために、すべてをユニット単位で計算することができます(例えば、1枚の5ドルチップ、1枚の先物契約、または100銘柄)。 各ユニットに割り当てるべきドル数は、最大の損失を負の最適fで割ることによって計算できます。最適fは システムの収益性(1ユニットに基づいて)とそのリスク(1ユニットに基づいて)をバランスさせた結果 です。 多くの人は、最適な固定端数は、アカウントに割り当てられる割合だと考えて いる


対数にするのは理にかなっているのかもしれませんね。積を和に置き換える
 
Vinin:

対数にするのは理にかなっているのかもしれませんね。積を和に置き換える


ビクターさん、ありがとうございます!可能なんですね!やってみないとわかりませんが、今のところ、この製品を減らす、つまり1/3の累乗にするという選択肢を試しているところです。

//TWR — это «относительный конечный капитал» (Terminal Wealth Relative), 
 TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR    
 
Roman.:


さて、どうでしょう。私はまさにその通り、TWRに関してのみ直接、幾何平均Gに関してはそうしましたから。

"数_1の次数Kの根が数_2の同じ次数Kの根より大きいなら、数_1は数_2より大きい!:))))))"

TWRは「相対的有限資本」(Terminal Wealth Relative である。

トランザクションが欠落しています。

TWR = TWR* ...

このことがVinceのロット計算にどう影響するかはわかりませんが、私の推奨はこの操作を除外することではありませんでした。

私の提案は、配列をTWR[]にすることでした。そして、Gはこのように数える。

G *= MathPow(TWR[orderIndex], 1/N);


ローマン:


ビクターさん、ありがとうございます。可能ですね。試してみないとわかりませんが、今のところ、この変形積和算-1/3乗を試しています。

三次根を取り除いたとしても、二重のオーバーフローは起こりません。
 
Roman.:
for ( orderIndex = 1;orderIndex<Qnt; orderIndex++) //при заданной f проходим по всем закрытым ордерам
{                                                  // и считаем относительный конечный капитал (TWR)
   TWR = TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))); // TWR - это произведение всех HPR
}

また、for()ループの中で「orderIndex<Qnt」の条件になっているのはなぜですか?つまり、TWR配列の 最後の要素をスキップしているのですね。
 
MaxZ:

オペレーションが抜けているんですね。

これがVinceのロットの計算にどう影響するかは分かりませんが、私のお勧めはこの操作を排除しないことでした。

配列TWR[]にすることを提案しました。そして、Gはこのように数える。


三次根を取り除いたとしても、二重のオーバーフローは起こりません。


取引回数=503回、最大損失=628回と、合計値も含めて他は全てオーバーフローしているのですが...。

自分のところで、どの掲示板でもいいので、確認してみてください。コードは最初のページに掲載されています。以上です。

 

MaxZ:


また、for()ループの中で「orderIndex<Qnt」の条件を正確に指定しているのはなぜですか?TWR配列の最後の要素をスキップすることが判明したのですね。


TWRの配列は全くなく、整理する必要もなく、fを計算するだけで十分であり、異なるfでのTWRを(ループ内で)比較し、最大TWRでのf値を知ることだけが面白い、それだけである。

最初の行と最後の行は、それぞれ「ログ」と「結果」タブの最後の取引での利益の値です...。


取引番号が違うのは、私のフクロウでは終値が市場の最後の注文から最初の注文になるためです。主なものは、番号が打つということです - 503お得な情報 - そこ(テスターで)とそこ(計算で) +。

最後に決済された503トレードの値 1076 - デイトレ機能の履歴による注文検索は、最初から最後(クローズ)に決済されたものまで行われます。

 
Roman.:


TWR配列 - 整理する必要は全くなく、fを計算するだけで十分です。異なるfでのTWRの比較(ループ内)と、最大TWRでの値fを知ること、それだけに興味があるのです。

ログ "と "結果 "タブの最後の取引の利益の値 - 最初と最後の行 - それぞれを比較すると、すべてが正常に動作します...


完全に混乱しました。Mas_Qutcome_of_transactions[]配列のことです。なぜなら、その要素の1つがループでカウントされないことが判明したからです...。

また、コードに不正確な部分があるのに、なぜ報告書を見なければならないのでしょうか?奇跡なんて信じない!:D

また、テスターで決済したトレードは考慮されない方がいいのでは?結局、閉じたのはあなたのTSではないのですから...。

 
MaxZ:

完全に混乱しています。Mas_Qutcome_of_transactions[]配列のことです。なぜなら、ループの中に要素が1つもカウントされていないことが判明したからです...。

また、コードに不正確な部分があるのに、なぜ報告書を見なければならないのでしょうか?奇跡なんて信じない!:D

また、テスターで決済したトレードは考慮されない方がいいのでは?閉鎖されたのは、あなたのTSによるものではありません...。


はい、条件<=Qntで確認します。全てのトレードはTSによってクローズされ、テスターは最後の10個をクローズしました(これは妥当な許容範囲内だと思います...:-)))。