イチモク・トレンド 戦略をフォローする

作者: リン・ハーンチャオチャン開催日:2023年12月11日15時29分
タグ:

img

概要

この戦略は,トレンドフォローとバランスブレイク取引のためのイチモク指標に基づいて設計されており,安定した利益を得るために中長期の価格傾向を把握することを目的としています.

戦略の論理

この戦略は,イチモクの5つの線 - テンカンセン,キジュンセン,センコスパンA,センコスパンB,チコスパン - を利用し,価格傾向とサポート/レジスタンスレベルを決定する.特定のエントリールールは:

  1. キージョン・センとキージョン・センが 横切っているとき 購入信号が発信されます
  2. キージョン・センとキージョン・センが 交差点が平らでないとき 売り信号が発します
  3. クローズは上空で ポジションを取るために 流動性が良い
  4. 閉じる値が低くなると 流動性が低いため ポジションを取ることは避けられる.
  5. チコウ・スパンが 閉店点を通過すると 買い信号が発信されます
  6. チコウ・スパンが 閉じる前に切ると 売り信号が発信されます

上記の取引信号は,最終的なエントリータイミングを決定するために組み合わせられます.

利点分析

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

  1. イチモクを使ってトレンドを判断することで 市場の騒音をフィルタリングして 中長期のトレンドを把握できます
  2. 雲の条件を組み込むことで,流動性が低いポジションを取ることは避けられます.
  3. チコウ・スパンは 偽の脱出を防ぐための 確認として機能します
  4. 規則はシンプルで 実行も明確です

リスク分析

この戦略のリスクは次のとおりです.

  1. 不適切なパラメータ設定は,取引機会を逃す可能性があります.
  2. トレンドが変異するときに 傾向判断が遅れてしまい 時間内に損失を削減することができません
  3. ロングポジションでは損失リスクが高くなります

これらのリスクは,パラメータを最適化し,傾向の変化を決定するために他の指標と組み合わせ,厳格なストップロスを通して対処できます.

オプティマイゼーションの方向性

戦略は次の側面からさらに最適化できます.

  1. イチモクパラメータを最適化して 最良の組み合わせを見つける
  2. 傾向偏差を避けるために価格とボリュームフィルターを追加します.
  3. 転機点を識別するための変動指標を組み込む.
  4. マシン学習モデルを追加して 傾向の状況を決定します

概要

この戦略は,イチモクを活用して,トレンドフォローのための価格動向と流動性条件を決定し,ノイズを効果的にフィルタリングし,より小さな引き下げで中長期のトレンドを捉える.パラメータチューニングのさらなる最適化,補助フィルターを追加し,トレンド逆転信号を識別することで,戦略の利益因子を改善することができます.


/*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))))

もっと