Contents
- 1 他の通貨ペアでもバックテストをやってみた
- 1.1 USD/CHF(US Dollar vs Swiss Franc)
- 1.2 GBP/USD(Great Britain Pound vs US Dollar)
- 1.3 EUR/USD(Euro vs US Dollar)
- 1.4 AUD/USD(Australian Dollar vs US Dollar)
- 1.5 EUR/GBP(Euro vs Great Britain Pound)
- 1.6 EUR/CHF(Euro vs Swiss Franc)
- 1.7 EUR/JPY(Euro vs Japanese Yen)
- 1.8 GBP/CHF(Great Britain Pound vs Swiss Franc)
- 1.9 CAD/JPY(Canadian Dollar vs Japanese Yen)
- 1.10 GBP/JPY(Great Britain Pound vs Japanese Yen)
- 1.11 AUD/NZD(Australian Dollar vs New Zealand Dollar)
- 1.12 AUD/CHF(Australian Dollar vs Swiss Franc)
- 1.13 AUD/JPY(Australian Dollar vs Japanese Yen)
- 1.14 CHF/JPY(Swiss Franc vs Japanese Yen)
- 1.15 NZD/JPY(New Zealand Dollar vs Japanese Yen)
- 1.16 NZD/USD(New Zealand Dollar vs US Dollar)
- 2 まとめ
他の通貨ペアでもバックテストをやってみた
これまでUSD/JPYのみでバックテストを行ってきましたが、
他の通貨ペアでは結果がどうなるか気になったので
バックテストを行ってみました。
バックテストで用いたのはボリンジャーバンドの
売買シグナルで自動売買する自作EAです。
バックテストはいずれも、期間2016/01/01~2016/12/31
チャート日足で行いました。
前回から多少手直しをしたのでソースを公開します。
MT4にはpipsという概念がないので、
pipsを通貨ペアごとのポイントに変換するロジックを追加しています。
currencyUnitPerPipsが新たに追加したロジックです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
//+------------------------------------------------------------------+ //| BB.mq4 | //| Copyright (c) 2017, Ichizo FX | //| http://fx.ichizo.biz | //+------------------------------------------------------------------+ #property copyright "Copyright (c) 2017, Ichizo FX" #property link "http://fx.ichizo.biz" // マイライブラリー //#include <MyLib.mqh> // マジックナンバー extern int Magic = 2017022101; // 外部パラメータ extern double Lots = 0.01; extern int Slippage = 3; extern string Comments = "BB"; extern double Loss = 50; extern double Profit = 50; // エントリー関数 extern int BBPeriod = 15; // ボリンジャーバンドの期間 extern int BBDev = 2; // 標準偏差の倍率 extern datetime EffectiveTerm = 10; // 注文の有効期間 double perPips = 0; int Calculated_Slippage = 0; int Ticket = 0; int Adjust_Slippage = 0; datetime Bar_Time = 0; bool Closed = false; datetime Close_Time = 0; double pos = 0; int Order_Type = 0; //+------------------------------------------------------------------+ //|【関数】1pips当たりの価格単位を計算する | //| | //|【引数】 IN OUT 引数名 説明 | //| --------------------------------------------------------- | //| ○ aSymbol 通貨ペア | //| | //|【戻値】1pips当たりの価格単位 | //| | //|【備考】なし | //+------------------------------------------------------------------+ double currencyUnitPerPips(string aSymbol) { // 通貨ペアに対応する小数点数を取得 double digits = MarketInfo(aSymbol, MODE_DIGITS); // 通貨ペアに対応するポイント(最小価格単位)を取得 // 3桁/5桁のFX業者の場合、0.001/0.00001 // 2桁/4桁のFX業者の場合、0.01/0.0001 double point = MarketInfo(aSymbol, MODE_POINT); // 価格単位の初期化 double currencyUnit = 0.0; // 3桁/5桁のFX業者の場合 if(digits == 3.0 || digits == 5.0){ currencyUnit = point * 10.0; // 2桁/4桁のFX業者の場合 }else{ currencyUnit = point; } return(currencyUnit); } int AdjustSlippage(string Currency, int Slippage_Pips) { int Symbol_Digits = MarketInfo(Currency, MODE_DIGITS); if (Symbol_Digits == 2 | Symbol_Digits == 4) { Calculated_Slippage = Slippage_Pips; } else if (Symbol_Digits == 3 | Symbol_Digits == 5) { Calculated_Slippage = Slippage_Pips * 10; } return (Calculated_Slippage); } int init() { perPips = currencyUnitPerPips(Symbol()); Adjust_Slippage = AdjustSlippage(Symbol(), Slippage); Loss = Loss * perPips; Profit = Profit * perPips; return(0); } // スタート関数 int start() { if (Bars < BBPeriod) { return(0); } if (Bar_Time == Time[0]) { return(0); } else if (Bar_Time != Time[0]) { Bar_Time = Time[0]; } // ボリンジャーバンドの計算 double bbH1 = iBands(NULL, 0, BBPeriod, BBDev, 0, PRICE_OPEN, MODE_UPPER, 0); double bbL1 = iBands(NULL, 0, BBPeriod, BBDev, 0, PRICE_OPEN, MODE_LOWER, 0); // 買いシグナル if(OrdersTotal() == 0 && Ask <= bbL1) { // 下値ボリンジャーバンドに届いたら買い Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Adjust_Slippage, Ask - Loss, Ask + Profit, Comments, Magic, EffectiveTerm, Magenta); } // 売りシグナル if(OrdersTotal() == 0 && Bid >= bbH1) { // 高値ボリンジャーバンドに届いたら売り Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Adjust_Slippage, Bid + Loss, Bid - Profit, Comments, Magic, EffectiveTerm, Aqua); } return(0); } |
USD/CHF(US Dollar vs Swiss Franc)
アメリカドル/スイスフラン
純益 9.81
総取引数 28
総利益 76.17
総損失 -66.36
売りポジション(勝率%) 12(58.33%)
買いポジション(勝率%) 16(50.00%)
勝率(%) 15(53.57%)
負率(%) 13(46.43%)
GBP/USD(Great Britain Pound vs US Dollar)
イギリスポンド/アメリカドル
純益 0.00
総取引数 30
総利益 75.00
総損失 -75.00
売りポジション(勝率%) 15(53.33%)
買いポジション(勝率%) 15(46.47%)
勝率(%) 15(50.00%)
負率(%) 15(50.00%)
EUR/USD(Euro vs US Dollar)
ユーロ/アメリカドル
純益 20.00
総取引数 22
総利益 65.00
総損失 -45.00
売りポジション(勝率%) 13(53.85%)
買いポジション(勝率%) 9(66.67%)
勝率(%) 13(59.09%)
負率(%) 9(40.91%)
AUD/USD(Australian Dollar vs US Dollar)
オーストラリアドル/アメリカドル
純益 -10.00
総取引数 22
総利益 50.00
総損失 -60.00
売りポジション(勝率%) 10(50.00%)
買いポジション(勝率%) 12(41.67%)
勝率(%) 10(45.45)
負率(%) 12(54.55%)
EUR/GBP(Euro vs Great Britain Pound)
ユーロ/イギリスポンド
純益 25.10
総取引数 26
総利益 94.14
総損失 -69.04
売りポジション(勝率%) 16(56.25%)
買いポジション(勝率%) 10(60.00%)
勝率(%) 15(57.69%)
負率(%) 11(42.31%)
EUR/CHF(Euro vs Swiss Franc)
ユーロ/スイスフラン
純益 4.96
総取引数 19
総利益 49.77
総損失 -44.81
売りポジション(勝率%) 10(40.00%)
買いポジション(勝率%) 9(66.67%)
勝率(%) 10(52.63%)
負率(%) 9(47.37%)
EUR/JPY(Euro vs Japanese Yen)
ユーロ/日本円
純益 -17.83
総取引数 32
総利益 62.34
総損失 -80.17
売りポジション(勝率%) 16(37.50%)
買いポジション(勝率%) 16(50.00%)
勝率(%) 14(43.75%)
負率(%) 18(56.25%)
GBP/CHF(Great Britain Pound vs Swiss Franc)
イギリスポンド/スイスフラン
純益 34.72
総取引数 27
総利益 84.32
総損失 -49.60
売りポジション(勝率%) 7(57.14%)
買いポジション(勝率%) 20(65.00%)
勝率(%) 17(62.96%)
負率(%) 10(37.04%)
CAD/JPY(Canadian Dollar vs Japanese Yen)
カナダドル/日本円
純益 17.83
総取引数 26
総利益 66.88
総損失 -49.05
売りポジション(勝率%) 11(54.55%)
買いポジション(勝率%) 15(60.00%)
勝率(%) 15(57.69%)
負率(%) 11(42.31%)
GBP/JPY(Great Britain Pound vs Japanese Yen)
イギリスポンド/日本円
純益 0.00
総取引数 36
総利益 80.26
総損失 -80.26
売りポジション(勝率%) 18(55.56%)
買いポジション(勝率%) 18(44.44%)
勝率(%) 18(50.00%)
負率(%) 18(50.00%)
AUD/NZD(Australian Dollar vs New Zealand Dollar)
オーストラリアドル/ニュージーランドドル
純益 -3.62
総取引数 25
総利益 43.14
総損失 -46.76
売りポジション(勝率%) 13(38.46%)
買いポジション(勝率%) 12(58.33%)
勝率(%) 12(48.00%)
負率(%) 13(52.00%)
AUD/CHF(Australian Dollar vs Swiss Franc)
オーストラリアドル/スイスフラン
純益 19.83
総取引数 22
総利益 64.47
総損失 -44.64
売りポジション(勝率%) 11(45.45%)
買いポジション(勝率%) 11(72.73%)
勝率(%) 13(59.09%)
負率(%) 9(40.91%)
AUD/JPY(Australian Dollar vs Japanese Yen)
オーストラリアドル/日本円
純益 31.23
総取引数 31
総利益 84.74
総損失 -53.51
売りポジション(勝率%) 15(46.67%)
買いポジション(勝率%) 16(75.00%)
勝率(%) 19(61.29%)
負率(%) 12(38.71%)
CHF/JPY(Swiss Franc vs Japanese Yen)
スイスフラン/日本円
純益 4.44
総取引数 29
総利益 66.87
総損失 -62.43
売りポジション(勝率%) 12(50.00%)
買いポジション(勝率%) 17(52.94%)
勝率(%) 15(51.72%)
負率(%) 14(48.28%)
NZD/JPY(New Zealand Dollar vs Japanese Yen)
ニュージーランドドル/日本円
純益 13.39
総取引数 27
総利益 66.89
総損失 -53.50
売りポジション(勝率%) 19(57.89%)
買いポジション(勝率%) 8(50.00%)
勝率(%) 15(55.56%)
負率(%) 12(44.44%)
NZD/USD(New Zealand Dollar vs US Dollar)
ニュージーランドドル/アメリカドル
純益 -10.00
総取引数 20
総利益 45.00
総損失 -55.00
売りポジション(勝率%) 13(53.85%)
買いポジション(勝率%) 7(28.57%)
勝率(%) 9(45.00%)
負率(%) 11(55.00%)
まとめ
各通貨ペアのバックテストの結果を純益順に並べてみました。
純益 | 総取引数 | 総利益 | 総損失 | 売り ポジション |
勝率% | 買い ポジション |
勝率% | 勝数 | 勝率 (%) |
負数 | 負率 (%) |
|
USD/JPY | 42.01 | 33 | 66.56 | -24.55 | 16 | 75.00 | 17 | 70.59 | 24 | 72.73 | 9 | 27.27 |
GBP/CHF | 34.72 | 27 | 84.32 | -49.60 | 7 | 57.14 | 20 | 65.00 | 17 | 62.96 | 10 | 37.04 |
AUD/JPY | 31.23 | 31 | 84.74 | -53.51 | 15 | 46.67 | 16 | 75.00 | 19 | 61.29 | 12 | 38.71 |
EUR/GBP | 25.10 | 26 | 94.14 | -69.04 | 16 | 56.25 | 10 | 60.00 | 15 | 57.69 | 11 | 42.31 |
EUR/USD | 20.00 | 22 | 65.00 | -45.00 | 13 | 53.85 | 9 | 66.67 | 13 | 59.09 | 9 | 40.91 |
AUD/CHF | 19.83 | 22 | 64.47 | -44.64 | 11 | 45.45 | 11 | 72.73 | 13 | 59.09 | 9 | 40.91 |
CAD/JPY | 17.83 | 26 | 66.88 | -49.05 | 11 | 54.55 | 15 | 60.00 | 15 | 57.69 | 11 | 42.31 |
NZD/JPY | 13.39 | 27 | 66.89 | -53.50 | 19 | 57.89 | 8 | 50.00 | 15 | 55.56 | 12 | 44.44 |
USD/CHF | 9.81 | 28 | 76.17 | -66.36 | 12 | 58.33 | 16 | 50.00 | 15 | 53.57 | 13 | 46.43 |
EUR/CHF | 4.96 | 19 | 49.77 | -44.81 | 10 | 40.00 | 9 | 66.67 | 10 | 52.63 | 9 | 47.37 |
CHF/JPY | 4.44 | 29 | 66.87 | -62.43 | 12 | 50.00 | 17 | 52.94 | 15 | 51.72 | 14 | 48.28 |
GBP/USD | 0.00 | 30 | 75.00 | -75.00 | 15 | 53.33 | 15 | 46.47 | 15 | 50.00 | 15 | 50.00 |
GBP/JPY | 0.00 | 36 | 80.26 | -80.26 | 18 | 55.56 | 18 | 44.44 | 18 | 50.00 | 18 | 50.00 |
AUD/NZD | -3.62 | 25 | 43.14 | -46.76 | 13 | 38.46 | 12 | 58.33 | 12 | 48.00 | 13 | 52.00 |
AUD/USD | -10.00 | 22 | 50.00 | -60.00 | 10 | 50.00 | 12 | 41.67 | 10 | 45.45 | 12 | 54.55 |
NZD/USD | -10.00 | 20 | 45.00 | -55.00 | 13 | 53.85 | 7 | 28.57 | 9 | 45.00 | 11 | 55.00 |
EUR/JPY | -17.83 | 32 | 62.34 | -80.17 | 16 | 37.50 | 16 | 50.00 | 14 | 43.75 | 18 | 56.25 |
一番純益が大きかったのがUSD/JPYでした。
続いて2位がGBP/CHF(イギリスポンド/スイスフラン)、
3位がAUD/JPY(オーストラリアドル/日本円)となりました。
一番損失が出たのがEUR/JPY(ユーロ/日本円)となりました。
通貨ペアによって結果に大きな違いがでました。