始値チャネルに基づくトレンド戦略


作成日: 2023-12-18 12:35:42 最終変更日: 2023-12-18 12:35:42
コピー: 1 クリック数: 624
1
フォロー
1621
フォロワー

始値チャネルに基づくトレンド戦略

概要

チャネルトレンド戦略は,開盤価格とドンチアンチャネルに基づくトレンド追跡戦略である. ドンチアンチャネルが形成した価格チャネルと組み合わせて,現在の価格から開盤価格をベースとしたトレンドラインを描き,トレンドの方向性を識別する. 価格がチャネルを突破すると取引信号を生成する.

戦略原則

  1. タイムサイクル (日線,周線など) を選択し,そのサイクルでの開場価格を基準価格として取得します.

  2. ドンチアン・チャネル指標を使用して,その周期における最高価格と最低価格のN日移動平均を計算し,価格チャネルを形成する.

  3. 現在の閉店価格からこの周期の開店価格に直線を描き,トレンド基準線として用いること.

  4. 閉店価格がドンチアン通路の上沿いを突破すると,買いの信号が生成され,閉店価格が通路の下沿いを突破すると,売りの信号が生成される.

  5. ストップ・ストップ・ロスの戦略を設定する

この戦略は,基準線と通路線の組み合わせを使用して,トレンドの方向をロックし,トレンドが存在するときに継続的な信号を生成し,一部のノイズをフィルターします.

優位分析

  1. 戦略的基準として開場価格を使用すると,異なる時間周期における価格トレンドの変化を効果的に判断できます.

  2. ドンチアン・チャネル指標は,短期的な波動がベースラインに与える影響を効果的に除する.

  3. 基準線とドンチアンチャネルを組み合わせて,トレンドが明確であるときにシグナルを生成し,偽突破を避ける.

  4. 自動でストップ・ストップ・ロスの位置を設定し,利益の一部をロックし,リスクを制御する.

  5. この戦略はパラメータが少なく,実行の難しさは低く,習得は簡単である.

リスク分析

  1. 状況の整合に際して,無効な信号が多く発生する可能性があります.

  2. パラメータが正しく設定されていなければ,ストップダメージポイントがあまりにも近くなり,早めにストップダメージが出場する可能性があります.

  3. この策略は,FREQ策略には適さない傾向の動きに依存している.

  4. 異常な状況では,価格がストップラインを直接突破して大きな損失を招く可能性があります.

最適化の方向

  1. 異なる周期パラメータをテストして,信号を生成する最もスムーズな周期を選択できます.

  2. ドンチアン通路のパラメータを調整して,より適切な通路幅を設定できます.

  3. 異なる品種特性に応じてストップ・ストップ・損失比率を最適化することができる.

  4. 他の指標のフィルタを追加して,異常な状況下での信号発生を防ぐことができます.

要約する

チャンネルトレンド戦略は,開盤価格とドンチアンチャネルが形成するチャネルラインを利用して,価格トレンドの方向を識別する.それは,読みやすい継続的な信号を生成し,ストップ・ストップ・ロスを設定することで,利益をロックし,リスクを制御する,非常に実用的なトレンド追跡戦略である.パラメータを継続的にテストし,最適化することで,この戦略は,異なる品種に適用され,トレンドの状況でより良い収益を得ることができる.

ストラテジーソースコード
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//
strategy("STR-TREND", overlay=true)

emax = ta.ema(close,1)
plot(emax,title="X-EMA",color=color.black,linewidth=2)

XDX = input.string(title="TIMELINE", defval="M")
xdaily = request.security(syminfo.tickerid, XDX, open,barmerge.gaps_off, barmerge.lookahead_on)
length = input.int(21, minval=1)
lower = ta.lowest(xdaily,length)
upper = ta.highest(xdaily,length)
XXX = close>upper?lower:upper
plot(XXX,title="STR-X",color=color.red,linewidth=4)

TAKEPROFIT = input.int(15,title="Take Profit %", minval=1)
SELLTAKEPROFIT = XXX * (1-(TAKEPROFIT/100))
BUYTAKEPROFIT = XXX * (1+(TAKEPROFIT/100))
TAKEPROFITX = close<XXX?SELLTAKEPROFIT:BUYTAKEPROFIT
plot(TAKEPROFITX,title="TAKE PROFIT",color=color.black,linewidth=1)


//////////////STRATEGY ///////////////////

buystat= ta.crossover(close,XXX) 
sellstat = ta.crossunder(close,XXX) 

plotshape(buystat==true, title='long', text='BUY', textcolor=color.new(color.white, 0), style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny) 
plotshape(sellstat==true, title='short', text='SELL', textcolor=color.new(color.white, 0), style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny) 

//////////////STRATEGY ///////////////////

strategy.entry("LONG", strategy.long, when = buystat==true, comment="")
strategy.exit("BUY TP", "LONG", qty_percent = 50 ,limit = BUYTAKEPROFIT)
strategy.close("LONG", when = sellstat==true, comment="")

strategy.entry("SHORT", strategy.short, when = sellstat==true, comment="")
strategy.exit("SELL TP", "SHORT", qty_percent = 50 ,limit = SELLTAKEPROFIT)
strategy.close("SHORT", when = buystat==true , comment="")