人気ブログランキング | 話題のタグを見る
ブログトップ

こんなFXの日記

konnafx.exblog.jp

システムトレーダーとして、日々研鑽を重ねていく…

資金管理の集大成プログラム~PART4

前回の続きです。


まず、許容できる最低証拠金維持率を決めて、外部パラメーターに記述します。100%に設定するとスリッページなどによりマージンコールになってしまうので、少し余裕をもたせて、150%くらいが妥当かなと思います。


資金管理の集大成プログラム~PART4_a0204254_10504692.gif



次に、口座クレジットとレバレッジを呼び出す関数を、それぞれ、AC,ALという変数に置き換えます。


資金管理の集大成プログラム~PART4_a0204254_1056736.gif



さて、ここでおさらいですが、


最適枚数=口座残高×0.02÷最適損切り幅÷10000



でしたよね。でも、1ロット=10万通貨で、かつ、千通貨単位の業者の場合で、端数処理をすると、


double Lots = MathFloor(AB*MLR/SL/1000)/100;


と記述するんでしたよね。


同じように、


補正枚数=(口座残高+口座クレジット)÷(約定価格÷レバ×1.5+損切り幅)÷10000



だったので、ロングの場合は、


double Lots = MathFloor((AB+AC)/(Ask/AL*LFR+SL)/1000)/100;


ショートの場合は、


double Lots = MathFloor((AB+AC)/(Bid/AL*LFR+SL)/1000)/100;


となります。ただし、Lots という同じ変数を使用するわけにはいかないので、


最適枚数=double BestLots1 = MathFloor(AB*MLR/SL/1000)/100;


ロングの補正枚数=double BestLots2 = MathFloor((AB+AC)/(Ask/AL*LFR+SL)/1000)/100;


ショートの補正枚数=double BestLots2 = MathFloor((AB+AC)/(Bid/AL*LFR+SL)/1000)/100;


とでもしておきましょう。


あとは、最適枚数と補正枚数のうち、より小さい方を最終的な Lots として指定します。MathMin()関数を使って、


MathMin(BestLots1,BestLots2);


とすればOKです。


また、「0」ロット発注をしないように、エントリー条件として、if(Lots>=0.01) と記述するのを忘れないようにしてください。


結局、下のようになります。


資金管理の集大成プログラム~PART4_a0204254_141588.gif




以上、このプログラムの特徴をまとめると、


1.VST化により、損切りの幅がそのときどきの相場状況に応じて自動変動式になっている。
2.損切りの幅に反比例してロット数が自動調整される。
3.1と2により、損失額が常に口座残高の○○%以内に抑えられる。
4.含み損を抱えても証拠金維持率が○○%を下回ることはなく、強制ロスカットをされない。
5.資産に比例した複利運用になっている。



ということで、私が最も信頼する資金管理法の一つです。004.gif


なお、バックテストの際には、外部パラメーターで指定した最大許容損失率の数値を調整することによって、最大ドローダウン率などをお好みの範囲に抑えることができます。


資金管理の集大成プログラム~PART4_a0204254_204144.gif



これについては、後日紹介することにします。



さて、ここまでは、ポジションが1つだけの場合を想定したプログラムですが、複数ポジションをとるロジックの場合は、どうなるんでしょう。計算を考えただけでゾッとしますが、次回の記事でチャレンジしてみたいと思います。034.gif



応援よろしくお願いします。
   ↓
にほんブログ村 為替ブログへ
にほんブログ村
by xchsshzo | 2011-07-13 21:53 | メタトレーダー

by xchsshzo