
これは,一目均衡表の指標に基づいて設計されたトレンド追跡戦略である.この戦略は,一目均衡表の変換線,基準線,および雲の形状を利用し,非常に厳しい入場条件を設定し,かつ,簡単なストップ・ロスを使用して注文をクローズする.この戦略は,ロングラインのトレンド取引に適用される.
この戦略は,一見均衡表の変換線,基準線,前線A,前線B,および価格自体の関係を用いてトレンドの方向と強さを判断する.具体的判断基準は以下のとおりである.
上記のすべての条件が同時に満たされたときに買取シグナルを生成し,すべての条件が逆転したときに売出シグナルを生成する.
この戦略は同時に,前沿線Aをストップラインとして設定する. 価格がストップラインを下回ると,関連するポジションを平らげる.
これは条件が非常に厳格な戦略であるため,偽信号の干渉を効果的に避け,大きなトレンドのチャンスをロックすることができます.同時に,戦略は複数の指標を使用してトレンドを判断し,単一の指標が間違っているというシステミックなリスクを回避します.
この戦略は長線保有に適しており,取引頻度を減らすことで,取引コストと滑り点の影響を軽減するのに役立ちます.
この戦略の止損線は比較的緩やかで,将来の前線線A。これは単一損失の比較的大きなリスクにつながる可能性がある。止損線を厳格にするか,または補助指標を使用してリスクコントロールを検討することができる。
また,戦略信号が少ないため,ショートラインの機会を逃す可能性もあります.より高い頻度の取引を追求する場合は,一部の入場条件の厳格性を低下させることを検討することができます.
入口条件に緩やかなバランスを付け,入口の門を低くしてより多くの信号を取得することを考えることができます.または,標準を上げ,より多くのノイズを除し,より精細な信号をロックします.
止損方法は,自動止損または遠隔止損などの方法を試して,単一損失を制御することができる.
異なるパラメータが結果に影響を及ぼすことをテストして,最適なパラメータの組み合わせを見つけることができる。また,他の指標に追加して評価し,より正確な注文管理を実現することができる。
これは非常に厳格なトレンド追跡戦略である.それは,一見均衡表の複数の指標を使用してトレンドの方向と強さを判断し,偽信号を避ける.同時に,緩やかなストップの方法を使用して長線大トレンドをロックする.これは優れた戦略的考えであり,パラメータとストップの最適化により,非常に実用的な量化取引戦略になることができる.
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="BadaBing Ichimoku", shorttitle="BadaBing", overlay=true)
atr_period = input(title="ATR Period", defval=20)
conversion_period = input(title="Conversion Line Period", defval=9, minval=1)
base_period = input(title="Base Line Period", defval=26, minval=1)
span_b_period = input(title="Span B Period", defval=52, minval=1)
displacement = input(title="Displacement", defval=26, minval=1)
min_current_cloud_atr = input(title="Min Current Cloud ATR", type=float, defval=1.0)
min_future_cloud_atr = input(title="Min Future Cloud ATR", type=float, defval=0)
check_base_line_above_cloud = input(title="Check Base Line above Cloud?", type=bool, defval=true)
check_conversion_line_above_base_line = input(title="Check Conversion Line above Base Line?", type=bool, defval=true)
check_price_above_conversion_line = input(title="Check Price above Conversion Line?", type=bool, defval=true)
check_span_a_point_up = input(title="Check Current Span A is pointing Up?", type=bool, defval=false)
check_span_b_point_up = input(title="Check Current Span B is pointing Up?", type=bool, defval=false)
check_future_span_a_point_up = input(title="Check Future Span A is pointing Up?", type=bool, defval=true)
check_future_span_b_point_up = input(title="Check Future Span B is pointing Up?", type=bool, defval=true)
check_base_line_point_up = input(title="Check Base Line is Pointing Up?", type=bool, defval=true)
check_conversion_line_point_up = input(title="Check Conversion Line is Pointing Up?", type=bool, defval=true)
bullish_color = #ccff99
bearish_color = #ff704d
span_a_color = #0000cc
span_b_color = #000066
conversion_color = #ff99ff
base_color = #4da6ff
bull_signal_color = #228b22
bear_signal_color = #990000
donchian(len) => avg(lowest(len), highest(len))
bchange(series) => series and not series[1]
conversion_line = donchian(conversion_period)
base_line = donchian(base_period)
future_span_a = avg(conversion_line, base_line)
future_span_b = donchian(span_b_period)
span_a = future_span_a[displacement]
span_b = future_span_b[displacement]
current_atr = atr(atr_period)
min_cloud_width = min_current_cloud_atr * current_atr
current_cloud_long_flag = span_a > (span_b + min_cloud_width)
current_cloud_short_flag = span_a < (span_b - min_cloud_width)
future_cloud_long_flag = future_span_a > (future_span_b + min_cloud_width)
future_cloud_short_flag = future_span_a < (future_span_b - min_cloud_width)
base_line_long_flag = check_base_line_above_cloud ? (base_line > span_a) : true
base_line_short_flag = check_base_line_above_cloud ? (base_line < span_a) : true
conversion_line_long_flag = check_conversion_line_above_base_line ? (conversion_line > base_line) : true
conversion_line_short_flag = check_conversion_line_above_base_line ? (conversion_line < base_line) : true
price_long_flag = check_price_above_conversion_line ? (close > conversion_line) : true
price_short_flag = check_price_above_conversion_line ? (close < conversion_line) : true
span_a_point_long_flag = check_span_a_point_up ? (span_a > span_a[1]) : true
span_a_point_short_flag = check_span_a_point_up ? (span_a < span_a[1]) : true
span_b_point_long_flag = check_span_b_point_up ? (span_b > span_b[1]) : true
span_b_point_short_flag = check_span_b_point_up ? (span_b < span_b[1]) : true
future_span_a_point_long_flag = check_future_span_a_point_up ? (future_span_a > future_span_a[1]) : true
future_span_a_point_short_flag = check_future_span_a_point_up ? (future_span_a < future_span_a[1]) : true
future_span_b_point_long_flag = check_future_span_b_point_up ? (future_span_b > future_span_b[1]) : true
future_span_b_point_short_flag = check_future_span_b_point_up ? (future_span_b < future_span_b[1]) : true
base_line_point_long_flag = check_base_line_point_up ? (base_line > base_line[1]) : true
base_line_point_short_flag = check_base_line_point_up ? (base_line < base_line[1]) : true
conversion_line_point_long_flag = check_conversion_line_point_up ? (conversion_line > conversion_line[1]) : true
conversion_line_point_short_flag = check_conversion_line_point_up ? (conversion_line < conversion_line[1]) : true
bada_long = bchange(current_cloud_long_flag)
or bchange(future_cloud_long_flag)
or bchange(base_line_long_flag)
or bchange(conversion_line_long_flag)
or bchange(price_long_flag)
or bchange(span_a_point_long_flag)
or bchange(span_b_point_long_flag)
or bchange(future_span_a_point_long_flag)
or bchange(future_span_b_point_long_flag)
or bchange(base_line_point_long_flag)
or bchange(conversion_line_point_long_flag)
bada_short = bchange(current_cloud_short_flag)
or bchange(future_cloud_short_flag)
or bchange(base_line_short_flag)
or bchange(conversion_line_short_flag)
or bchange(price_short_flag)
or bchange(span_a_point_short_flag)
or bchange(span_b_point_short_flag)
or bchange(future_span_a_point_short_flag)
or bchange(future_span_b_point_short_flag)
or bchange(base_line_point_short_flag)
or bchange(conversion_line_point_short_flag)
bada_color = bada_long ? bull_signal_color : bear_signal_color
plotshape(bada_long or bada_short, title="bada",
style=shape.circle,
location=location.belowbar,
color=bada_color,
transp=50)
bing_long = current_cloud_long_flag
and future_cloud_long_flag
and base_line_long_flag
and conversion_line_long_flag
and price_long_flag
and span_a_point_long_flag
and span_b_point_long_flag
and future_span_a_point_long_flag
and future_span_b_point_long_flag
and base_line_point_long_flag
and conversion_line_point_long_flag
bing_short = current_cloud_short_flag
and future_cloud_short_flag
and base_line_short_flag
and conversion_line_short_flag
and price_short_flag
and span_a_point_short_flag
and span_b_point_short_flag
and future_span_a_point_short_flag
and future_span_b_point_short_flag
and base_line_point_short_flag
and conversion_line_point_short_flag
bing_color = bing_long ? bull_signal_color : bear_signal_color
plotshape(bchange(bing_long or bing_short), title="bing",
style=shape.diamond,
location=location.abovebar,
color=bing_color,
transp=0)
c = plot(conversion_line, color=conversion_color, title="Conversion Line", linewidth=2)
b = plot(base_line, color=base_color, title="Base Line", linewidth=2)
p1 = plot(future_span_a, offset = displacement, color=span_a_color, title="Span A", linewidth=3)
p2 = plot(future_span_b, offset = displacement, color=red, title="Span B", linewidth=3)
fill(p1, p2, color = future_span_a > future_span_b ? bullish_color : bearish_color, transp = 60)
strategy.entry("long", true, 1, when=bing_long)
strategy.exit("stop", "long", stop=span_a)
strategy.close("long", when=close < base_line)
strategy.entry("short", false, 1, when=bing_short)
strategy.exit("stop", "short", stop=span_a)
strategy.close("short", when=close > base_line)