投稿者: イージートレーダー
これは,ピーク (kurtosis) と偏り (skewness) の分布した統計データを適用した取引戦略である. データは傾向的で,潜在的傾向が正であるとき,我々はより多くのことをする. データは傾向的で,潜在的傾向が負であるとき,我々は空白する. トレンドが逆転したときに,我々は平仓する.
では,トレンドとトレンドの強さをどうやって定義するのでしょうか? まず,ピークと偏差の定義について見ていきましょう.
まず,通常の分布の定義を見てみましょう.
分布 (distribution):変数内のすべての数値が発生する回数による分布状況.横軸は変数の数値,縦軸は発生頻度を示す座標図である. 正常分布:ガウス分布 (Gaussian distribution) とも呼ばれる.
標準常態分布:平均 (mean) を中心とし,標準偏差 (standard deviation) を座標軸の基本単位として描いた標準常態分布図. 覆時計形の対称図.
m ± 1sは,サンプル群全体の68.26%の個体を含んでいる.
m ± 2sは,全サンプル群の95.44%の個体を含んでいる.
m ± 3sは,サンプル群全体の99.74%の個体を含んでいる.
95%の個体はm ± 1.96sの間に落ちている.
99%の個体はm ± 2.58sの間に落ちている.

統計学において,ピーク度 (Kurtosis) は,実数ランダム変数の確率分布のピーク状態を測定する.ピーク度が高いということは,差が大きくなるのは,低頻度で平均より大きいまたは小さい極限差によって引き起こされるという意味である.
ピーク度 (kurtosis) は,一組のデータの配列形態の度度を示す統計量である.通常の配列のピーク度が3であるため,私たちは3より大きいピークをピークと呼び,通常の配列よりもデータ配列がより集中して調和していることを示している.ピーク度が3より少ないピークを平準ピーク型として,データの配列は正の配列よりもより滑らかであることを示している.ここで,私たちは実際のピークを3を引いた後の値を指している.金融市場では,ピーク度が0より大きいものはトレンドなし (sideway market) として表され,ピーク度が0より小さいものはトレンド市場 (trending market) として表される.
skewnessは,データ分布の対称性,すなわちデータ中の多数 (mode) の位置を表している.偏差は0に等しく,完全な対称性を表している.この統計量も,常態分布と比較する必要がある.偏差が0より大きいことは,常態分布と比較して,この配列は右偏差で,右側の長尾で,極値が右側より多く配置されていることを示している.反対に,偏差は左側で,左側の長尾で,極値が左側より多く配置されていることを示している.金融市場では,偏差が0より大きいことは,データが語彙集成の方向に傾いている傾向として説明できる.偏差が0より小さいことは,データが語彙集成の方向に傾いている傾向として説明できる.
確率論と統計学において,偏差は,実数ランダム変数の確率分布の非対称性を測定する.偏差の値は正であり,負であり,あるいは定義できない.数値的には,偏差が負であるということは,確率密度関数の左側の尾の長さが右側より大きく,大半の値は (中位数を含む) 平均値の右側にあることを意味する.偏差が正であるということは,確率密度関数の右側の尾の長さが左側にあることを意味する.大半の値は (中位数を含む) 平均値の左側の偏差がゼロであるということは,平均値の両側が比較的均等に分布していることを意味する.しかし,必ずしもその分布が対称であることを意味しない.
偏差は2つに分けられます.

input:ExitType(5) ;
input:NBarL(2),NBarS(2),TradeProfit(0.053),TradeStopLoss(0.023),ATRs_L(5.4),ATRs_S(10.9);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),HLRange(100);
inputs:Length(20),Trigger(3),UpSkew(3.4),DownSkew(2.2) ;
vars:KurtValue(0),SkewValue(0),BuyPoint(0),SellPoint(0);
MP = MarketPosition ;
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False ;
PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;
{计算峰度 }
KurtValue = Kurtosis(Close,Length) ;
{计算偏度}
SkewValue = Skew(Close,Length) ;
{ 峰度向下跌破 Trigger 线 ,建立买卖点 }
if KurtValue Cross under Trigger then Begin
BuyPoint = High 3;
SellPoint = Low-3;
end;
{ 偏度大于某数值后 ,趋势确认进场作多 }
if SkewValue > -UpSkew 2 then Buy next bar at BuyPoint stop ;
{ 偏度小于某数值后 ,趋势确认进场作空 }
if SkewValue < -DownSkew 2 then Sell next bar at SellPoint Stop ;
end;
if ExitType = 1 then SetStopLoss(PL * BigPointValue) ;
if ExitType = 2 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
end;
if ExitType = 3 then Begin
if MP > 0 and BarsSinceEntry = NBarL then ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then ExitShort next bar at Market ;
end;
if ExitType = 4 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
if MP > 0 and BarsSinceEntry = NBarL then {Sell } ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then {Buy} ExitShort next bar at Market ;
end;
if ExitType = 5 then Begin
{*******************************************************************
Description : ATR Trailing Stop Long Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
{Inputs: ATRs_L(3);}
Variables: PosHigh(0), ATRVal_L(0);
ATRVal_L = AvgTrueRange(10) * ATRs_L;
If BarsSinceEntry = 0 Then PosHigh = High;
If MarketPosition = 1 Then Begin
If High > PosHigh Then PosHigh = High;
ExitLong ("ATR") Next Bar at PosHigh - ATRVal_L Stop;
End else ExitLong ("ATR eb") Next bar at High - ATRVal_L Stop;
{*******************************************************************
Description : ATR Trailing Stop Short Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
******************************************************************}
{Inputs: ATRs_S(3);}
Variables: PosLow(0), ATRVal_S(0);
ATRVal_S = AvgTrueRange(10) * ATRs_S;
If BarsSinceEntry = 0 Then PosLow = Low;
If MarketPosition = -1 Then Begin
If Low < PosLow Then PosLow = Low;
ExitShort ("ATR_1") Next Bar at PosLow ATRVal_S Stop;
End else ExitShort ("ATR_1 eb") Next bar at Low ATRVal_S Stop;
end;
if IsBalanceDay then setExitonClose ;
farutoのブログから引用