
Die Strategie nutzt die Theorie der Preiswellen in Kombination mit einem gleitenden Durchschnitt, um nach Möglichkeiten zu suchen, Trends zu bilden, vernünftige Stop-Losses zu setzen und Stop-Losses zu verfolgen, um das Risiko zu kontrollieren, um die Gewinne zu maximieren. Die Strategie eröffnet nur Positionen in den angegebenen Handelszeiten und vermeidet Marktschwankungen zu bestimmten Zeiten.
Risikolösung:
Diese Strategie integriert die Theorie der Preiswellen mit den Pivot-Average-Indikatoren, um das Risiko zu kontrollieren, indem die Richtung der Preiswellen und die Trendbestätigung beurteilt werden, die Stop-Loss-Einstellung und die Verfolgung von Stop-Loss-Einträgen nach der Umgehung der festgelegten Handelszeitzone, und die Strategie kann die Stabilität und die Ertragsrate durch Parameteroptimierung und das Hinzufügen von Hilfsindikatoren weiter verbessern.
/*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)