ボリンジャーバンド検証 デフォルトバージョン
ようやくボリンジャーバンドの検証に突入しまする~
ボリバントレードの設定はシンプルにしますた
【ボリンジャーバンド パラメーター条件】
観測日数 ⇒ 20日
σ ⇒ ±2σ活用
終値ベースで平均及び標準偏差を計算
【ボリンジャーバンド シグナル条件】
★前日に-2σを終値が下回る かつ 当日は-2σを終値が上回る
⇒買いシグナル発生
★前回のトレードが売りだった、もしくは売り保有中に限り買いシグナル
を採用
採用された買いシグナルは翌日の寄付でエントリー
★前日に+2σを終値が上回る かつ 当日は+2σを終値が下回る
⇒売りシグナル発生
★前回のトレードが買いだった、もしくは買い保有中に限り売りシグナル
を採用
採用された売りシグナルは翌日の寄付でエントリー
【決済条件】
買いポジションの決済 ⇒ 買い保有中に-2σを終値で下回る
売りポジションの決済 ⇒ 売り保有中に+2σを終値で上回る
共に翌日の寄付でイグジット
えらい単純な条件であります。決済条件はきつめでありますが、基本的
に、±2σは
観測日数の20×0.05=1
と±2σを超える可能性は理論上は1日分しかないはず。±2σは全体の
95%強カバーしているから5%で乗算した次第。
で、トレードできるかを問わずに様々な市場を
日足で(USDJPYは24h足を日足としてまする~)
バックテスト o(^▽^)o
【パフォーマンス】 測定期間 1982年~2010年
Net Profit 5853.05
Profit Factor 1.138416639
Max Strategy Drawdown -6933.3
Total # of Trades 135
Total # of Open Trades 0
Number Winning Trades 53
Number Losing Trades 82
% Profitable 39.25925926
Avg Trade (win & loss) 43.35592593
Average Winning Trade 908.2790566
Average Losing Trade -515.6797561
Ratio Avg Win / Avg Loss 1.761323856
Largest Winning Trade 3304.4
Largest Losing Trade -1639.7
【USDJPY】 (*´σー`)
Net Profit 78.352
Profit Factor 1.347406599
Max Close To Close Drawdown -31.34
Total # of Trades 175
Total # of Open Trades 0
Number Winning Trades 72
Number Losing Trades 103
% Profitable 41.14285714
Avg Trade (win & loss) 0.447725714
Average Winning Trade 4.220638889
Average Losing Trade -2.189650485
Ratio Avg Win / Avg Loss 1.927539996
Largest Winning Trade 30.76
Largest Losing Trade -9.1
【Dow】 ∑(゚Д゚)
Net Profit -2370.82
Profit Factor -0.817536596
Max Close To Close Drawdown -5508.44
Total # of Trades 146
Total # of Open Trades 1
Number Winning Trades 54
Number Losing Trades 92
% Profitable 36.98630137
Avg Trade (win & loss) -16.23849315
Average Winning Trade 196.7144444
Average Losing Trade -141.2326087
Ratio Avg Win / Avg Loss 1.392840126
Largest Winning Trade 781.5
Largest Losing Trade -771.18
【10Year note】 ・°・(ノД`)・°・
【パフォーマンス】 測定期間 1980年~2010年
Net Profit -3.14
Profit Factor -0.836543467
Max Close To Close Drawdown -5.81
Total # of Trades 157
Total # of Open Trades 0
Number Winning Trades 66
Number Losing Trades 88
% Profitable 42.03821656
Avg Trade (win & loss) -0.02
Average Winning Trade 0.243484848
Average Losing Trade -0.218295455
Ratio Avg Win / Avg Loss 1.115391289
Largest Winning Trade 0.84
Largest Losing Trade -1.08
【WTI】 (ノ´▽`)ノ ⌒(呪)
Net Profit -2220
Profit Factor -0.980319149
Max Close To Close Drawdown -38050
Total # of Trades 102
Total # of Open Trades 0
Number Winning Trades 37
Number Losing Trades 65
% Profitable 36.2745098
Avg Trade (win & loss) -21.76470588
Average Winning Trade 2988.648649
Average Losing Trade -1735.384615
Ratio Avg Win / Avg Loss 1.722182289
Largest Winning Trade 12540
Largest Losing Trade -9100
条件設定がおかしいのか??
(◎`ε´◎ )
こんな設定でバックテストして欲しい
っていう方募集中♪
ていうことで、まずはボリンジャーバンドのデフォルトバージョン
をバックテストしてみますた~。結論は言うまでもありませんw
これを土台にして、どうすれば改善できるのかを模索しま~す。
とりあえずの問題点は、
① 逆張りが全く機能していない
② トレードポイントがひどすぎる
③ 標準偏差って関係あるの?
④ ボリンジャーバンドって意味あるの?
⑤ 投資家泣かせのテクニカル指標
ってところですな。改善余地も実際はないんだよなぁ~。腐る
ほどテストしたけど、改めて改善案を考えてみまする~。
ちなみに上記の募集中は本気だよw
ボリンジャーバンドネタは最終的には
スーパーボリンジャー
とやらで締めくくる予定。
【今回のボリンジャーバンド デフォルトバージョンソース】
Inputs:MAtime(20),LastPrice(close),Sigma(2);
Vars:count1(0),count2(0),MAsum(0),MA(0),
Avedissum1(0),dev(0),
nBollinUp(0),nBollinDown(0),
sellpoint(0),buypoint(0);
Array:Avedis1[500](0);
{MA Setting1}
MAsum=0;
For count1=1 to MAtime-1 begin
MAsum=close[count1]+MAsum;
End;
If currentbar>MAtime+1 then MA=(MAsum+LastPrice)/MAtime Else MA=0;;
{Deviation}
Avedissum1=0;
For count2=1 To MAtime-1 begin
Avedis1[count2]=Square(close[count2]-MA);
Avedissum1=Avedissum1+Avedis1[count2];
End;
Avedissum1=square(LastPrice-MA)+Avedissum1;
If currentbar>MAtime+1 then dev=Squareroot(Avedissum1/MAtime) Else dev=0;
nBollinUp=MA+dev*Sigma;
nBollinDown=MA-dev*Sigma;
{Trade Setting}
If sellpoint<>1 and nBollinUp[1]<close[1] and nBollinUp>close then begin
sellshort ("Bollin-Short") next bar at market;
sellpoint=1;
buypoint=0;
end;
If buypoint<>1 and nBollinDown[1]>close[1] and nBollinDown<close then begin
buy ("Bollin-Long") next bar at market;
buypoint=1;
sellpoint=0;
end;
{CutSetting}
If marketposition=1 and nBollinDown>close then sell ("Long-cut") next bar at market;
If marketposition=-1 and nBollinUp<close then buytocover ("Short-cut") next bar at market;



