
Il s’agit d’un système de stratégie de trading automatisé basé sur des croisements bi-égalines. Le système utilise une moyenne mobile indicielle de 9 cycles et 21 cycles (EMA) comme indicateur central pour effectuer des transactions en capturant les signaux de croisement de deux lignes d’égalines. Le système intègre une gestion stop-loss, tout en offrant une interface visuelle capable d’afficher visuellement les signaux de négociation et les niveaux de prix critiques.
La stratégie consiste à construire un système de négociation en utilisant des EMA rapides ((9 cycles) et des EMA lents ((21 cycles)). Lorsque les EMA rapides traversent les EMA lents vers le haut, le système génère un signal de multiplication; lorsque les EMA rapides traversent les EMA lents vers le bas, le système génère un signal de rupture.
Il s’agit d’un système de stratégie de croisement linéaire uniformément conçu, rationnel et logiquement clair. Grâce à l’utilisation intégrée des signaux de croisement EMA et des mécanismes de gestion des risques, la stratégie est capable de tirer profit des marchés tendanciels. Bien qu’il existe des risques inhérents, la stabilité et la fiabilité de la stratégie peuvent être encore améliorées par l’orientation optimisée proposée.
/*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)