イチモク・キンコ・ヒョー ベースBTC取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年12月20日 13:34:08
タグ:

img

概要

この戦略は"イチモク・キンコ・ヒョー戦略"と呼ばれる.これは他の技術指標と組み合わせたイチモク・キンコ・ヒョーシステムに基づくBTC取引戦略である.

戦略の論理

この戦略は主にイチモク・キンコ・ヒョーシステムに基づい,トレンド取引のための複数の技術指標を組み込む.主な構成要素は:

キジュン・セン:市場のトレンド方向を表す.過去26日間の最高値と最低値の真ん中点であり,サポートとレジスタンスラインとして機能する. 閉じる価格がキジュン・センを横切ると購入と売却の信号が生成される.

テンカンセン:価格の勢いを表す.過去9日間の最高値と最低値の真ん中点であり,最良のエントリーと出口スポットを決定するのに役立ちます.

Senkou Span A: イチモクの中期線を表す.これはキジョン・センとテンカン・センの平均線であり,イチモクの警告線として機能する.

Senkou Span B: 長期トレンドラインを表す.過去52日の中点である.長期および短期トレンドを決定するためにイチモク雲を形成する.

さらに,この戦略には,過剰購入と過剰販売のゾーンで取引シグナルを生成するためのRSI指標も含まれています.

購入信号は,価格がキジュンセンに突入して雲の上に位置するときに生成される. 売却信号は,価格がキジュンセンに突入して雲下に位置するときに生成される.

利点

  1. イチモクシステムでは 比較的高い得率で トレンドを正確に決定します

  2. 複数の指標を組み込むことで 機会を逃すことは避けられます

  3. RSIは逆転スポットを効果的に決定します

  4. クラウドは直感的に 短期的・長期的トレンドを提示します

リスク分析

  1. イチモクシステムには 欠陥があり 他の指標を組み込む必要がある

  2. トレンド市場では非常にうまく機能しますが 市場範囲では控えめです

  3. RSIのパラメータは 市場に応じて調整する必要があります

  4. 雲の構造は複雑で 熟練した操作が必要です

イチモクのパラメータを最適化したり,より多くの指標を追加したりできます.

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

  1. イチモクのパラメータを最適化して 傾向を早く判断する

  2. 信号の精度を向上させるため 移動平均値のような指標を追加します

  3. RSIパラメータを異なる市場に基づいて調整する.

  4. リスク管理にストップ・ロスのメカニズムを追加することを検討する.

結論

イチモクは,RSIのような指標と組み合わせると,上昇傾向を捉えるのに高い精度を持っています. イチモクに遅れ,市場範囲に適応できないことが主要なリスクです.適切なパラメータ調節とより多くの指標を追加することで,これらのリスクが大幅に軽減され,戦略がより堅牢で信頼性があります.


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

//@version=3
strategy("My Ichimoku Strat v2", overlay=true,default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.EUR,commission_type=strategy.commission.percent,commission_value=0.05)
// === BACKTEST RANGE ===
FromMonth = input(defval = 3, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, 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



//RSI
src = close, len = input(14, minval=1, title="RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
buyRSI = crossover(rsi,40) and close > TenkanSen and rsi[5]<30 and (rsi-rsi[1])>5
sellRSI = crossunder(rsi,60) and close < TenkanSen and rsi[5]>70 and (rsi[1]-rsi)>5
plotshape(buyRSI,style=shape.triangleup,color=lime,transp=0,location=location.belowbar,size=size.small)

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8) or sellRSI
buy=buy2 and buy3 or (buy1 and sellCompteur <=8) or buyRSI
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))))

もっと