OPEN-SOURCE SCRIPT
SOL 15分钟MACD全自动策略

//version=5
strategy("30分钟高胜率MACD+RSI全自动策略", overlay=true, shorttitle="HighWin-30min Auto",
initial_capital=10000, // 初始资金
default_qty_type=strategy.cash, // 按资金比例开仓
default_qty_value=2000, // 单次开仓金额(可调整)
commission_type=strategy.commission.percent,
commission_value=0.1, // 匹配欧易0.1%默认手续费
margin_long=100, margin_short=100, // 现货交易无杠杆
pyramiding=0, // 禁止加仓,控制风险
close_entries_rule=strategy.close_entries_rule.all,
calc_on_every_tick=false, // 关闭逐Tick计算,避免报错
title_color=#1E90FF, line_color=#FF6347)
// ———— 1. 核心参数设置(高胜率优化版,可微调) ————
// MACD参数(30分钟周期适配,比默认更稳定)
macd_fast = input.int(12, title="MACD快线周期", minval=1)
macd_slow = input.int(26, title="MACD慢线周期", minval=1)
macd_signal = input.int(9, title="MACD信号线周期", minval=1)
// RSI参数(过滤超买超卖,避免追涨杀跌)
rsi_length = input.int(14, title="RSI周期", minval=1)
rsi_long_thresh = input.int(40, title="多头RSI阈值(低于该值可开多)", minval=10, maxval=50)
rsi_short_thresh = input.int(60, title="空头RSI阈值(高于该值可开空)", minval=50, maxval=90)
// 成交量参数(验证资金动能)
vol_multiplier = input.float(1.5, title="成交量放大倍数", step=0.1, minval=1.0)
// ATR止损与止盈参数(科学风控)
atr_length = input.int(14, title="ATR周期(衡量波动)", minval=1)
atr_sl_multi = input.float(2.0, title="止损ATR倍数(2倍更安全)", step=0.1, minval=1.0)
risk_reward = input.float(2.0, title="风险回报比(1:2,赚2倍于亏)", step=0.1, minval=1.5)
// 信号过滤(避免连续交易)
signal_gap = input.int(4, title="多空信号最小间隔K线数", minval=2)
// ———— 2. 指标计算(三重验证,降低假信号) ————
// 2.1 MACD计算(多空趋势核心)
[macd_line, signal_line, hist_line] = ta.macd(close, macd_fast, macd_slow, macd_signal)
// 多头趋势:MACD在零轴上+红柱放大;空头趋势:MACD在零轴下+绿柱放大
macd_long_trend = macd_line > 0 and hist_line > hist_line[1]
macd_short_trend = macd_line < 0 and hist_line < hist_line[1]
// 2.2 RSI计算(过滤超买超卖)
rsi_value = ta.rsi(close, rsi_length)
rsi_long_condition = rsi_value < rsi_long_thresh // 未超买,有上涨空间
rsi_short_condition = rsi_value > rsi_short_thresh // 未超卖,有下跌空间
// 2.3 成交量计算(验证资金动能)
vol_condition = volume >= volume[1] * vol_multiplier and volume[1] > 0 // 成交量比前根放大50%+
vol_long = vol_condition and close > open // 放量上涨,多头资金进场
vol_short = vol_condition and close < open // 放量下跌,空头资金进场
// 2.4 ATR计算(动态止损基础)
atr_value = ta.atr(atr_length)
atr_value := nz(atr_value, ta.sma(ta.tr, atr_length)) // 空值兜底,避免报错
// ———— 3. 多空信号生成(三重条件共振,高胜率核心) ————
// 3.1 多头信号(4个条件同时满足)
var int last_long_bar = 0
long_condition = ta.crossover(macd_line, signal_line) // MACD金叉
and macd_long_trend // 多头趋势
and rsi_long_condition // RSI未超买
and vol_long // 放量上涨
and (bar_index - last_long_bar) >= signal_gap // 间隔过滤
final_long = long_condition
// 3.2 空头信号(4个条件同时满足)
var int last_short_bar = 0
short_condition = ta.crossunder(macd_line, signal_line) // MACD死叉
and macd_short_trend // 空头趋势
and rsi_short_condition // RSI未超卖
and vol_short // 放量下跌
and (bar_index - last_short_bar) >= signal_gap // 间隔过滤
final_short = short_condition
// ———— 4. 动态止盈止损计算(适配30分钟波动,不被洗盘) ————
// 4.1 记录开仓关键数据
var float long_entry = na // 多头入场价
var float short_entry = na // 空头入场价
var float long_entry_low = na // 多头开仓K线低点
var float short_entry_high = na // 空头开仓K线高点
var float entry_atr = na // 开仓时ATR值
// 多头开仓数据记录
if final_long
long_entry := close
long_entry_low := low
entry_atr := atr_value
last_long_bar := bar_index // 更新最后多头信号K线
// 空头开仓数据记录
if final_short
short_entry := close
short_entry_high := high
entry_atr := atr_value
last_short_bar := bar_index // 更新最后空头信号K线
// 4.2 多头止盈止损(双逻辑防护)
long_sl = math.max(long_entry - (entry_atr * atr_sl_multi), long_entry_low * 0.997) // 0.3%缓冲防插针
long_loss = long_entry - long_sl // 止损幅度
long_tp = long_entry + (long_loss * risk_reward) // 1:2风险回报比止盈
// 额外绑定中期压力:前10根K线高点(30分钟周期趋势更稳,周期稍长)
long_resistance = ta.highest(high, 10)[1]
long_tp = math.min(long_tp, long_resistance * 1.003) // 0.3%缓冲防踏空
// 4.3 空头止盈止损(对称逻辑)
short_sl = math.min(short_entry + (entry_atr * atr_sl_multi), short_entry_high * 1.003)
short_loss = short_sl - short_entry
short_tp = short_entry - (short_loss * risk_reward)
// 额外绑定中期支撑:前10根K线低点
short_support = ta.lowest(low, 10)[1]
short_tp = math.max(short_tp, short_support * 0.997)
// ———— 5. 全自动交易执行(严格仓位控制,避免冲突) ————
// 多头开仓:无仓位时执行(避免多空对冲)
if final_long and strategy.position_size == 0
strategy.entry("Long-Position", strategy.long)
strategy.exit("Long-Exit", "Long-Position", stop=long_sl, limit=long_tp) // 自动挂止盈止损
// 空头开仓:无仓位时执行
if final_short and strategy.position_size == 0
strategy.entry("Short-Position", strategy.short)
strategy.exit("Short-Exit", "Short-Position", stop=short_sl, limit=short_tp)
// ———— 6. 可视化与预警(清晰监控,欧易同步提醒) ————
// 6.1 多空信号标记(直观区分)
plotshape(final_long, title="多头信号", location=location.belowbar,
color=color.new(color.green, 0), style=shape.labelup,
text="多", textcolor=color.white, size=size.small)
plotshape(final_short, title="空头信号", location=location.abovebar,
color=color.new(color.red, 0), style=shape.labeldown,
text="空", textcolor=color.white, size=size.small)
// 6.2 止盈止损线(开仓后自动显示,红色止损、绿色止盈)
plot(strategy.position_size > 0 ? long_sl : na, title="多头止损",
color=color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_tp : na, title="多头止盈",
color=color.green, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_sl : na, title="空头止损",
color=color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_tp : na, title="空头止盈",
color=color.green, linewidth=2, style=plot.style_linebr)
// 6.3 副图指标(辅助验证趋势)
// MACD副图
plot(macd_line, title="MACD线", color=color.blue, linewidth=1)
plot(signal_line, title="MACD信号线", color=color.orange, linewidth=1)
barcolor(hist_line > 0 ? color.new(color.green, 60) : color.new(color.red, 60), title="MACD柱")
hline(0, "MACD零轴线", color=color.gray, linestyle=hline.style_dashed)
// RSI副图(显示超买超卖区间)
plot(rsi_value, title="RSI", color=color.purple, linewidth=1, display=display.data_window)
hline(rsi_long_thresh, "多头RSI阈值", color=color.green, linestyle=hline.style_dotted)
hline(rsi_short_thresh, "空头RSI阈值", color=color.red, linestyle=hline.style_dotted)
hline(30, "超卖线", color=color.gray, linestyle=hline.style_dashed)
hline(70, "超买线", color=color.gray, linestyle=hline.style_dashed)
// 6.4 关键预警(欧易同步通知,无需盯盘)
alertCondition(final_long, title="多头开仓提醒",
message="30分钟触发高胜率多头信号,入场价:" + str.tostring(long_entry) + ",止损:" + str.tostring(long_sl))
alertCondition(final_short, title="空头开仓提醒",
message="30分钟触发高胜率空头信号,入场价:" + str.tostring(short_entry) + ",止损:" + str.tostring(short_sl))
alertCondition(strategy.position_size > 0 and close <= long_sl, title="多头止损提醒",
message="多头触及止损位:" + str.tostring(long_sl) + ",已自动平仓")
alertCondition(strategy.position_size > 0 and close >= long_tp, title="多头止盈提醒",
message="多头触及止盈位:" + str.tostring(long_tp) + ",已自动平仓")
alertCondition(strategy.position_size < 0 and close >= short_sl, title="空头止损提醒",
message="空头触及止损位:" + str.tostring(short_sl) + ",已自动平仓")
alertCondition(strategy.position_size < 0 and close <= short_tp, title="空头止盈提醒",
message="空头触及止盈位:" + str.tostring(short_tp) + ",已自动平仓")
strategy("30分钟高胜率MACD+RSI全自动策略", overlay=true, shorttitle="HighWin-30min Auto",
initial_capital=10000, // 初始资金
default_qty_type=strategy.cash, // 按资金比例开仓
default_qty_value=2000, // 单次开仓金额(可调整)
commission_type=strategy.commission.percent,
commission_value=0.1, // 匹配欧易0.1%默认手续费
margin_long=100, margin_short=100, // 现货交易无杠杆
pyramiding=0, // 禁止加仓,控制风险
close_entries_rule=strategy.close_entries_rule.all,
calc_on_every_tick=false, // 关闭逐Tick计算,避免报错
title_color=#1E90FF, line_color=#FF6347)
// ———— 1. 核心参数设置(高胜率优化版,可微调) ————
// MACD参数(30分钟周期适配,比默认更稳定)
macd_fast = input.int(12, title="MACD快线周期", minval=1)
macd_slow = input.int(26, title="MACD慢线周期", minval=1)
macd_signal = input.int(9, title="MACD信号线周期", minval=1)
// RSI参数(过滤超买超卖,避免追涨杀跌)
rsi_length = input.int(14, title="RSI周期", minval=1)
rsi_long_thresh = input.int(40, title="多头RSI阈值(低于该值可开多)", minval=10, maxval=50)
rsi_short_thresh = input.int(60, title="空头RSI阈值(高于该值可开空)", minval=50, maxval=90)
// 成交量参数(验证资金动能)
vol_multiplier = input.float(1.5, title="成交量放大倍数", step=0.1, minval=1.0)
// ATR止损与止盈参数(科学风控)
atr_length = input.int(14, title="ATR周期(衡量波动)", minval=1)
atr_sl_multi = input.float(2.0, title="止损ATR倍数(2倍更安全)", step=0.1, minval=1.0)
risk_reward = input.float(2.0, title="风险回报比(1:2,赚2倍于亏)", step=0.1, minval=1.5)
// 信号过滤(避免连续交易)
signal_gap = input.int(4, title="多空信号最小间隔K线数", minval=2)
// ———— 2. 指标计算(三重验证,降低假信号) ————
// 2.1 MACD计算(多空趋势核心)
[macd_line, signal_line, hist_line] = ta.macd(close, macd_fast, macd_slow, macd_signal)
// 多头趋势:MACD在零轴上+红柱放大;空头趋势:MACD在零轴下+绿柱放大
macd_long_trend = macd_line > 0 and hist_line > hist_line[1]
macd_short_trend = macd_line < 0 and hist_line < hist_line[1]
// 2.2 RSI计算(过滤超买超卖)
rsi_value = ta.rsi(close, rsi_length)
rsi_long_condition = rsi_value < rsi_long_thresh // 未超买,有上涨空间
rsi_short_condition = rsi_value > rsi_short_thresh // 未超卖,有下跌空间
// 2.3 成交量计算(验证资金动能)
vol_condition = volume >= volume[1] * vol_multiplier and volume[1] > 0 // 成交量比前根放大50%+
vol_long = vol_condition and close > open // 放量上涨,多头资金进场
vol_short = vol_condition and close < open // 放量下跌,空头资金进场
// 2.4 ATR计算(动态止损基础)
atr_value = ta.atr(atr_length)
atr_value := nz(atr_value, ta.sma(ta.tr, atr_length)) // 空值兜底,避免报错
// ———— 3. 多空信号生成(三重条件共振,高胜率核心) ————
// 3.1 多头信号(4个条件同时满足)
var int last_long_bar = 0
long_condition = ta.crossover(macd_line, signal_line) // MACD金叉
and macd_long_trend // 多头趋势
and rsi_long_condition // RSI未超买
and vol_long // 放量上涨
and (bar_index - last_long_bar) >= signal_gap // 间隔过滤
final_long = long_condition
// 3.2 空头信号(4个条件同时满足)
var int last_short_bar = 0
short_condition = ta.crossunder(macd_line, signal_line) // MACD死叉
and macd_short_trend // 空头趋势
and rsi_short_condition // RSI未超卖
and vol_short // 放量下跌
and (bar_index - last_short_bar) >= signal_gap // 间隔过滤
final_short = short_condition
// ———— 4. 动态止盈止损计算(适配30分钟波动,不被洗盘) ————
// 4.1 记录开仓关键数据
var float long_entry = na // 多头入场价
var float short_entry = na // 空头入场价
var float long_entry_low = na // 多头开仓K线低点
var float short_entry_high = na // 空头开仓K线高点
var float entry_atr = na // 开仓时ATR值
// 多头开仓数据记录
if final_long
long_entry := close
long_entry_low := low
entry_atr := atr_value
last_long_bar := bar_index // 更新最后多头信号K线
// 空头开仓数据记录
if final_short
short_entry := close
short_entry_high := high
entry_atr := atr_value
last_short_bar := bar_index // 更新最后空头信号K线
// 4.2 多头止盈止损(双逻辑防护)
long_sl = math.max(long_entry - (entry_atr * atr_sl_multi), long_entry_low * 0.997) // 0.3%缓冲防插针
long_loss = long_entry - long_sl // 止损幅度
long_tp = long_entry + (long_loss * risk_reward) // 1:2风险回报比止盈
// 额外绑定中期压力:前10根K线高点(30分钟周期趋势更稳,周期稍长)
long_resistance = ta.highest(high, 10)[1]
long_tp = math.min(long_tp, long_resistance * 1.003) // 0.3%缓冲防踏空
// 4.3 空头止盈止损(对称逻辑)
short_sl = math.min(short_entry + (entry_atr * atr_sl_multi), short_entry_high * 1.003)
short_loss = short_sl - short_entry
short_tp = short_entry - (short_loss * risk_reward)
// 额外绑定中期支撑:前10根K线低点
short_support = ta.lowest(low, 10)[1]
short_tp = math.max(short_tp, short_support * 0.997)
// ———— 5. 全自动交易执行(严格仓位控制,避免冲突) ————
// 多头开仓:无仓位时执行(避免多空对冲)
if final_long and strategy.position_size == 0
strategy.entry("Long-Position", strategy.long)
strategy.exit("Long-Exit", "Long-Position", stop=long_sl, limit=long_tp) // 自动挂止盈止损
// 空头开仓:无仓位时执行
if final_short and strategy.position_size == 0
strategy.entry("Short-Position", strategy.short)
strategy.exit("Short-Exit", "Short-Position", stop=short_sl, limit=short_tp)
// ———— 6. 可视化与预警(清晰监控,欧易同步提醒) ————
// 6.1 多空信号标记(直观区分)
plotshape(final_long, title="多头信号", location=location.belowbar,
color=color.new(color.green, 0), style=shape.labelup,
text="多", textcolor=color.white, size=size.small)
plotshape(final_short, title="空头信号", location=location.abovebar,
color=color.new(color.red, 0), style=shape.labeldown,
text="空", textcolor=color.white, size=size.small)
// 6.2 止盈止损线(开仓后自动显示,红色止损、绿色止盈)
plot(strategy.position_size > 0 ? long_sl : na, title="多头止损",
color=color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_tp : na, title="多头止盈",
color=color.green, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_sl : na, title="空头止损",
color=color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_tp : na, title="空头止盈",
color=color.green, linewidth=2, style=plot.style_linebr)
// 6.3 副图指标(辅助验证趋势)
// MACD副图
plot(macd_line, title="MACD线", color=color.blue, linewidth=1)
plot(signal_line, title="MACD信号线", color=color.orange, linewidth=1)
barcolor(hist_line > 0 ? color.new(color.green, 60) : color.new(color.red, 60), title="MACD柱")
hline(0, "MACD零轴线", color=color.gray, linestyle=hline.style_dashed)
// RSI副图(显示超买超卖区间)
plot(rsi_value, title="RSI", color=color.purple, linewidth=1, display=display.data_window)
hline(rsi_long_thresh, "多头RSI阈值", color=color.green, linestyle=hline.style_dotted)
hline(rsi_short_thresh, "空头RSI阈值", color=color.red, linestyle=hline.style_dotted)
hline(30, "超卖线", color=color.gray, linestyle=hline.style_dashed)
hline(70, "超买线", color=color.gray, linestyle=hline.style_dashed)
// 6.4 关键预警(欧易同步通知,无需盯盘)
alertCondition(final_long, title="多头开仓提醒",
message="30分钟触发高胜率多头信号,入场价:" + str.tostring(long_entry) + ",止损:" + str.tostring(long_sl))
alertCondition(final_short, title="空头开仓提醒",
message="30分钟触发高胜率空头信号,入场价:" + str.tostring(short_entry) + ",止损:" + str.tostring(short_sl))
alertCondition(strategy.position_size > 0 and close <= long_sl, title="多头止损提醒",
message="多头触及止损位:" + str.tostring(long_sl) + ",已自动平仓")
alertCondition(strategy.position_size > 0 and close >= long_tp, title="多头止盈提醒",
message="多头触及止盈位:" + str.tostring(long_tp) + ",已自动平仓")
alertCondition(strategy.position_size < 0 and close >= short_sl, title="空头止损提醒",
message="空头触及止损位:" + str.tostring(short_sl) + ",已自动平仓")
alertCondition(strategy.position_size < 0 and close <= short_tp, title="空头止盈提醒",
message="空头触及止盈位:" + str.tostring(short_tp) + ",已自动平仓")
Skrip open-source
Dengan semangat TradingView yang sesungguhnya, penulis skrip ini telah menjadikannya sumber terbuka, sehingga para trader dapat meninjau dan memverifikasi fungsinya. Hormat untuk penulisnya! Meskipun anda dapat menggunakannya secara gratis, ingatlah bahwa penerbitan ulang kode tersebut tunduk pada Tata Tertib kami.
Pernyataan Penyangkalan
Informasi dan publikasi tidak dimaksudkan untuk menjadi, dan bukan merupakan saran keuangan, investasi, perdagangan, atau rekomendasi lainnya yang diberikan atau didukung oleh TradingView. Baca selengkapnya di Persyaratan Penggunaan.
Skrip open-source
Dengan semangat TradingView yang sesungguhnya, penulis skrip ini telah menjadikannya sumber terbuka, sehingga para trader dapat meninjau dan memverifikasi fungsinya. Hormat untuk penulisnya! Meskipun anda dapat menggunakannya secara gratis, ingatlah bahwa penerbitan ulang kode tersebut tunduk pada Tata Tertib kami.
Pernyataan Penyangkalan
Informasi dan publikasi tidak dimaksudkan untuk menjadi, dan bukan merupakan saran keuangan, investasi, perdagangan, atau rekomendasi lainnya yang diberikan atau didukung oleh TradingView. Baca selengkapnya di Persyaratan Penggunaan.