一目均衡表に基づくトレンドフォロー戦略


作成日: 2023-12-11 15:00:29 最終変更日: 2023-12-11 15:00:29
コピー: 0 クリック数: 666
1
フォロー
1621
フォロワー

一目均衡表に基づくトレンドフォロー戦略

概要

この戦略は,Ichimokuの技術指標に基づいて設計され,トレンド追跡とバランスのとれた突破の取引方法を使用して,中長期の価格トレンドを把握し,安定した利益を達成することを目的としています.

戦略原則

策略は,一見均衡表の5つの線 - 転換線,基準線,前沿線,先導線,および遅延線を使用して,価格傾向とサポート抵抗を判断する.具体的判断規則は以下の通りである.

  1. 閉店価格が基準線を横切って,基準線が異常な動きをするとき,買取シグナルが生成される.
  2. 閉店価格が基準線を下回り,基準線が異常な動きをするとき,売り込みシグナルが発生する.
  3. 閉盤価格が雲より高いとき,流動性が良く,倉庫建設が許される.
  4. 閉盤価格が雲以下で,流動性が悪く,倉庫建設は禁止.
  5. 遅延線で閉店価格を横切ると,買入シグナルが生じます.
  6. 遅延線の下の切断は,売り込みのシグナルを生成する.

上記の取引シグナルを総合判断した後,最終的な入場時刻を決定する.

優位分析

この戦略の利点は以下の通りです.

  1. 一見均衡表を使用してトレンドを判断し,市場騒音をフィルターし,中長線トレンドをロックします.
  2. 雲と流動性の判断を組み合わせて,倉庫のリスクを回避できます.
  3. 遅延線は,偽突破を避けるために確認信号として使用されます.
  4. 規則はシンプルでわかりやすく,実行しやすい.

リスク分析

この戦略には以下のリスクもあります.

  1. パラメータの設定を間違えた場合,取引の機会を逃す可能性があります.
  2. 傾向が変化すると判断が遅れてしまい,時には止まらない.
  3. 複数の株主による負債のリスクが高い.

上記のリスクは,最適化パラメータの設定,他の指標と組み合わせてトレンドの変化,厳格な停止を判断することによって解決できます.

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 一見均衡表のパラメータを最適化し,最適な組み合わせを探します.
  2. 価格指数にフィルターを加え,トレンドの誤差を回避する.
  3. 変動率指数と相まって 逆転点を判断する
  4. 機械学習モデルのトレンド状態を判断します.

要約する

この戦略は,一見の均衡表を使用して価格の傾向と流動性の状況を判断し,トレンド追跡モードを採用し,効率的なフィルタリングノイズを捕捉し,リトラクションリスクが小さく,中長期線保持に適しています.パラメータ設定をさらに最適化し,補助フィルタリング指標を追加し,トレンド転換シグナルを掘り下げることで,戦略のProfit Factorを向上させることができます.

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

//@version=3
strategy("My Ichimoku Strat", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.EUR)
// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===
//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8)
buy=buy2 and buy3 or (buy1 and sellCompteur <=8)
plotchar(buy,char='B',size=size.small,color=lime)
plotchar(sell,char='S',size=size.small,color=orange)

//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))