
이 시스템은 9주기 및 21주기 지수 이동 평균 ((EMA) 을 핵심 지표로 사용하여 두 개의 평행선의 교차 신호를 포착하여 거래를 수행합니다. 이 시스템은 스톱 스톱 손실 관리를 통합하고 시각적 인터페이스 지원을 제공하며 거래 신호와 중요한 가격 수준을 직관적으로 표시합니다.
전략은 빠른 EMA ((9주기) 와 느린 EMA ((21주기) 를 사용하여 거래 시스템을 구축한다. 빠른 EMA가 느린 EMA를 상향으로 통과하면, 시스템은 다중 신호를 발생시킨다. 빠른 EMA가 느린 EMA를 상향으로 통과하면, 시스템은 공백 신호를 발생시킨다. 시스템은 매번 포지션을 개시할 때, 기본 설정된 스톱 손실 비율에 따라 자동으로 스톱 손실 가격을 설정한다. 거래 실행은 백분율 포지션 관리 방식을 채택하고, 기본으로 계정 자금 100%를 사용하여 거래한다.
이것은 합리적이고, 논리적으로 명확하게 설계된 일률적 교차 전략 시스템이다. 이 전략은 EMA 교차 신호와 위험 관리 메커니즘을 종합적으로 사용함으로써 트렌드 시장에서 수익을 얻을 수 있다. 일부 고유한 위험이 존재하지만, 제안된 최적화 방향은 전략의 안정성과 신뢰성을 더욱 향상시킬 수 있다. 이 전략은 중·장기 경향을 추적하는 데 특히 적합하며, 인내심이있는 거래자에게는 좋은 선택이다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//
// ██╗ █████╗ ██████╗ ██████╗ ██╗ ██╗ ██╗
// ██║ ██╔══██╗ ██╔═══██╗ ██╔══██╗ ██║ ██║ ██║
// ██║ ███████║ ██║ ██║ ██║ ██║ ██║ ██║ ██║
// ██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║ ██║ ██║
// ███████╗ ██║ ██║ ╚██████╔╝ ██████╔╝ ╚██████╔╝ ██║
// ╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
//
// BTC-EMA做多策略(5分钟确认版) - 作者:LAODUI
// 版本:2.0
// 最后更新:2024
// ═══════════════════════════════════════════════════════════════════════════
strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 添加策略参数设置
var showLabels = input.bool(true, "显示标签", group="显示设置")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1, group="风险管理")
var takeProfitPercent = input.float(10.0, "止盈百分比", step=0.1, group="风险管理")
// EMA参数设置
var emaFastLength = input.int(9, "快速EMA周期", minval=1, maxval=200, group="EMA设置")
var emaSlowLength = input.int(21, "慢速EMA周期", minval=1, maxval=200, group="EMA设置")
// 计算EMA
ema_fast = ta.ema(close, emaFastLength)
ema_slow = ta.ema(close, emaSlowLength)
// 绘制EMA线
plot(ema_fast, "快速EMA", color=color.blue, linewidth=2)
plot(ema_slow, "慢速EMA", color=color.red, linewidth=2)
// 检测交叉
crossOver = ta.crossover(ema_fast, ema_slow)
crossUnder = ta.crossunder(ema_fast, ema_slow)
// 格式化时间显示 (UTC+8)
utc8Time = time + 8 * 60 * 60 * 1000
timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time)
// 计算止损止盈价格
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100)
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100)
// 交易逻辑
if crossOver
if strategy.position_size < 0
strategy.close("做空")
strategy.entry("做多", strategy.long)
if showLabels
label.new(bar_index, high, text="做多入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(longStopLoss) + "\n止盈价: " + str.tostring(longTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar)
if crossUnder
if strategy.position_size > 0
strategy.close("做多")
strategy.entry("做空", strategy.short)
if showLabels
label.new(bar_index, low, text="做空入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(shortStopLoss) + "\n止盈价: " + str.tostring(shortTakeProfit), color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar)
// 设置止损止盈
if strategy.position_size > 0 // 多仓止损止盈
strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit)
if strategy.position_size < 0 // 空仓止损止盈
strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit)