カマと移動平均に基づいたトレンド 戦略に従う

作者: リン・ハーンチャオチャン,日付: 2024-02-06 09:53:22
タグ:

img

概要

この戦略の主な考え方は,トレンドフォローを達成するために,カマ移動平均と移動平均指標を組み合わせて市場トレンドを特定することです.カマ移動平均と移動平均が黄金十字を持つとき,上向きトレンドが始まると判断され,ロングポジションが取られます.カマ移動平均と移動平均が死亡十字を持つとき,下向きトレンドが始まると判断され,ショートポジションが取られます.

戦略の論理

  1. カマ移動平均を計算する. カマ移動平均は,市場騒音により敏感で,価格傾向を決定するために使用できるトレンドフォローする指標です.

  2. 2つの移動平均を計算します 1つはより速い倍指数移動平均で もう"つは通常の加重移動平均です

  3. 低速線が低速線を突破すると,長走します. 高速線が低速線を突破すると,短走します. 傾向判断と追跡が完了します.

  4. ポジションを取った後,出口後のトレンドを達成するために,価格がカマラインを突破すると出口します.

利点

  1. この戦略は,カマ移動平均と移動平均指標を組み合わせて,市場の動向について比較的正確な判断を行い,強い引き下げ制御能力を持つ傾向を追求する.

  2. カマ移動平均は市場の騒音に敏感で 傾向の逆転点を事前に検出できます

  3. 移動平均の組み合わせ判断は 明確で分かりやすいものです

  4. 戦略には大きなパラメータ最適化空間があり,パラメータは異なる品種と取引手段のために調整および最適化することができます.

リスク分析

  1. カマ移動平均と移動平均の組み合わせが市場動向を判断するとき,誤判の可能性は依然としてあります.他の指標を確認する必要があります.

  2. ストップ・ロスの設定がない場合,極端な市場条件では,より大きな損失をもたらす可能性があります.

  3. 不適切なパラメータ設定も判断の誤りを引き起こす可能性があります.パラメータは異なる品種に応じて調整する必要があります.

最適化 の 提案

  1. ストップ・ロスの設定のためにATRインジケーターを追加することを検討する.

  2. 最適なパラメータを見つけるために 戦略のリターンに異なるパラメータ値の影響をテストする.

  3. 判断の正確性を向上させるために,振動器の指標などの検証のための他の指標を追加することを検討する.

  4. 自動パラメータ最適化のためのパラメータ自己適応とダイナミック最適化フレームワークを構築する.

概要

この戦略の全体的な考え方は明確であり,カマ移動平均と移動平均金十字と死亡十字を使用して,強い引き下げ制御能力を持つトレンドを決定し,追跡する.パラメータチューニングと最適化によって,良い結果を得ることができます.しかし,まだ改善の余地があります.より多くの検証指標とストップ損失モジュールを追加することで,戦略の安定性と収益性がさらに向上することができます.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//synapticex.com
kamaPeriod = input(8, minval=1) 
ROCLength=input(4, minval=1) 

kama(length)=>
    volatility = sum(abs(close-close[1]), length)
    change = abs(close-close[length-1])
    er = iff(volatility != 0, change/volatility, 0)
    sc = pow((er*(0.666666-0.064516))+0.064516, 2)
    k = nz(k[1])+(sc*(hl2-nz(k[1])))
    

n=input(title="period",defval=7)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?lime:red
ma=plot(n1,color=c, linewidth = 3)
plot(cross(nma, nma1) ? nma : na, style = cross, color = c, linewidth = 5)
    
kamaEntry = request.security(syminfo.tickerid,timeframe.period,kama(kamaPeriod))

plot(kamaEntry, color=gray, title="Kama",transp=0, trackprice=false, style=line)


strategy("Kama VS HeikinAshi", overlay=true, pyramiding=0, calc_on_every_tick=true, calc_on_order_fills=true)

buyEntry =  n1 > n2
sellEntry = close < kamaEntry and n1 < n2 

buyExit = close < kamaEntry and n1 < n2
sellExit = n1 > n2 
if (buyEntry)
    strategy.entry("KAMAL", strategy.long, comment="KAMAL")
else
    strategy.close("KAMAL", when=buyExit)

if (sellEntry)
    strategy.entry("KAMAS", strategy.short, comment="KAMAS")
else
    strategy.close("KAMAS", when = sellExit)



もっと