イチモク バランスライン トレンドトラッキング戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月12日 17:29:46
タグ:

概要

この戦略は,イチモク・キンコ・ヒョー指標から変換線,ベースライン,雲の境界線を使用して,トレンド方向を特定し,トレンド追跡取引を実装する.価格が雲の上を突破すると長行し,価格が雲の下を突破すると短行する. 既定の利益比に達すると利益が得られる. 既定の損失比に達すると損失が削減される.

戦略の論理

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

  • 変換線 (Tenkan-sen): 過去9期間の最高値と最低値の平均として計算された短期傾向を表します.
  • ベースライン (Kijun-sen): 過去26期間の最高値と最低値の平均として計算された中期トレンドを表す.
  • リードスパンA (センコスパンA): 変換とベースラインの平均値
  • リードスパンB (Senkou Span B):過去52期間の最高高値と最低低値の平均値

価格が雲の上を突破するとロングになり,価格が雲の下を突破するとショートになる.価格が雲の上と下を突破するとエントリーとエグジットが引き起こす.利益または損失比に達するとエグジットが引き起こす.

利点分析

  • イチモクを使ってトレンドの方向性を特定し,市場の騒音から誤った信号を避ける.
  • 雲を上から下へと割って,トレンドの逆転点を効率的に識別します
  • 利益とストップ・ロスのポイントは,利益とリスクを制御するのに役立ちます.

リスク分析

  • イチモクが遅れているので,入口ポイントを逃すかもしれない.
  • 変換ラインのような線の不適切なパラメータ調節は,誤った信号を引き起こす可能性があります
  • ストップ・ロスの設定 リスクが狭すぎ 早期離脱 リスクが緩すぎ 損失が大きい

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

  • 精度を向上させるために他の指標を組み合わせることを検討する
  • 異なる期間や市場のためのパラメータを動的に最適化
  • 価格動向に基づいてストップを調整し,早期出口を避けるためにトラッキングストップ損失を使用します.
  • 自動的な利益/損失戦略を策定し,波動性に基づいてポイントを賢く調整する

概要

この戦略は,トレンドを特定し,単純なトレンド追跡を実装するためにIchimokuクラウドを使用しています.いくつかの遅れや誤った信号にもかかわらず,パラメータ,ストップ,および他の指標の使用の最適化は改善することができます.理解し,実装しやすく,他の戦略を開発する際に初心者が学ぶことおよび参照することが良いです.継続的なテストと最適化は,より良いライブパフォーマンスのためのパラメータとルールを改善します.


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

もっと