
Chiến lược này sử dụng lý thuyết sóng giá kết hợp với đường trung bình phẳng để tìm kiếm cơ hội hình thành xu hướng, đặt lệnh dừng hợp lý và theo dõi lệnh dừng để kiểm soát rủi ro để tối đa hóa lợi nhuận. Chiến lược chỉ mở vị trí trong khoảng thời gian giao dịch được chỉ định, tránh biến động thị trường trong một thời gian cụ thể.
Giải quyết rủi ro:
Chiến lược này tích hợp lý thuyết sóng giá với chỉ số đường trung bình phẳng, sau khi tránh các múi giờ giao dịch được chỉ định, xác nhận vào thị trường bằng cách xác định hướng và xu hướng của sóng giá, thiết lập dừng lỗ và theo dõi dừng lỗ để kiểm soát rủi ro, dừng lại khi có tín hiệu đảo ngược. Chiến lược có thể cải thiện sự ổn định và lợi nhuận hơn nữa bằng cách tối ưu hóa tham số và thêm các chỉ số hỗ trợ.
/*backtest
start: 2022-11-12 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("FX Strategy Based on Fractals and SMMA", overlay=true)
// パラメータ
SMMAPeriod1 = input(30, title="SMMA Period")
StopLoss1 = input(7, title="Stop Loss %")
TrailingStopCoef1 = input(2.7, title="Trailing Stop Coefficient")
fractalPeriod = input(5, title="Fractal Period")
// SMMAの計算関数
smma(src, length) =>
var float smma = na
if na(smma[1])
smma := sma(src, length)
else
smma := (smma[1] * (length - 1) + src) / length
smma
// フラクタルの近似
highFractal = high[2] > high[1] and high[2] > high[3] and high[2] > high[4] and high[2] > high
lowFractal = low[2] < low[1] and low[2] < low[3] and low[2] < low[4] and low[2] < low
// エントリー条件
longEntrySignal = lowFractal and close[1] < smma(close, SMMAPeriod1)
shortEntrySignal = highFractal and close[1] > smma(close, SMMAPeriod1)
// エントリー実行
if (longEntrySignal)
strategy.entry("Long", strategy.long)
if (shortEntrySignal)
strategy.entry("Short", strategy.short)
// トレーリングストップの計算
atrValue = atr(10)
longStopPrice = close - atrValue * TrailingStopCoef1
shortStopPrice = close + atrValue * TrailingStopCoef1
// トレーリングストップの設定
strategy.exit("Exit Long", "Long", stop=longStopPrice)
strategy.exit("Exit Short", "Short", stop=shortStopPrice)
// バックテスト期間の設定(MetaTraderのバックテストと同じ期間)
startYear = 2007
startMonth = 05
startDay = 01
endYear = 2022
endMonth = 04
endDay = 01
startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)
// バックテスト期間内でのみトレードを実行
if (time >= startDate and time <= endDate)
if (longEntrySignal)
strategy.entry("Long", strategy.long)
if (shortEntrySignal)
strategy.entry("Short", strategy.short)