
Эта стратегия объединяет концепцию метода торгового кровотечения с фазовым анализом Нико Баккерса, используя движущиеся средние из трех различных периодов для определения направления тренда, чтобы отслеживать тренд и получать прибыль. Делайте больше, когда движущаяся средняя пересекает быструю среднюю и все три движущиеся средние находятся в одном восходящем или нисходящем тренде; сделайте пустоту, когда движущаяся средняя пересекает среднюю и все три движущиеся средние находятся в одном восходящем или нисходящем тренде.
Вычислите три движущихся средних с разными периодами: быстрое движение со средним периодом в 8 дней, среднее движение со средним периодом в 21 день и медленное движение со средним периодом в 55 дней.
Условия входа: сделайте больше, когда быстрое движение проходит через среднее движение, и все три движущиеся средние находятся в тенденции к росту; сделайте пустое, когда быстрое движение проходит через среднее движение, и все три движущиеся средние находятся в тенденции к снижению.
Условия выхода из игры: быстрое перемещение средней скорости в обратном направлении.
Контроль позиции: используется фиксированная позиция, каждый раз, когда открывается позиция, 1 человек. Также можно выбрать возможность корректировки позиции в соответствии с динамикой ATR.
Использование трех скользящих средних помогает определить направление тренда и избежать ложных прорывов.
В этой статье мы рассмотрим три основных метода:
При использовании скользящих средних прибыль стабильна, а отзывы относительно незначительны.
Контролируемая стратегия остановки убытков снижает вероятность крупных потерь.
Это может привести к многократным небольшим убыткам и снижению эффективности прибыли.
В этом случае движущаяся средняя отстает и может пропустить обратную точку.
Фиксированные позиции не позволяют эффективно контролировать риски и могут быть взломаны в случае серьезных рыночных потрясений.
Неправильная оптимизация параметров может привести к слишком частому открытию и закрытию позиций, увеличению торговых сборов и потерей скользящих точек.
Оптимизация циклических параметров движущихся средних, чтобы они соответствовали характеристикам торговой разновидности.
Применение показателя волатильности ATR для динамической корректировки позиций.
Присоединяйтесь к стратегии Stop Loss.
Достоверность тренда в сочетании с показателями объема торгов.
Эта стратегия объединяет традиционные технические аналитические показатели и философию торгового метода “Король”, используя три движущихся средних для отслеживания тенденций, при правильном оптимизации параметров можно получить лучший эффект от прибыли. Однако эта стратегия также сопряжена с определенными рисками, требующими добавления таких мер, как остановка убытков и управление позициями, чтобы контролировать риски, чтобы получить количественную торговую стратегию с долгосрочной стабильной прибылью.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// LOVE JOY PEACE PATIENCE KINDNESS GOODNESS FAITHFULNESS GENTLENESS SELF-CONTROL
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JoshuaMcGowan
//@version=4
// 1. Define strategy settings
strategy(title="Triple Moving Average", overlay=true,
pyramiding=0, initial_capital=1000,
commission_type=strategy.commission.cash_per_order,
commission_value=4, slippage=2)
fastMALen = input(title="Fast MA Length", type=input.integer, defval=8)
medMALen = input(title="Medium MA Length", type=input.integer, defval=21)
slowMALen = input(title="Slow MA Length", type=input.integer, defval=55)
//endMonth = input(title="End Month Backtest", type=input.integer, defval=11)
//endYear = input(title="End Year Backtest", type=input.integer, defval=2019)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 12, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2016, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true
usePosSize = input(title="Use Position Sizing?", type=input.bool, defval=true)
riskPerc = input(title="Risk %", type=input.float, defval=0.5, step=0.25)
// 2. Calculate strategy values
fastMA = sma(close, fastMALen)
medMA = sma(close, medMALen)
slowMA = sma(close, slowMALen)
//Position Sizing
riskEquity = (riskPerc / 100) * strategy.equity
atrCurrency = (atr(20) * syminfo.pointvalue)
posSize = usePosSize ? floor(riskEquity / atrCurrency) : 1
//Backtest Window
//tradeWindow = (time <= timestamp(endYear, endMonth, 1, 0, 0))
// 3. Determine long trading conditions
enterLong = crossover(fastMA, medMA) and
(fastMA > slowMA) and (medMA > slowMA) and
window()
exitLong = crossunder(fastMA, medMA)
// 4. Code short trading conditions
enterShort = crossunder(fastMA, medMA) and
(fastMA < slowMA) and (medMA < slowMA) and
window()
exitShort = crossover(fastMA, medMA)
// 5. Output strategy data
plot(series=fastMA, color=color.green, title="Fast MA")
plot(series=medMA, color=color.purple, title="Medium MA")
plot(series=slowMA, color=color.red, title="Slow MA",
linewidth=2)
bgColour =
enterLong and (strategy.position_size < 1) ? color.green :
enterShort and (strategy.position_size > -1) ? color.red :
exitLong and (strategy.position_size > 0) ? color.lime :
exitShort and (strategy.position_size < 0) ? color.orange :
na
bgcolor(color=bgColour, transp=85)
// 6. Submit entry orders
if (enterLong)
strategy.entry(id="EL", long=true, qty=1)
if (enterShort)
strategy.entry(id="ES", long=false, qty=1)
// 7. Submit exit orders
strategy.close_all(when=exitLong and
(strategy.position_size > 0))
strategy.close_all(when=exitShort and
(strategy.position_size < 0))
strategy.close_all(when=not window())
//END