平均ストカスティック取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月26日 16:20:33
タグ:

img

概要

この戦略は,トレードシグナル判断のための平均ストコスタスティックオシレーターに基づい,トレンドフォローする戦略に属しています. 平均ストコスタスティックオシレーターの%Kと%Dの移動平均値を計算します. ゴールデンクロスが発生すると,ロングに行く. デスクロスが発生すると,ショートに行く. これは典型的なトレンドフォローする戦略です.

戦略の論理

  1. 平均ストーカスティックオシレーターの%Kと%Dの値を計算する. %Kは,特定の期間の閉値に基づいて計算されたランダム値の移動平均値で,特定の期間の最高値と最低値に対する現在の価格の相対位置を反映する. %Dは,トレンドを確認するために使用される%Kの移動平均値です.

  2. 平均ストカスティックオシレーターの平均値 _avg_k と _avg_d を得るために,指数的に平らな移動平均値 (EMA) をそれぞれ%K と%D に適用する.

  3. 取引シグナルを特定する:

    • 購入信号: _avg_k が _avg_d と _avg_d < 20 を横切ると,ロングする.

    • 売る信号: _avg_k が _avg_d の下と _avg_d > 80 を切ると,ショートします.

  4. ポジション管理

    • 長期ストップ損失: _avg_d > 80 のとき長期を閉じる

    • ショートストップ損失: _avg_d < 20 のときショートストップ

  5. 同じ方向に最大3つの注文を許可します これはピラミッド型戦略です

利点

  1. 黄金十字と死十字を決定するために 移動平均を2倍使うことで 誤ったブレイクを効果的にフィルタリングし 信号品質を改善できます

  2. 平均ストカスティックオシレーターを使うと 価格動向を効果的に追跡できます

  3. 過剰購入と過剰販売のゾーンを組み合わせることで,レンジ・バインド市場での頻繁な取引を避けるのに役立ちます.

  4. ピラミッド取引を許すことで トレンドマーケットで 利益が増えます

  5. ストップロスの戦略はシングルロスを制御します

リスク

  1. 二重移動平均取引戦略は頻繁に取引を起こす傾向があり,取引コストが高すぎると収益性に影響します.

  2. 固定ストップ・ロスのポイントを使用すると,トレンドを早すぎる段階でストップ・ロスは出ない可能性があります.

  3. 過剰なピラミディングは 損失を増大させる可能性があります

  4. 動向の逆転点を効果的に決定できず,動向が逆転すると大きな損失を引き起こす可能性があります.

  5. パラメータ期間を最適化する必要があるのは,異なる期間が非常に異なる結果をもたらすからです.

最適化

  1. 逆トレンド取引を避けるため,トレンド判断指標を導入することを検討する.

  2. ストップ・ロスのポイントを動的に調整してトレンドに合わせて

  3. 例えばピラミッド戦略を最適化し ポジションサイズを徐々に増やす

  4. 傾向の逆転と利益の早期判断のために他の指標を組み込む.

  5. 適応性を向上させるため,異なる製品に対してテストパラメータを個別に最適化する.

概要

概要すると,これは典型的なトレンドフォロー戦略である.トレンドが発生するときにトレンド方向とピラミッドを決定するために平均ストカスティックオシレーターを使用する.その利点はトレンド市場に適した強力な追跡能力である.しかし,反トレンド取引を避けることは重要です.トレンド判断を導入し,ストップロスの戦略を最適化し,ピラミッドの時間を制御することによってさらなる最適化が可能である.適切なパラメータ選択により,良い追跡結果を達成することができます.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//1. AVG Stochastic Calculate
//1.1 AVG %K is calculated by apply EMA with smooth K period on Average of Original Stochastic %k & %d
//+ avg_k=ema((%k+%d)/2,smoothK)
//1.2 AVG %D is calculated by apply EMA with %d period on AVG %K
//+ avg_d=ema(avg_k,periodD)
//2. Parameter
//+ %K Length: 21
//+ %K Smoothing: 3
//+ %D Smoothing: 3
//+ Symbol: BTC/USDT
//+ Timeframe: M30
//+ Pyramiding: Maximum 3 orders at the same direction.
//3. Signal
//3.1 Buy Signal
//+ Entry: AVG %K crossover AVG %D and AVG %D < 20
//+ Exit: AVG %D > 80 
//3.2 Sell Signal
//+ Entry: AVG %K crossunder AVG %D and AVG %D > 80
//+ Exit: AVG %D < 20 
strategy(title="AVG Stochastic Strategy [M30 Backtesting]", overlay=true, pyramiding=3)
periodK = input.int(21, title="%K Length", minval=1)
smoothK = input.int(3, title="%K Smoothing", minval=1)
periodD = input.int(3, title="%D Smoothing", minval=1)
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
_avg_k=ta.ema(math.avg(k,d),smoothK)
_avg_d=ta.ema(_avg_k,periodD)
up=
   _avg_k[1]<_avg_d[1]
   and _avg_k>_avg_d
   and _avg_d<20
dn=
   _avg_k[1]>_avg_d[1]
   and _avg_k<_avg_d
   and _avg_d>80
var arr_val=0
if up
    arr_val:=1
    strategy.entry("Long", strategy.long)
if dn
    arr_val:=-1
    strategy.entry("Short", strategy.short)
if up[1] or dn[1]
    arr_val:=0
plotarrow(arr_val,title="Signal",colorup=color.green,colordown=color.red)
if _avg_d>80 
    strategy.close("Long")
if _avg_d<20 
    strategy.close("Short")
//EOF

もっと