Chiến lược giao dịch trung bình di chuyển tín hiệu-đối với tiếng ồn dựa trên giao dịch định lượng

Tác giả:ChaoZhang, Ngày: 2024-01-02 12:24:35
Tags:

img

I. Tên của chiến lược

Chiến lược giao dịch trung bình di chuyển tín hiệu-đối với tiếng ồn

II. Tổng quan chiến lược

Chiến lược này thực hiện giao dịch định lượng bằng cách tính tỷ lệ tín hiệu-đồn trong một khoảng thời gian nhất định và kết hợp nó với các tín hiệu giao dịch trung bình động.

  1. Tính toán tỷ lệ tín hiệu-tầm ồn trong một khoảng thời gian nhất định (có thể điều chỉnh)
  2. Áp dụng trung bình động để làm mịn tỷ lệ tín hiệu-tầm ồn
  3. So sánh tỷ lệ tín hiệu/gọi tiếng ồn hiện tại với giá trị trung bình động để tạo ra tín hiệu giao dịch
  4. Long hoặc short dựa trên tín hiệu giao dịch

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

  1. Công thức để tính tỷ lệ tín hiệu-gọi tiếng ồn (StN) là: StN = -10*log ((Σ(1/close) /n), trong đó n là độ dài của thời gian
  2. Áp dụng trung bình di chuyển đơn giản (SMA) cho tỷ lệ tín hiệu-gọi với tiếng ồn để có được StN mịn
  3. So sánh StN hiện tại với SMAStN trơn tru: (1) Nếu SMAStN > StN, đi ngắn (2) Nếu SMAStN < StN, đi dài (3) Nếu không, vị trí gần

IV. Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. StN có thể đánh giá biến động thị trường và rủi ro, SMA có khả năng giảm tiếng ồn
  2. Kết hợp StN để đánh giá rủi ro thị trường và SMA để tạo ra tín hiệu giao dịch sử dụng lợi thế của các chỉ số khác nhau
  3. Các tham số có thể điều chỉnh để thích nghi với các điều kiện thị trường khác nhau
  4. Các tín hiệu Stdout trực tiếp chỉ ra giá dài hoặc ngắn, đánh giá trực quan về đặc điểm thị trường

V. Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Có nguy cơ sai lệch khi đánh giá giữa StN và MA
  2. Cài đặt thời gian không chính xác có thể gây ra tín hiệu sai
  3. Các cơ hội ngắn hạn tương đối ít, tối ưu hóa thông qua điều chỉnh tham số
  4. Các biến động cực đoan do các sự kiện thiên nga đen có thể kích hoạt lệnh dừng lỗ

Giải pháp:

  1. Điều chỉnh các thông số MA để tránh quá mịn
  2. Tối ưu hóa các tham số thời gian và thử nghiệm khả năng thích nghi trong các thị trường khác nhau
  3. Điều chỉnh các điều kiện ngắn để cung cấp nhiều cơ hội ngắn hơn
  4. Thiết lập stop loss để kiểm soát lỗ tối đa

Định hướng tối ưu hóa

Chiến lược có thể được tối ưu hóa theo những cách sau:

  1. Kết hợp thử nghiệm nhiều loại trung bình động hơn
  2. Thêm cơ chế dừng lỗ để kiểm soát rủi ro
  3. Thêm quản lý vị trí, điều chỉnh vị trí dựa trên biến động
  4. Bao gồm nhiều yếu tố để cải thiện sự ổn định
  5. Sử dụng các phương pháp học máy để tự động tối ưu hóa các thông số

VII. Tóm tắt

Chiến lược này thực hiện giao dịch định lượng bằng cách đánh giá rủi ro thị trường thông qua tỷ lệ tín hiệu-gọi tiếng ồn và tạo ra các tín hiệu giao dịch từ đường trung bình động. So với các chỉ số kỹ thuật duy nhất, chiến lược này tích hợp các lợi thế của cả StN và SMA để cải thiện tính ổn định trong khi kiểm soát rủi ro. Với tối ưu hóa tham số và học máy, chiến lược này có tiềm năng cải thiện lớn và là một chiến lược giao dịch định lượng đáng tin cậy và hiệu quả.


/*backtest
start: 2023-12-25 00:00:00
end: 2023-12-29 10:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter 05/01/2021
// The signal-to-noise (S/N) ratio. 
// And Simple Moving Average.
// Thank you for idea BlockchainYahoo
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors. 
////////////////////////////////////////////////////////////
SignalToNoise(length) =>
    StN = 0.0
    for i = 1 to length-1
        StN := StN + (1/close[i])/length
    StN := -10*log(StN)

strategy(title="Backtest Signal To Noise ", shorttitle="StoN", overlay=false)
length = input(title="Days", type=input.integer, defval=21, minval=2)
Smooth =  input(title="Smooth", type=input.integer, defval=7, minval=2)
reverse = input(false, title="Trade reverse")
StN = SignalToNoise(length)
SMAStN = sma(StN, Smooth)
pos = iff(SMAStN[1] > StN[1] , -1,
	   iff(SMAStN[1] < StN[1], 1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )
plot(StN, title='StN' )
plot(SMAStN, title='Smooth', color=#00ff00)

Thêm nữa