
A estratégia usa o princípio de duplo equilíbrio entre as linhas, combinando o indicador ATR com a configuração de um stop loss, auxiliado pelo controle do tempo de negociação, para projetar um conjunto de estratégias adequadas para contratos de futuros de negociação diária. A estratégia é simples, clara e fácil de dominar, adequada para o uso de iniciantes.
A estratégia usa o cruzamento da linha média WMA de 5 períodos e 20 períodos como sinal de entrada. Quando a linha média WMA de 5 períodos quebra a linha média de 20 períodos a partir da direção inferior, faz mais; Quando a linha média WMA de 5 períodos desce a linha média de 20 períodos a partir da direção superior, faz zero.
Além disso, a estratégia também usa o indicador ATR para definir a posição de parada de perda. O indicador ATR pode refletir dinamicamente a amplitude de flutuação do mercado. A estratégia usa o valor do indicador ATR multiplicado por um múltiplo (por exemplo, 3 vezes) para determinar a posição de parada de perda, controlando assim a perda individual.
Finalmente, a estratégia de limitar o sinal de negociação apenas no horário de negociação dos EUA (09:00-14:30 CST). Isso evita a negociação no horário de abertura e fechamento do mercado, pois esses dois períodos são mais voláteis e propensos a falsos sinais.
A estratégia tem as seguintes vantagens:
O uso de cruzamentos de dupla equidistância permite a captura eficaz de pontos de mudança de tendência e a entrada em tempo.
A partir da análise das grandes tendências, filtra-se parte do ruído dos sinais de negociação e evita-se a operação de contracorrente.
Aplicar o indicador ATR para ajustar dinamicamente a posição do stop loss para controlar efetivamente a perda individual.
Limitar o tempo de negociação, evitando oscilações violentas no início e no fim do mercado.
As regras da estratégia são simples, claras, fáceis de entender e de implementar, adequadas para os iniciantes.
Parâmetros personalizáveis, como o período de linha média, o múltiplo ATR, o período de negociação, etc., otimizam a estratégia.
A estratégia também apresenta os seguintes riscos:
Em situações de tremores, pode haver mais danos.
O cruzamento de duas linhas equidistantes terá um certo atraso, podendo perder a brecha de uma linha curta.
A configuração incorreta do parâmetro ATR pode causar um stop loss muito grande ou muito pequeno.
A partir de agora, o blogueiro vai se dedicando exclusivamente aos indicadores técnicos, ignorando as informações básicas.
A variedade e a frequência inadequadas de transações podem afetar a eficácia da estratégia.
Os sistemas de negociação automática correm o risco de serem alvo de arbitragem.
Os parâmetros para diferentes períodos de negociação precisam ser ajustados.
Isso precisa ser melhorado por meio de métodos como otimização de parâmetros, combinação de indicadores e intervenções humanas apropriadas.
A estratégia pode ser otimizada em:
Experimente diferentes sistemas de linha uniforme, como EMA, DMA, etc.
Adicione filtros para outros indicadores técnicos, como MACD, RSI, etc.
Optimizar os parâmetros ATR para tornar o stop loss mais racional.
Buscar pontos de entrada eficientes em combinação com indicadores de volume de transações.
Ajustar os parâmetros de acordo com as características de diferentes variedades.
Combinação de fatores fundamentais para evitar operações contra o mercado.
Adicionar componentes de aprendizagem de máquina, usando redes neurais para modelar dados.
Tente combinar vários ciclos e explorar mais oportunidades de negócios.
Construir um portfólio de estratégias para aumentar a estabilidade.
A estratégia é bastante simples e prática, adequada para os iniciantes. Ao mesmo tempo, há um grande espaço para otimização, que pode ser introduzido mais indicadores técnicos ou métodos de aprendizagem de máquina para aperfeiçoar. Além disso, os parâmetros de ajuste de acordo com as diferentes características da variedade de negociação e do ambiente de mercado também são importantes.
/*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")