
Chiến lược này dựa trên chỉ số MACD và đường dài và đường dài, thực hiện giao dịch đường dài của cặp tiền tệ. Khi đường MACD đi qua đường dài, bạn sẽ mở vị trí và khi đường MACD đi qua đường ngang, bạn sẽ đặt vị trí. Đồng thời, bạn cũng có thể thiết lập chiến lược dừng lỗ.
Chiến lược này sử dụng đường nhanh và đường chậm của chỉ số MACD. Các tham số đường nhanh là 12 ngày EMA, tham số đường chậm là 26 ngày EMA. Sự chênh lệch giữa hai đường trung bình là biểu đồ trụ MACD. Ngoài ra, tính toán 9 ngày EMA làm đường tín hiệu.
Cụ thể, chiến lược đầu tiên tính toán đường nhanh, đường chậm và đường tín hiệu của MACD. Sau đó, đặt đường dài là -0.04 và đường ngang là 0.015. Nếu MACD hiện tại lớn hơn đường dài, hãy thực hiện thêm; Nếu MACD hiện tại nhỏ hơn đường ngang, hãy thực hiện thêm. Ngoài ra, đặt đường dừng là 95% giá mở vị trí.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có những rủi ro:
Có thể tối ưu hóa và cải thiện bằng cách điều chỉnh các tham số phù hợp, kết hợp các chỉ số khác.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Bạn có thể thử các đường dây nhanh, chậm, tín hiệu với các chiều dài khác nhau để tìm ra sự kết hợp phù hợp nhất.
Các chỉ số như RSI, KD có thể mang lại hiệu quả khác nhau
Có thể tìm các tham số long position phù hợp hơn bằng cách lặp lại dữ liệu.
Bạn có thể xem xét các phương pháp như trailing stop để dừng lỗ theo dõi động hơn.
Sử dụng chiến lược này cho các cặp tiền tệ khác để xem xét hiệu quả
Chiến lược này nói chung là một chiến lược giao dịch đường dài rất đơn giản và trực quan. Sử dụng chỉ số MACD để đánh giá tình hình, và đặt điều kiện lọc kép để giảm giao dịch sai. Đồng thời, thiết lập dừng lỗ để kiểm soát rủi ro. Chiến lược có logic rõ ràng, sử dụng ít tài nguyên, dễ hiểu và thực hiện, đáng được đề xuất.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY MACD")
fastMA = input(title="Fast moving average", defval = 12, minval = 7)
slowMA = input(title="Slow moving average", defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)
//MACD
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD
//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.04)
linesell = input(title="Close Long", type=float, defval=0.015)
//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)
//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100
//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)
//Order Entries
strategy.entry("long", strategy.long, when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)