免責事項
当記事の情報を利用することで損失が発生した場合について、情報提供元は一切の責任を負いません。
このページは
FX の自動取引を実装するにあたり、MQL4 でのリスク管理の実装をメモとして記載。
リスク管理の方法
参考にした YouTube 動画では、リスク管理をすることで、損失を最小限にして長期的に取引ができるようにしてくれるとのこと。
取引リスクについて
取引にあたってのリスクは資産の 1 % から 3 % に収めるのが適切。大きなリスクをとると連続の負けに耐えられず退場になる。例えば勝率が 51 % のシステムを構築した場合、100 回トレードすると 1 回〜2 回は 6 回連続で負けるということになる。
回数 | 連続負けする確率 |
---|---|
1 | 51.00% |
2 | 26.01% |
3 | 13.27% |
4 | 6.77% |
5 | 3.45% |
6 | 1.76% |
7 | 0.90% |
8 | 0.46% |
9 | 0.23% |
10 | 0.12% |
例えば、リスクを 20% にした場合、取引ごとに資産の 10% がなくなるので、6 回連続で負けると資産が 73.8% 減少する。
回数 | 損益 | 資産 | 累積損失 |
---|---|---|---|
0 | - | 1,000,000 | - |
1 | -200,000 | 800,000 | -200,000 (-20.0%) |
2 | -160,000 | 640,000 | -360,000 (-36.0%) |
3 | -128,000 | 512,000 | -488,000 (-48.8%) |
4 | -102,400 | 409,600 | -590,400 (-59.0%) |
5 | -81,920 | 327,680 | -672,320 (-67.2%) |
6 | -65,536 | 262,144 | -737,856 (-73.8%) |
7 | -52,429 | 209,715 | -790,285 (-79.0%) |
8 | -41,943 | 167,772 | -832,228 (-83.2%) |
9 | -33,554 | 134,218 | -865,782 (-86.6%) |
10 | -26,844 | 107,374 | -892,626 (-89.3%) |
リスクを 2% に設定すれば 6 回連続で負けても 11.4% の損失で済む。
回数 | 損益 | 資産 | 累積損失 |
---|---|---|---|
0 | - | 1,000,000 | - |
1 | -20,000 | 980,000 | -20,000 (-2.0%) |
2 | -19,600 | 960,400 | -39,600 (-4.0%) |
3 | -19,208 | 941,192 | -58,808 (-5.9%) |
4 | -18,824 | 922,368 | -77,632 (-7.8%) |
5 | -18,447 | 903,921 | -96,079 (-9.6%) |
6 | -18,078 | 885,843 | -114,157 (-11.4%) |
7 | -17,717 | 868,126 | -131,874 (-13.2%) |
8 | -17,363 | 850,763 | -149,237 (-14.9%) |
9 | -17,015 | 833,748 | -166,252 (-16.6%) |
10 | -16,675 | 817,073 | -182,927 (-18.3%) |
リスクを減らすと、その分取引数量が減るので、利益も減るが、継続可能性が高いほうが最終的に利益を出せる(らしい。)
取引時にするべきこと
リスク管理にあたり、取引時に必ずするべきこと。
- ストップロスとテイクプロフィットを必ず設定する
- リスクと利益の割合を 1 : 1.5 以上に設定する
ストップロスとテイクプロフィットの金額を決めるにあたり、リスクと利益の割合として一度の取引リスクを 1 R、利益目標を 1.5 R とした場合、テイクプロフィットの数量を 30 pips とするとストップロスの数量は 20 pips となる。具体的には USD/JPY で 1 ドル 135.34 円の場合に 135.64 円をテイクプロフィットとし、135.14 円をストップロスと設定する。
また、逆にストップロスの数量を 10 pips とすると、テイクプロフィットの数量は 15 pips となる。具体的には EUR/USD で 1 ユーロ 1.0542 US ドルの場合、1.0557 ドルをテイクプロフィットとし、1.0532 ドルをストップロストと設定する。
取引数量の計算式について
取引数量は以下の手順で計算する。
- ストップロス数量の決定 (例: 30 pips)
- 資産の確認 (例: 1,000,000 円)
- 取引リスクの決定 (例: 資産の 2%)
- pip あたり金額の確認 (例: 1,353.4円)
- 計算する (0.49ロット)
計算式は以下の通り。
取引数量 = \frac{資産 \times 取引リスク(\%)}{ストップロス数量(pips)\times pip当たり金額}
以下は MT4 での実装例。
double CalculateVolume(string symbol, int cmd, double price, int pips, double pip, double risk_percentage)
{
double margin_for_one_lot = MarketInfo(symbol, MODE_MARGINREQUIRED); // 1 ロット当たりの必要証拠金 (ASK)
double step = MarketInfo(symbol, MODE_LOTSTEP); // 取引ロットのステップ
double account_balance = AccountBalance(); // 口座残高
double account_leverage = AccountLeverage(); // レバレッジ
double price_for_one_lot = margin_for_one_lot * account_leverage; // pip 当たり金額
double price_per_pip_in_one_lot = price_for_one_lot * pip / price; // レバレッジを考慮した 1 ロットの金額
double acceptable_loss = account_balance * risk_percentage; // 資産 × 取引リスク
double loss_for_pips = pips * price_per_pip_in_one_lot; // ストップロス数量 × pip 当たり金額
double lots = MathFloor(acceptable_loss / loss_for_pips / step) * step;
return lots;
};
MarketInfo(symbol, MODE_MARGINREQUIRED)
は当該通貨ペアに必要な証拠金(口座が日本円の場合は単位も日本円)となる。レバレッジが設定されている場合、対象通貨ペア 1 ロット当たりの金額とするためには、必要証拠金にレバレッジの倍率を掛ける必要がある。
補足: pip 当たりの金額
FX では取引数量をロットで表す。MT4 では (FX の界隈では) 1 ロットは 100,000 通貨を表している。pip 当たりの金額というのは 1 ロット取引した場合の pip 当たりの金額を示しており、例えば 1 ドル (pip = 0.0001) が 135.34 円の場合、pip 当たり金額は以下の数式で求めるので、1,353.4円。
pip あたり金額 = 通貨価格 \times pip \times ロット数量
参考資料