本策略是一个基于双均线交叉的趋势跟踪交易系统。通过对比短期和长期移动平均线(分别为9日和21日)的相对位置关系,捕捉市场趋势的转换时机。策略采用经典的技术分析理论,结合现代量化交易方法,实现了全自动化的交易决策过程。
策略核心逻辑基于两条不同周期移动平均线的交叉信号。当短期均线(9日)向上穿越长期均线(21日)时,系统认为市场动能转为向上,触发做多信号;当短期均线向下穿越长期均线时,系统认为市场动能转为向下,平仓结束交易。同时,策略还包含了交易统计功能,可以实时追踪总交易次数、盈利次数和亏损次数,帮助交易者评估策略表现。
这是一个经典而实用的趋势跟踪策略,通过双均线交叉捕捉市场动能变化。虽然存在一定的滞后性和假信号风险,但其简单稳健的特点使其成为量化交易领域的重要工具。通过提议的优化方向,策略的稳定性和盈利能力有望得到进一步提升。
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)
// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)
// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Execute trades
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0
if (strategy.opentrades > 0)
totalTrades := totalTrades + 1
if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
if (strategy.netprofit > 0)
totalWins := totalWins + 1
else
totalLosses := totalLosses + 1
// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
label.delete(tradeStats)
tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)