イチモクバランスライン戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-26 16:13:42
タグ:

img

概要

イチモクバランスライン戦略は,低リスクトレンド取引のためのイチモクキンコヒョ指標と組み合わせた移動平均を計算することによってトレンド方向を決定するトレンドフォロー戦略です.

戦略原則

イチモク・キンコ・ヒョウ (イチモク・キンコ・ヒョウ) は,トレンド方向を決定するために,イチモク・キンコ・ヒョウ (イチモク・キンコ・ヒョウ) を主要に使っている.イチモク・キンコ・ヒョウ (イチモク・クラウド) とも呼ばれるイチモク・キンコ・ヒョウは,テンカン・セン (変換線),キジュン・セン (ベースライン),センコ・スパンA (リード・スパンA),センコ・スパンB (リード・スパンB) で構成される.前後両側間の平衡地帯をクモ・クラウドと称する.価格が雲の上にあるとき,上昇傾向を示す.雲の下の突破は下降傾向を示す.

この戦略は,価格関係と移動平均を組み合わせ,トレンド方向を決定する.価格はベースラインと変換ラインを越えると購入信号を生成する.価格は雲を下回るときに販売信号を生成する.この組み合わせは偽のブレイクをフィルタリングし,トレンド方向をロックするのに役立ちます.

利点分析

  • イチモク・キンコ・ヒョウを使ってトレンドを判断し,市場変動の誤ったブレイクを回避する
  • 期間の間での最適化のために調整可能な移動平均パラメータ
  • 移動平均値との組み合わせは,トレンド方向を効果的に固定するのに役立ちます.
  • クラウドバンドは低リスクトレンド取引を可能にします

リスク分析

  • 不安定な市場状況で誤った信号を生む傾向がある
  • パラメータの設定が正しくない場合,取引信号が過度に頻繁または遅くなることがあります.
  • トレンド方向の手動判断とパラメータ調整が必要

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

戦略はいくつかの方法で最適化できます.

  1. もっと多くのタイムフレームに対応するために Ichimoku パラメータを最適化
  2. ストップ・ロスを取り入れ,取引ごとに損失を制限する.
  3. 強い傾向と弱い傾向を測定する指標を追加して,フラッシュを避ける
  4. 極端な市場条件でポジションを開くのを避けるために,より多くのエントリー条件を追加します.

結論

結論として,イチモクバランスライン戦略は,イチモククラウドを使用してトレンド方向を決定し,トレンドを効果的にロックし,移動平均値との価格関係を組み合わせて取引信号を生成し,低リスクトレンド取引を可能にします.この戦略は,パラメータ調節と最適化によって異なる市場環境に適応することができ,投資家が研究し利用する価値があります.


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

//@version=3
// Credit for the initial code to nathanhoffer - I simply added the ability to select a time period
//
strategy("Cloud Breakout", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Component Code Start ///////////////
testStartYear = input(2016, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

Ten = input(18, minval=1, title="Tenkan")
Kij = input(60, minval=1, title="Kijun")
LeadSpan = input(30, minval=1, title="Senkou B")
Displace = input(52, minval=1, title="Senkou A")
SpanOffset = input(52, minval=1, title="Span Offset")

sts = input(true, title="Show Tenkan")
sks = input(true, title="Show Kijun")
ssa = input(true, title="Show Span A")
ssb = input(true, title="Show Span B")
sc = input(true, title="Show Chikou")

source = close

//Script for Ichimoku Indicator
donchian(len) => avg(lowest(len), highest(len))
TS = donchian(Ten)
KS = donchian(Kij)
SpanA = avg(TS, KS)
SpanB = donchian(LeadSpan)

CloudTop = max(TS, KS)

Chikou = source[Displace]
SpanAA = avg(TS, KS)[SpanOffset]
SpanBB = donchian(LeadSpan)[SpanOffset]

//Kumo Breakout (Long)
SpanA_Top = SpanAA >= SpanBB ? 1 : 0
SpanB_Top = SpanBB >= SpanAA ? 1 : 0

SpanA_Top2 = SpanA >= SpanB ? 1 : 0
SpanB_Top2 = SpanB >= SpanA ? 1 : 0

SpanA1 = SpanA_Top2 ? SpanA : na
SpanA2 = SpanA_Top2 ? SpanB : na

SpanB1 = SpanB_Top2 ? SpanA : na
SpanB2 = SpanB_Top2 ? SpanB : na

//plot for Tenkan and Kijun (Current Timeframe)
p1= plot(sts and TS ? TS : na, title="Tenkan", linewidth = 2, color = gray)
p2 = plot(sks and KS ? KS : na, title="Kijun", linewidth = 2, color = black)
//p5 = plot(sc and KS ? KS : na, title="Chikou", linewidth = 2, color = orange)
p5 = plot(sc and Displace ? close: na, title="Chikou", linewidth = 2, offset=-Displace, color = orange)

//Plot for Kumo Cloud (Dynamic Color)
p3 = plot(ssa and SpanA ? SpanA : na, title="SpanA", linewidth=2, offset=Displace, color=green)
p4 = plot(ssb and SpanB ? SpanB : na, title="SpanB", linewidth=2, offset=Displace, color=red)

p8 = plot(ssa and SpanA1 ? SpanA1 : na, title="Span A1 above", style=linebr, linewidth=1, offset=Displace, color=green)
p9 = plot(ssa and SpanA2 ? SpanA2 : na, title="Span A2 above", style=linebr, linewidth=1, offset=Displace, color=green)
p10 = plot(ssb and SpanB1 ? SpanB1 : na, title="Span B1 above", style=linebr, linewidth=1, offset=Displace, color=red)
p11 = plot(ssb and SpanB2 ? SpanB2 : na, title="Span B2 above", style=linebr, linewidth=1, offset=Displace, color=red)

fill(p8, p9, color = lime, transp=70, title="Kumo Cloud Up")
fill (p10, p11, color=red, transp=70, title="Kumo Cloud Down")

LongSpan = (SpanA_Top and source[1] < SpanAA[1] and source > SpanAA) or (SpanB_Top and source[1] < SpanBB[1] and source > SpanBB) ? 1 : 0
cupSpan = LongSpan  == 1 ? LongSpan : 0

Long_Breakout = (SpanA_Top ==1 and crossover(source, SpanAA)) or (SpanB_Top ==1 and crossover(source, SpanBB))

ShortSpan = (SpanB_Top and source[1] > SpanAA[1] and source < SpanAA) or (SpanA_Top and source[1] > SpanBB[1] and source < SpanBB) ? 1 : 0
cdnSpan = ShortSpan == 1 ? ShortSpan : 0

Short_Breakout = (SpanA_Top ==1 and crossunder(source, SpanBB)) or (SpanB_Top ==1 and crossunder(source, SpanAA))

//Kumo Twist
Kumo_Twist_Long = SpanA[1] < SpanB[1] and SpanA > SpanB ? 1 : 0
Kumo_Twist_Short = SpanA[1] > SpanB[1] and SpanA < SpanB ? 1 : 0

cupD = Kumo_Twist_Long == 1 ? Kumo_Twist_Long : 0
cdnD = Kumo_Twist_Short == 1 ? Kumo_Twist_Short : 0

Chikou_Above = close > Chikou
Chikou_Below = close < Chikou

long = (cross(TS, SpanA) or cross(TS, SpanB)) and TS>SpanA and TS>SpanB and TS>=KS
short = cross(TS, KS) and KS >= TS

if testPeriod()
    strategy.entry("long", strategy.long, when=Long_Breakout)
    strategy.entry("short", strategy.short, when=Short_Breakout)

もっと