
Thuật toán giao chéo vàng hai đường bằng nhau để đánh giá thời gian mua và bán bằng cách tính toán sự giao chéo của đường nhanh và đường chậm. Trong đó, đường nhanh sử dụng chỉ số di chuyển trung bình 8 ngày, đường chậm sử dụng chỉ số di chuyển trung bình giá thấp nhất trong 8 ngày gần đây. Khi đường nhanh đi qua đường chậm từ phía dưới, nó tạo ra tín hiệu mua; Khi đường nhanh đi qua đường chậm từ phía trên, nó tạo ra tín hiệu bán.
Nguyên tắc cốt lõi của chiến lược này là: đường nhanh đại diện cho xu hướng thay đổi giá gần đây, đường chậm đại diện cho mức giá thấp gần đây. Khi đường nhanh đi qua đường chậm, giá bắt đầu tăng lên, vượt quá giá thấp gần đây, do đó tạo ra tín hiệu mua; khi đường nhanh đi qua đường chậm, giá bắt đầu giảm xuống, thấp hơn giá thấp gần đây, do đó tạo ra tín hiệu bán.
Cụ thể, chiến lược này được thực hiện bằng cách tính trung bình di chuyển chỉ số 8 ngày làm đường nhanh, tính trung bình di chuyển chỉ số của 8 ngày gần đây nhất là đường chậm. Sau đó, tính chênh lệch giữa giá và đường nhanh, và đánh giá xu hướng thay đổi của chênh lệch. Khi chênh lệch bắt đầu trở nên tích cực, giá bắt đầu tăng; khi chênh lệch bắt đầu trở nên tiêu cực, giá bắt đầu giảm.
Điểm mạnh nhất của thuật toán giao chéo vàng hai đường trung bình là ý tưởng chiến lược đơn giản, rõ ràng và dễ hiểu và thực hiện. Việc đánh giá thời gian mua và bán bằng cách giao chéo đường trung bình nhanh và chậm là một phương pháp đã được phát triển và thường được sử dụng trong phân tích kỹ thuật. Chiến lược này sử dụng phương pháp đã được phát triển này, đồng thời được cải tiến, sử dụng kết hợp giao chéo của đường nhanh và đường chậm để tạo ra tín hiệu giao dịch đáng tin cậy hơn.
Ngoài ra, chiến lược này đã thêm vào cơ chế dừng lỗ. Khi giá tăng hơn 20%, vị trí dừng lỗ của vị trí này sẽ được đặt ở mức gấp 1,2 lần giá nhập. Điều này có thể khóa phần lớn lợi nhuận và tránh thua lỗ. Đồng thời cũng đảm bảo lợi nhuận của chiến lược.
Các thuật toán chéo vàng hai đường đều cũng có một số rủi ro. Chiến lược này chỉ dựa trên mối quan hệ giữa giá và đường trung bình di chuyển để quyết định thời gian giao dịch. Nếu giá có biến động bất thường và đường trung bình di chuyển không phản ứng kịp thời, có thể tạo ra tín hiệu giao dịch sai.
Ngoài ra, thiết lập cơ chế dừng lỗ gấp 1,2 lần giá nhập cảnh cũng có thể quá bảo thủ, không thể giữ toàn bộ thị trường. Nếu thị trường tiếp tục tăng, thiết lập dừng lỗ có thể dừng lỗ quá sớm, không thể thu được lợi nhuận lớn hơn. Để làm điều này, cần thử nghiệm các tham số khác nhau để tìm vị trí dừng lỗ phù hợp hơn.
Chiến lược này còn có không gian để tối ưu hóa hơn nữa. Thứ nhất, bạn có thể thử nghiệm các tham số khác nhau, tối ưu hóa các tham số chu kỳ của đường trung bình di chuyển, tìm ra các tham số tốt nhất để tạo ra chất lượng tín hiệu. Thứ hai, bạn có thể thêm các chỉ số dao động, v.v., để tránh tạo ra tín hiệu sai trong giai đoạn dao động giá.
Toàn bộ thuật toán giao chéo vàng hai chiều là một chiến lược giao dịch định lượng rất thực tế. Nó sử dụng các phương pháp phân tích kỹ thuật tiên tiến của giao chéo hai chiều để tạo ra tín hiệu giao dịch, đồng thời cải thiện các tham số và quy tắc.
/*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)