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


作成日: 2023-10-12 17:29:46 最終変更日: 2023-10-12 17:29:46
コピー: 0 クリック数: 665
1
フォロー
1617
フォロワー

概要

この戦略は,Ichimoku Kinko Hyo指標のConversion Line,Base Line,および線雲の前沿と後沿を用い,価格のトレンド方向を識別し,トレンド追跡取引を実現する.価格が雲頂を突破すると多し,雲底を突破すると空し,預定利益率のストップに達し,預定損失率のストップに達する.

戦略原則

この戦略は,主に以下のイチモク指数線を使用しています.

  • 変換線 (Tenkan-sen):短期トレンドを表す変換線で,9周期の最高値と最低値の平均線
  • Base Line (Kijun-sen) 中期トレンドを表す基準線,26周期の高値と低価格の平均
  • Leading Span A (Senkou Span A): リードスパンA,変換線と基準線の平均
  • Leading Span B (Senkou Span B): 52サイクル間の最高価格と最低価格の平均を意味する先行スペンB

価格が上方前沿雲を突破すると,多めにする.価格が下方前沿雲を突破すると,空白する.ConfigEntryとExitReasonは,それぞれ雲の頂部と底部を突破するとポジションを開き,損益率に達すると平仓する.

優位分析

  • イチモク指数を使ってトレンドの方向を把握し,市場の揺れに惑わされないようにする
  • トレンドの転換点を特定し,取引効率を向上させるため,クラウドトップ/クラウドボトムを突破する
  • ストップ・ストップ・ポイントを設定して,利益の機会を把握し,リスクをコントロールします.

リスク分析

  • Ichimoku Indicatorは遅滞しており,トレンド転換のベストポイントを逃している可能性があります.
  • 合理的に設定されたパラメータ周期が必要.変換線,基準線などの周期設定が不適切である場合,偽信号が発生する可能性があります.
  • ストップポイントが小さすぎると,早めにストップする可能性があります. ストップポイントが大きすぎると,損失が拡大するリスク

最適化の方向

  • 他の指標と組み合わせて,より高い精度を考慮する
  • ダイナミックな最適化パラメータ周期,異なる周期と市場環境に対応
  • ストップトラッキングを設定し,ストップポイントを価格変動に合わせて調整し,早期ストップを避ける
  • 自動ストップ・ストップ・ストップ戦略を開発し,市場の変動に応じてストップ・ストップをスマートに調整することを検討

要約する

この戦略は,イチモク雲のトレンド認識方向を利用して,簡単に効率的にトレンド追跡取引を行う.一定の遅れや偽信号のリスクがあるにもかかわらず,パラメータ最適化,止損技術の改善,その他の指標との組み合わせなどによって改善することができる.この戦略は,理解しやすく実行し,初心者向けに学習し,他の戦略の参考としても使用できます.継続的なテストと最適化により,戦略パラメータとルールはより完善化され,実盤でより良いパフォーマンスを得ることができます.

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

//@version=3
strategy("Estratégia com Ichimoku" , pyramiding=0, calc_on_every_tick = true, initial_capital = 20000, commission_type = strategy.commission.cash_per_order, commission_value = 10.00)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////Ichimoku Clouds////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////(VERSÃO 40.0)//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

periodoLinhaDeConversao = input(defval=9, title="Tenkan-sen (Linha de Conversão)",  minval=1)
periodoLinhaBase = input(defval=26, title="Kijun-sen (Linha Base)",  minval=1)
periodoNivelAdiantadoB = input(defval=52, title="Senkou Span B (Nível adiantado B)",  minval=1)
deslocamento = input(defval=26, title="Deslocamento",  minval=1)

linhaDeConversao = (highest(high,periodoLinhaDeConversao)+lowest(low,periodoLinhaDeConversao))/2
linhaBase = (highest(high,periodoLinhaBase)+lowest(low,periodoLinhaBase))/2
nivelAdiantadoA = (linhaDeConversao + linhaBase)/2
nivelAdiantadoB = (highest(high,periodoNivelAdiantadoB)+lowest(low,periodoNivelAdiantadoB))/2

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy.initial_capital = 50000
//Hardcoded quantity - strategy.entry(qty=)
capitalInicial = strategy.initial_capital
lotes = (strategy.initial_capital - (strategy.initial_capital % (open*100)))/open

//Percentage input goal - strategy.exit(profit=)
percentGoal = input (defval = 5.0, title = "Goal (%)", type = float, minval=0.0, step=0.1)
longGoal = (strategy.position_avg_price * (percentGoal/100)) * 100
shortGoal = (strategy.position_avg_price - (strategy.position_avg_price / (1+(percentGoal/100)))) * 100

//Percentage input stop - strategy.exit(loss=)
percentStop = input (defval = 0.5, title = "Stop (%)", type = float, minval=0.0, step=0.1)
longStop = (strategy.position_avg_price * (percentStop/100)) * 100
shortStop = (strategy.position_avg_price * (percentStop/100)) * 100

strategy.entry('entryLong', strategy.long, lotes, when = strategy.position_size == 0 and crossover(close,max(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.entry('entryShort', strategy.short, lotes, when = strategy.position_size == 0 and crossunder(close,min(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.exit('exitLong', 'entryLong', profit = longGoal, loss = longStop)
strategy.exit('exitShort', 'entryShort', profit = shortGoal, loss = shortStop)

plot(strategy.equity, title="Variação de capital", color=white)
//plot(strategy.position_size, color=red)