Chiến lược này thuộc loại chiến lược scalping, nhằm mục đích mở và đóng các vị trí thường xuyên để kiếm lợi nhuận từ lợi nhuận nhỏ trong khi hạn chế rủi ro giảm. Nó xác định các điểm đảo ngược tiềm năng với đường trung bình động để đi dài, và đặt mục tiêu lợi nhuận chặt chẽ để khóa lợi nhuận nhỏ.
Chiến lược sử dụng 4 đường trung bình động - 9, 50, 100 và 200 thời gian.
Các quy tắc giao dịch cụ thể là:
Sự kết hợp này xác định các tình huống khi giá đang trong xu hướng giảm ngắn hạn nhưng có thể xảy ra sự đảo ngược.
Quy tắc thoát là khi 9 MA vượt quá 200 MA. Một mục tiêu gần lợi nhuận được sử dụng để khóa trong lợi nhuận nhỏ thường xuyên cho lợi nhuận ổn định.
Các rủi ro có thể được giảm bằng cách:
Chiến lược có thể được cải thiện bằng cách:
Tối ưu hóa các kết hợp MA
Kiểm tra nhiều thời gian MA hơn để phát hiện đảo ngược tốt hơn.
Mức lợi nhuận mở rộng
Cho phép khoảng cách TP rộng hơn cho lợi nhuận xu hướng nhiều hơn.
Thêm các chỉ số khác
Như KDJ, MACD để xác nhận để giảm các giao dịch không hợp lệ.
Tối ưu hóa kích thước vị trí
Các vị trí kích thước động dựa trên TP và SL cụ thể.
Thêm các quy tắc nhập cảnh trở lại
Xem xét tái nhập sau TP nếu xu hướng tiếp tục.
Chiến lược scalping này xác định các sự đảo ngược ngắn hạn tiềm năng với sự kết hợp MA cho lợi nhuận nhỏ thường xuyên. Điều này có hiệu quả kiểm soát tổn thất và rủi ro đơn lẻ, làm cho nó phù hợp với sự tăng trưởng tài khoản nhỏ. Tuy nhiên, có những hạn chế như phạm vi lợi nhuận nhỏ và giao dịch quá mức.
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy(shorttitle='Moving Average Scalper (by Coinrule)',title='Moving Average Scalper', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 10, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2019, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" //MA inputs and calculations movingaverage_signal = sma(close, input(9)) movingaverage_fast = sma(close, input(50)) movingaverage_slow = sma(close, input(200)) movingaverage_mid= sma(close, input(100)) //Entry bullish = crossover(movingaverage_signal, movingaverage_fast) strategy.entry(id="long", long = true, when = bullish and movingaverage_fast < movingaverage_mid and movingaverage_mid < movingaverage_slow and window()) //Exit bearish = crossover(movingaverage_signal, movingaverage_slow) Stop_loss= ((input (2))/100) Take_profit= ((input (8))/100) longStopPrice = strategy.position_avg_price * (1 - Stop_loss) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = bearish) // close < longStopPrice or close > longTakeProfit and window()) //PLOT plot(movingaverage_signal, color=color.black, linewidth=2 ) plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=2) plot(movingaverage_mid, color=color.blue, linewidth=2)