
Эта стратегия использует принцип бинарного скрещивания, в сочетании с ATR-индикатором, устанавливающим стоп-стоп, дополненный контролем времени торговли, чтобы разработать набор стратегий, подходящих для контрактов на будущие дни. Стратегия проста, понятна и подходит для начинающих.
В качестве входного сигнала стратегия использует пересечение 5-циклической и 20-циклической средних линий WMA. Когда 5-циклическая линия прорывает 20-циклическую линию с нижнего направления, делают больше; когда 5-циклическая линия падает с верхнего направления до 20-циклической линии, делают пустоту. В то же время стратегия также использует 50-циклическую среднюю линию WMA для определения направления тенденции.
Кроме того, стратегия также использует показатель ATR для установления стоп-стоп-позиции. ATR может динамически отражать колебания рынка. Стратегия определяет стоп-стоп-позицию, умножая значение показателя ATR на кратное число (например, в 3 раза), чтобы контролировать одиночные потери.
Наконец, стратегия ограничивает только в американском торговом времени ((9:00-14:30 CST) для запуска торговых сигналов. Это позволяет избежать торговли во время открытия и закрытия рынка, поскольку эти два периода времени имеют большую волатильность, что может привести к созданию ложных сигналов.
Эта стратегия имеет следующие преимущества:
Используя двойную равномерную скрещивание, можно эффективно улавливать переломные моменты тренда, вовремя вступая в игру.
Используйте большую тенденцию, чтобы отфильтровать некоторые сигналы торговли шумом, чтобы избежать противоположных операций.
Применение ATR-показателя для динамического регулирования стоп-стоп-позиции эффективно контролирует одиночные потери.
Ограничьте время торговли, чтобы избежать резких колебаний во время открытия и закрытия рынка.
Правила стратегии простые, понятные, легко понятные и реализуемые, подходящие для начинающих.
Настраиваемые параметры, такие как среднелинейный цикл, ATR-множитель, время торговли и т. д., оптимизируют стратегию.
Также существуют следующие риски:
В результате землетрясения может произойти большее количество повреждений.
Двойная равномерная пересека будет иметь некоторую задержку и может пропустить прорыв короткой линии.
Неправильная настройка параметров ATR может привести к слишком большим или слишком малым стоп-лошам.
Я думаю, что это не так, потому что я не могу сказать, что это не так, потому что это не так.
Недостаточный тип и неправильная периодичность торгов могут повлиять на эффективность стратегии.
Есть риск, что механические торговые системы будут использоваться для арбитража.
Параметры для различных периодов торговли требуют корректировки.
Это требует улучшения с помощью методов оптимизации параметров, комбинации показателей, а также надлежащего человеческого вмешательства.
Эта стратегия может быть оптимизирована в следующих аспектах:
Попробуйте различные системы сплошной линии, такие как EMA, DMA и т.д.
Добавить фильтры для других технических показателей, таких как MACD, RSI и т. д.
Оптимизация параметров ATR, чтобы сделать стоп-стоп более рациональным.
Поиск эффективных входных точек в сочетании с показателями объема торгов.
Параметры корректируются в зависимости от особенностей разных сортов.
В сочетании с основными факторами, чтобы избежать антирыночной операции.
Добавление компонентов машинного обучения, моделирование данных с использованием нейронных сетей.
Попробуйте объединить несколько циклов, чтобы найти больше возможностей для торговли.
Создание портфеля стратегий для повышения стабильности.
В целом, эта стратегия является простой и универсальной, подходящей для практических упражнений для начинающих. В то же время, остается большой простор для оптимизации, можно ввести больше технических показателей или методов машинного обучения для совершенствования. Кроме того, параметры для корректировки в соответствии с различными характеристиками торговых сортов и рыночной средой также важны.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
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/
// © james4392010
//@version=4
strategy(title="DayTradingFutures Cross-Strategy", overlay=true)
// === GENERAL INPUTS ===
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
//highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
wmaFastSource = input(defval = close, title = "Fast WMA Source")
wmaFastLength = input(defval = 5, title = "Fast WMA Period")
wmaSlowSource = input(defval = close, title = "Slow WMA Source")
wmaSlowLength = input(defval = 20, title = "Slow WMA Period")
wmaDirectionSource = input(defval = close, title = "Trend 50 Period Source")
wmaDirectionLength = input(defval = 50, title = "Trend 50 Period")
timeinrange(res, sess) => time(res, sess) != 0
// === SERIES SETUP ===
/// a couple of ma's..
wmaFast = wma(close, 5)
wmaSlow = wma(close, 20)
wmaDirection = wma(close, 50)
// === PLOTTING ===
fast = plot(series=wmaFast, color=color.white, linewidth=2)
slow = plot(series=wmaSlow, color=color.yellow, linewidth=2)
direction = plot(series=wmaDirection, color=color.red, linewidth=2)
// === INPUT BACKTEST RANGE ===
//fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
//fromYear = input(defval = 2022, title = "From Year", minval = 2022)
// To Date Inputs
//toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//toYear = input(defval = 2022, title = "To Year", minval = 2022)
//startDate = timestamp(fromYear, fromMonth, fromDay)
//finishDate = timestamp(toYear, toMonth, toDay)
//inDateRange= (time >= fromDay, fromMonth, fromYear and time <= toDay, toMonth, toYear)
// === FUNCTION EXAMPLE ===
//inDateRange = (time >= fromDay, fromMonth, fromYear) and (time <= toDay, toMonth, toYear)
// === LOGIC ===
enterLong = crossover(wmaFast, wmaSlow) and close > wmaDirection and timeinrange(timeframe.period, "0900-1430")
enterShort = crossunder(wmaFast, wmaSlow) and close < wmaDirection and timeinrange(timeframe.period, "0900-1430")
//trend := nz(trend[1], trend)
//trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
//upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = enterLong
//plotshape(enterLong ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(enterLong and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
//dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = enterShort
//plotshape(enterShort ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(enterShort and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
//mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
//longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
//shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
//fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
//fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="Buy", message="Buy!")
alertcondition(sellSignal, title="Sell", message="Sell!")
//changeCond = trend != trend[1]
//alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")
// Entry for strategy //
//tp=input(25,title="TakeProfit")
//sl=input(40,title="StopLoss")
strategy.entry("Long",1, when=buySignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)
strategy.entry("Short",1, when=sellSignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)
//strategy.exit("Exit", wmaFastwmaSlow)
//Buy and Sell Signals
//strategy.close_all(when =not timeinrange(timeframe.period, "1000-1430"))
// === FILL ====
fill (fast, slow, color = wmaSlow > wmaDirection ? color.green : color.red)
//fill(when=enterLong, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterLong, sl, color = color.new(color.red, 90), title = "Loss area")
//fill(when=enterShort, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterShort, sl, color = color.new(color.red, 90), title = "Loss area")