ボリンジャーバンド検証 歪度バージョン
さて、ボリンジャーバンド検証を少しづつ進めて参ります!
で、前に
歪度(わいど って読むのだ)
尖度(せんど ってよむのだ)
というものを扱いますた。その検証から進めていきまする。
今回は歪度だけを使用しますた~。条件設定はかなり単純であります。
歪度の設定±0.5は、その範囲に収まる場合は極端な上下トレンド
を描いていないと仮定してます。どちらかと言えば適当な条件設定
だけど、その設定が少しでも機能するかがポイントなり~。
ロジックの流れとしては、
メインロジック【ボリンジャーバンド】
↓
フィルター【歪度】
↓
採用シグナル
の流れだす!まあ、一般的なトレーディングシステムロジックの
流れですな (‐^▽^‐)
ちなみにチャート表示はこんな感じ
【ボリンジャーバンド パラメーター条件】
観測日数 ⇒ 20日
σ ⇒ ±2σ活用
歪度 ⇒±0.5以内を適したトレード区間と設定
終値ベースで平均及び標準偏差を計算
【ボリンジャーバンド シグナル条件】
★前日に-2σを終値が下回る かつ 当日は-2σを終値が上回る
⇒買いシグナル発生
★前回のトレードが売りだった、もしくは売り保有中かつ歪度が±0.5
以内の場合買いシグナルを採用
採用された買いシグナルは翌日の寄付でエントリー
★前日に+2σを終値が上回る かつ 当日は+2σを終値が下回る
⇒売りシグナル発生
★前回のトレードが買いだった、もしくは買い保有中かつ歪度が±0.5
以内の場合売りシグナルを採用
を採用
採用された売りシグナルは翌日の寄付でエントリー
【決済条件】
買いポジションの決済 ⇒ 買い保有中に-2σを終値で下回る
売りポジションの決済 ⇒ 売り保有中に+2σを終値で上回る
共に翌日の寄付でイグジット
でバックテストなり~
>>前回のボリンジャーバンド検証 デフォルトバージョンと比較して~
【パフォーマンス】 測定期間 1982年~2010年
Net Profit 11169.31
Profit Factor 1.781510024 (前回よりUP)
Max Close To Close Drawdown -3834.7
Total # of Trades 54
Total # of Open Trades 0
Number Winning Trades 26
Number Losing Trades 28
% Profitable 48.14814815 (前回よりUP)
Avg Trade (win & loss) 206.8390741
Average Winning Trade 979.2796154
Average Losing Trade -510.4271429
Ratio Avg Win / Avg Loss 1.918549256
Largest Winning Trade 3423.7
Largest Losing Trade -1951.3
【USDJPY】 :*:・( ̄∀ ̄)・:*:
Net Profit 92.103
Profit Factor 2.021505257 (前回よりUP)
Max Close To Close Drawdown -15.3
Total # of Trades 66
Total # of Open Trades 0
Number Winning Trades 35
Number Losing Trades 31
% Profitable 53.03030303 (前回よりUP)
Avg Trade (win & loss) 1.3955
Average Winning Trade 5.207628571
Average Losing Trade -2.908516129
Ratio Avg Win / Avg Loss 1.790476085
Largest Winning Trade 18.15
Largest Losing Trade -15.3
【Dow】 (;^ω^A
Net Profit -225.84
Profit Factor -0.966952791 (前回よりDown)
Max Close To Close Drawdown -2843.65
Total # of Trades 69
Total # of Open Trades 0
Number Winning Trades 25
Number Losing Trades 44
% Profitable 36.23188406 (前回よりDown)
Avg Trade (win & loss) -3.273043478
Average Winning Trade 264.3208
Average Losing Trade -155.315
Ratio Avg Win / Avg Loss 1.701836912
Largest Winning Trade 1530.8
Largest Losing Trade -765.74
【10Year note】 (*゚ー゚)ゞ
【パフォーマンス】 測定期間 1980年~2010年
Net Profit 0.01
Profit Factor 1.000873362 (前回よりUP)
Max Close To Close Drawdown -2.58
Total # of Trades 83
Total # of Open Trades 0
Number Winning Trades 39
Number Losing Trades 44
% Profitable 46.98795181 (前回よりUP)
Avg Trade (win & loss) 0.000120482
Average Winning Trade 0.293846154
Average Losing Trade -0.260227273
Ratio Avg Win / Avg Loss 1.12919046
Largest Winning Trade 0.84
Largest Losing Trade -1.08
【WTI】 (●´ω`●)ゞ
Net Profit 7580
Profit Factor 1.145853377 (前回よりUP)
Max Close To Close Drawdown -18520
Total # of Trades 45
Total # of Open Trades 1
Number Winning Trades 16
Number Losing Trades 29
% Profitable 35.55555556 (前回よりDown)
Avg Trade (win & loss) 168.4444444
Average Winning Trade 3721.875
Average Losing Trade -1792.068966
Ratio Avg Win / Avg Loss 2.076859246
Largest Winning Trade 12540
Largest Losing Trade -9490
と、まあ改善したわけですな。ダウは改善していないような気もする
けど、
どの銘柄も最大ドローダウンは減少
しているから、
歪度フィルターは効果有
としてもまずは良さそうだね。ただ、問題が無いってわけなじゃいのだ。
現時点の問題として、
① トレード数の問題(サンプルが少ない)
② トレンドを狙えていないためNet Profitは物足りない
③ 歪度の設定値は妥当か?
④ 観測日数はどうか?
⑤ パラメーターが増えたことへの懸念
と大きくは5つの問題がありんす。観測日数については最適化によって
有効度合いの推測をする必要もあるよね~。けど、最適化ってまだ説明
してなかったな・・
ということで次回のボリンジャーバンド検証もよろしく~♪
【今回のボリンジャーバンド 歪度バージョンソース】
Inputs:MAtime(20),LastPrice(close),Sigma(2),skewprice(0.5);
Vars:MAsum(0),MA(0),
count1(0),count2(0),count3(0),
Avedissum1(0),Avedissum2(0),dev(0),
Skwepoint(0),
nBollinUp(0),nBollinDown(0),
sellpoint(0),buypoint(0);
Array:Avedis1[500](0),Avedis2[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;
{M Setting}
Avedissum1=0;
For count2=1 To MAtime-1 begin
Avedis1[count2]=power(close[count2]-MA,3);
Avedissum1=Avedissum1+Avedis1[count2];
End;
Avedissum1=power(LastPrice-MA,3)+Avedissum1;
{Deviation Setting}
Avedissum2=0;
For count3=1 To MAtime-1 begin
Avedis2[count3]=square(close[count3]-MA);
Avedissum2=Avedissum2+Avedis2[count3];
End;
Avedissum2=square(LastPrice-MA)+Avedissum2;
If currentbar>MAtime+1 then
dev=Squareroot(Avedissum2/(MAtime-1)) Else dev=0;
{Skew Setting}
If currentbar>MAtime+1 then
Skwepoint=
(MAtime*Avedissum1)/((MAtime-1)*(MAtime-2)*power(dev,3))
Else Skwepoint=0;
{Bollin}
nBollinUp=MA+dev*Sigma;
nBollinDown=MA-dev*Sigma;
{Trade Setting}
condition1=(skwepoint<skewprice and skwepoint>-skewprice);
If condition1 and
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 condition1 and
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;




