観測枠の無効化とトレンドとシミュレーション の内容を訂正してあります。訂正
個所は緑色の文字で表示しました。
訂正は可変移動平均線を使用したシミュレーションではなく通常移動平均線
です。通常移動平均線にトレンド修正を行った周期の閾値を使用した内容が
正しい内容です。
そして今回が全て可変移動平均線を活用したシミュレーションです。1つ記事
を飛ばしてしまいました (;^ω^A
今回は周期統計から得られたトレンド判定を軸に可変移動平均線を使用した
シミュレーションを行っていきます。前回までの内容を把握されていないと
意味不明なので下記にリンクを貼っておきます。
参考 : 観測枠を無効化するには?? その1
参考 : 観測枠を無効化させるには?? その2
参考 : 観測枠を無効化Excelファイル解説
参考 : 周期統計と観測枠の無効化
シミュレーションは前回行った売買戦略にトレンド判定を使いする形
にするだけです。ではテスト環境と追加条件を!
【テスト環境】
測定範囲 : 2011年5月5日 00:00~2012年3月29日 10:25
時間軸 : 5分足
シンボル : USDJPY
売買方式 : ドテン方式
各種コスト : 考慮していません
戦略特徴 : 時系列と可変移動平均線のクロスにおける逆張り戦略
【追加条件】
条件1 : トレンド修正した現区間周期が設定した閾値未満を逆張り戦略
条件2 : トレンド修正した現区間周期が設定した閾値より大きい時を順張り戦略
買いパターン⇒終値>可変移動平均線
売りパターン⇒終値<可変移動平均線
条件3 : 条件2は逆張りポジションを保有している時のみ作動
Multicharts用のソースコードは最後に載せますね (^-^)/
閾値は面倒なので最適化に頼りました (;^_^A
前回のシミュレーションでも最適化レポート載せたので比較できるって
のもありますけどね!
ただパラメータが2つになって最適化結果が多いのでCSVファイルをあ
げておきます。
記事で扱ったExcelの処理はExcelファイルダウンロードサービス内にて
ダウンロードできます
今回のファイル名 : 観測枠無効化可変MA最適化シミュ
※ ファイルの反映に時間がかかる時があります
ではシミュレーション結果ですが、まず2つのパラメータの組み合わせ
により総損益の状態を3Dグラフで観察します。
ただ、比較しないと改善点がわからないので最初に可変移動平均版、
次に前回公開した通常移動平均版を載せますね!
可変移動平均線版3Dグラフ
通常移動平均線版3Dグラフ
可変移動平均線版の方が平坦部分が増えていますね!
つまり、観測枠の値による損益のバラツキが減少したことを意味します。
次にパフォーマンス上位を示して通常移動平均線版と比較します (^-^)/
可変移動平均線版のパフォーマンスは全体的に向上してますね!
ただ、相変わらず
ⅰ) 平均損益の低さ
ⅱ) 損益レシオの低さ
があるので改善の余地があるところです。
ドル円だから見栄えが良い ∑(゚Д゚)
ってのも忘れてはいけません。他の市場の銘柄とか多くの銘柄で有効
性をチェックする必要はあります。
可変移動平均線については区切りをつけますが、ここで考えないといけ
ないことは、
観測枠は時系列データをぶつ切りするパラメーターであることから
市場の価格変動に対して柔軟性を失わせることを意味するにも関
わらず、そこから柔軟性を持った可変パラメーターが導き出せる
可能性がある
ことの意味を考えるべきでしょう。そしてパラメータに関して、こう理解すべ
きではないでしょうか?
パラメーターが分析手法に与える影響よりも
分析手法が何を意味しているかを明確にして分析手法がパラメーター
に与える影響とは何か?
通常はパラメーターが分析手法に与える影響を考えてしまいます。この
考え方だと最適化による過剰最適化の呪縛から解き放たれることはあり
ません。これらを考えるために高度な技術は必要ありません。
分析手法への深い理解 (・∀・)
が必要なだけです。可変パラメーターの有効性云々の前に上記の内容を
考えてみましょう♪
そうすることで開ける道は広がっていくと思いますよ o(^▽^)o
そして、これでようやく銘柄の結合へと続きます (;^_^A
【今回の戦略のMultichartsソースコード】
Inputs:length(20),Trend(7);
Vars:count(0),MAsum(0),MA(0),MALine(0),period(0),
OplengthL(0),OpMAsumL(0),OpMAL(0);
//Normal MA
MAsum=0;
For count=0 to length-1 begin
MAsum=close[count]+MAsum;
end;
MA=MAsum/length;
//Length Setting
If (close crosses over MA) or (close crosses under MA) then MALine=close;
If MALine<>MAline[1] then begin
period=1;
If period[1]>6 then begin
OplengthL=period[1]+1;
end else If period[1]<=6 then begin
OplengthL=6;
end;
end else
period=period[1]+1;
If OplengthL<period then OplengthL=period;
//OpMA
OpMAsumL=0;
For count=0 to OplengthL-1 begin
OpMAsumL=close[count]+OpMAsumL;
end;
If OpMAsumL<>0 and OplengthL<>0 then OpMAL=OpMAsumL/OplengthL else OpMAL=OpMAL[1];
//Signal1
If OpMAL crosses over close and OplengthL<Trend then buy next bar at market;
If OpMAL crosses under close and OplengthL<Trend then sellshort next bar at market;
//Signal2
If marketposition=1 and OpMAL<close and OplengthL>Trend then sellshort next bar at market;
If marketposition=-1 and OpMAL>close and OplengthL>Trend then buy next bar at market;




