
Die Strategie nutzt das Prinzip der doppelten Gleichgewichtskreuzung und kombiniert die ATR-Anzeige mit der Einstellung der Stop-Loss-Sperre, die mit der Handelszeitkontrolle unterstützt wird, um eine Strategie zu entwickeln, die für den Tageshandel mit Futures-Kontrakten geeignet ist. Die Strategie ist einfach und leicht zu verstehen und für Anfänger geeignet.
Die Strategie verwendet die Kreuzung der WMA-Gehaltslinie zwischen 5 und 20 Perioden als Einstiegssignal. Wenn die 5-Perioden-Linie die 20-Perioden-Linie von unten durchbricht, macht man einen Plus; wenn die 5-Perioden-Linie von oben unter die 20-Perioden-Linie fällt, macht man einen Minus.
Die Strategie verwendet auch den ATR-Indikator, um die Stop-Loss-Position festzulegen. Der ATR-Indikator spiegelt dynamisch die Marktfluktuation wider. Die Strategie verwendet den Wert des ATR-Indikators, um den Stop-Loss-Stand mit einer Multiplikation (z. B. 3x) zu ermitteln, um den Einzelschaden zu kontrollieren.
Schließlich ist es eine Strategie, nur in den US-Handelszeiten (09.00-14.30 CST) ein Handelssignal auszulösen. Dies vermeidet den Handel in den Öffnungs- und Schlusszeiten, da diese beiden Zeiten sehr volatil sind und leicht zu falschen Signalen führen.
Diese Strategie hat folgende Vorteile:
Die Verwendung von doppelter Gleichschleife ermöglicht die effektive Erfassung von Trendwendepunkten und die rechtzeitige Eintritt.
Der Trend kann mit Hilfe von Trends beurteilt werden, um einige von ihnen zu filtern, um Gegenbewegungen zu vermeiden.
Die Anwendung von ATR-Indikatoren zur dynamischen Anpassung der Stop-Loss-Position zur effektiven Kontrolle von Einzelschäden.
Es ist wichtig, die Handelszeiten zu begrenzen, um starke Schwankungen beim Öffnen und Schließen der Märkte zu vermeiden.
Die Strategie ist einfach, klar, leicht zu verstehen und zu implementieren und für Anfänger geeignet.
Optimierung der Strategie durch benutzerdefinierte Parameter wie Durchschnitts-Perioden, ATR-Multiplikatoren, Handelszeiten usw.
Die Strategie birgt auch folgende Risiken:
In den meisten Fällen sind die Schäden durch Erschütterungen und Erschütterungen des Erdbebens zu spüren.
Bei einer doppelten Gleichschluss-Kreuzung kann es zu einer Verzögerung kommen, und es kann sein, dass man einen Durchbruch der Kurzschlusslinie verpasst.
Die falsche Einstellung der ATR-Parameter kann zu einem zu hohen oder zu niedrigen Stop-Loss führen.
Es ist nicht möglich, dass die Menschen, die sich auf die technischen Kennzahlen verlassen, die grundlegenden Informationen ignorieren.
Unpassende Handelsarten und -perioden beeinträchtigen die Strategie.
Es besteht die Gefahr, dass automatische Handelssysteme eingesetzt werden.
Die Parameter für verschiedene Handelszeiten müssen angepasst werden.
Dies erfordert Verbesserungen durch Parameteroptimierung, Kennzahlenkombinationen und geeignete manuelle Interventionen.
Diese Strategie kann optimiert werden durch:
Versuchen Sie mit verschiedenen Gleichgewichtssystemen wie EMA, DMA usw.
Hinzufügen von Filtern für andere technische Indikatoren wie MACD, RSI usw.
Optimierung der ATR-Parameter, um die Stop-Loss-Stopp-Richtlinie zu optimieren.
In Kombination mit dem Handelsvolumen-Indikator wird ein effizienter Einstiegspunkt gefunden.
Anpassung der Parameter an die Eigenschaften der verschiedenen Sorten.
Es ist wichtig, die Grundlagen zu berücksichtigen, um eine marktwidrige Vorgehensweise zu vermeiden.
Die Daten werden mit Hilfe von Neural Networks für die Modellierung von Daten erfasst.
Versuchen Sie, mehrere Zyklen zu kombinieren, um mehr Handelsmöglichkeiten zu entdecken.
Das Projekt wurde von der Regierung der Vereinigten Staaten von Amerika unterstützt.
Diese Strategie ist insgesamt relativ einfach und allgemein und eignet sich für Anfänger, die praktisch mit ihr arbeiten. Es bleibt jedoch viel Optimierungsraum, um weitere technische Indikatoren oder Methoden des maschinellen Lernens einzuführen. Darüber hinaus ist die Anpassung der Parameter an die Eigenschaften der verschiedenen Handelsvarianten und die Marktumgebung von entscheidender Bedeutung.
/*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")