Chiến lược động lượng đơn giản dựa trên SMA, EMA và khối lượng


Ngày tạo: 2023-12-08 11:15:30 sửa đổi lần cuối: 2023-12-08 11:15:30
sao chép: 8 Số nhấp chuột: 709
1
tập trung vào
1621
Người theo dõi

Chiến lược động lượng đơn giản dựa trên SMA, EMA và khối lượng

Tổng quan

Chiến lược này là một chiến lược động lực trong ngày đơn giản không vô hiệu. Nó sử dụng SMA, EMA và chỉ số khối lượng giao dịch để cố gắng vào thị trường vào thời điểm tốt nhất.

Nguyên tắc chiến lược

Einty giao dịch của chiến lược này tạo ra tín hiệu logic là: đáp ứng chỉ số SMA cao hơn chỉ số EMA và 3 đường K liên tiếp hoặc 4 đường K liên tiếp tạo ra xu hướng lên và giá thấp nhất của đường K giữa cao hơn giá mở đầu của đường K lên cùng một lúc tạo ra tín hiệu Entry.

Hình thức tạo ra tín hiệu Exit là: Hình thức tạo ra tín hiệu Exit khi chỉ số SMA đi qua dấu hiệu EMA.

Chiến lược này chỉ làm nhiều đầu, không làm đầu trống. Lịch lý nhập và thoát của nó có khả năng nhận diện xu hướng tăng liên tục.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Lập luận của chiến lược đơn giản, dễ hiểu và dễ thực hiện.

  2. Sử dụng các chỉ số kỹ thuật phổ biến như SMA, EMA và khối lượng giao dịch, điều chỉnh các tham số một cách linh hoạt;

  3. Có khả năng nhận ra xu hướng tăng giá liên tục, có thể nắm bắt một số cơ hội trong xu hướng.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Không thể xác định được thị trường đang giảm hoặc sắp xếp lại, có thể dẫn đến sự rút lui lớn hơn;

  2. Không thể tận dụng các cơ hội rỗng tuếch, không thể chống lại xu hướng suy thoái, và có thể bỏ lỡ cơ hội kiếm lợi nhuận tốt hơn;

  3. Chỉ số giao dịch không hiệu quả với dữ liệu tần số cao, cần điều chỉnh tham số;

  4. Bạn có thể sử dụng Stop Loss để kiểm soát rủi ro.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tăng cơ hội giao dịch không đầu, thực hiện giao dịch hai chiều nhiều đầu, tận dụng các xu hướng suy thoái để đánh giá;

  2. Sử dụng các chỉ số tiên tiến hơn như MACD, RSI và các chiến lược kết hợp để đánh giá xu hướng;

  3. Tối ưu hóa logic dừng lỗ, giảm rủi ro rút tiền;

  4. Điều chỉnh tham số, thử nghiệm dữ liệu trong các chu kỳ khác nhau, tìm kiếm sự kết hợp tham số tốt nhất.

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng rất đơn giản, đánh giá thời gian vào thị trường thông qua các chỉ số SMA, EMA và khối lượng giao dịch. Ưu điểm của nó là đơn giản và dễ thực hiện, phù hợp với việc học nhập, nhưng không thể nhận ra xu hướng cân bằng và giảm, có một số rủi ro. Có thể cải thiện bằng cách giới thiệu các phương tiện như đầu không, tối ưu hóa chỉ số và dừng lỗ.

Mã nguồn chiến lược
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © slip_stream

//@version=4

// Simple strategy for riding the momentum and optimising the timings of truer/longer price moves upwards for an long posistions on a daily basis (can be used, but with less effect
// on other time frames. Volume settings would have to be adjusted by the user accordingly. (short positions are not used).
// This strategy has default settings of a short(er) SMA of 10, a long(er) EMA of 20, and Volume trigger of 10 units and above. All these settings can be changed by the user
// using the GUI settings and not having to change the script.

// The strategy will only open a long position when there is a clear indication that price momentum is upwards through the SMA moving and remaining above the EMA (mandatory) and price period indicators
// of either 1) a standard 3 bar movement upwards, 2) a standard but "aggressive" 3 or 4 bar play where the low of the middle resting bars can be equal to or higher than (i.e. not
// the more standard low of about half) of the opening of the ignition bar. The "aggression" of the 3/4 bar play was done in order to counteract the conservatisme of having a mandatory
// SMA remaining higher than the EMA (this would have to be changed in the script by the user if they want to optimise to their own specifications. However, be warned, all programmatic
// settings for the maximum acceptable low of the middle resting bars runs a risk of ignoring good entry points due to the low being minutely e.g. 0.01%, lower than the user defined setting)


strategy(title = "Simple Momentum Strategy Based on SMA, EMA and Volume", overlay = true, pyramiding = 1, initial_capital = 100000, currency = currency.USD)


// Obtain inputs
sma_length = input(defval = 10, minval=1, type = input.integer, title = "SMA (small length)")
ema_length = input(defval = 20,minval=1, type = input.integer, title = "EMA (large length)")
volume_trigger = input(defval = 10, title = "Volume Trigger", type = input.integer)
sma_line = sma(close, sma_length)
ema_line = ema(close, ema_length)


// plot SMA and EMA lines with a cross for when they intersect
plot(sma_line, color = #8b0000, title = "SMA")
plot(ema_line, color = #e3d024, title = "EMA")
plot(cross(sma_line, ema_line) ? sma_line : na, style = plot.style_cross, linewidth = 4, color = color.white)


// Create variables
// variables to check if trade should be entered
//three consecutive bar bar moves upwards and volume of at least one bar is more than 10
enter_trade_3_bar_up = sma_line > ema_line and close[1] >= close [2] and close[3] >= close[4] and close[2] >= close[3] and (volume[1] >= volume_trigger or volume[2] >= volume_trigger or volume[3] >= volume_trigger)
// aggressive three bar play that ensures the low of the middle bar is equal to or greater than the open of the instigator bar. Volume is not taken into consideration (i.e. aggressive/risky)
enter_3_bar_play = sma_line > ema_line and close[1] > close[3] and low[2] >= open[3]
// aggressive four bar play similar to the 3 bar play above
enter_4_bar_play = sma_line > ema_line and close[1] > close[4] and low[2] >= open[4]
trade_entry_criteria = enter_trade_3_bar_up or enter_3_bar_play or enter_4_bar_play // has one of the trade entry criterias returned true?

// exit criteria for the trade: when the sma line goes under the ema line
trade_exit_criteria = crossunder (sma_line, ema_line)


if (year >= 2019)
    strategy.entry(id = "long", long = true, qty = 1, when = trade_entry_criteria)
    strategy.close(id = "long", when = trade_exit_criteria, qty = 1)
    // for when you want to brute force close all open positions: strategy.close_all (when = trade_exit_criteria)