Các thuật toán chuyển động trung bình đôi Golden Cross tạo ra tín hiệu giao dịch bằng cách tính toán chéo giữa các đường trung bình chuyển động nhanh và chậm. Đường nhanh sử dụng một đường trung bình chuyển động theo hàm số nhân 8 ngày và đường chậm sử dụng một đường trung bình chuyển động theo hàm số nhân của giá thấp nhất trong 8 ngày qua. Khi đường nhanh vượt qua trên đường chậm từ dưới, một tín hiệu mua được tạo ra. Khi đường nhanh vượt qua dưới đường chậm từ trên, một tín hiệu bán được tạo ra.
Ngoài ra, chiến lược bao gồm một cơ chế dừng lỗ. Khi giá tăng hơn 20%, dừng lỗ sẽ được đặt lên 1,2 lần giá nhập khẩu cho vị trí đó. Điều này khóa hầu hết lợi nhuận và tránh mất mát. Nó cũng đảm bảo lợi nhuận tốt cho chiến lược.
Ngoài ra, việc thiết lập stop loss gấp 1,2 lần giá nhập cảnh có thể quá bảo thủ, không thể giữ được toàn bộ xu hướng. Nếu xu hướng tăng tiếp tục, một exit stop loss được kích hoạt có thể thoát sớm và mất thêm lợi nhuận. Các thông số khác nhau nên được thử nghiệm để tìm vị trí stop loss phù hợp hơn.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "Estratégia de Cruzamento das Linhas") // Configuração da Média Móvel emaPeriod = 8 ema= ema(close, emaPeriod) ema1= ema(close[1], emaPeriod) lowestEMA = lowest(ema, 8) // Calcula a diferença entre o preço e a média móvel diff = close - ema diff1 = close[1] - ema1 diffLow = ema - lowestEMA //Condições diffZero = diff < 0 diffUnder = diff < diffLow diffUm = diff > 0 Low0 = diffLow == 0 gain = strategy.position_avg_price*(1+0.2) // Sinais de entrada buy_signal = diffUnder and crossover(diff, diff1) and diffZero sell_signal = diffUm and diffUnder and crossunder(diff, diff1) // Executa as operações de compra/venda if buy_signal strategy.entry("Buy", strategy.long) if sell_signal strategy.exit("Buy", limit = gain) // Plota as linhas plot(0, title="Linha Zero", color=color.gray) plot(diff, title="Diferença", color=color.blue, linewidth=2) plot(diffLow, title="Diferença", color=color.red, linewidth=2)