Die Strategie ist einfach und direkt und eignet sich für den mittelfristigen Handel.
Die Strategie berechnet die schnellen und langsamen Durchschnittslinien, indem sie Parameter wie die schnelle Durchschnittslinie, die langsame Durchschnittslinie und den Typ der Durchschnittslinie eingibt. Kaufen Sie, wenn die schnelle Durchschnittslinie die langsame Durchschnittslinie durchbricht, und verkaufen Sie, wenn die schnelle Durchschnittslinie die langsame Durchschnittslinie durchbricht.
Die Kernlogik der Strategie lautet:
Eingabeparameter: schnelle durchschnittliche Periode maLen1, langsame durchschnittliche Periode maLen2, durchschnittliche Typ maTypeChoice
Fast-Meanline maValue1 und Slow-Meanline maValue2 berechnet auf Basis der Eingabeparameter
Vergleichen Sie die Größenverhältnisse zwischen zwei Gleichlinien und definieren Sie die Kauf- und Verkaufskonditionen:
Kaufbedingungen: maValue1 mit maValue2
Verkaufsbedingungen: maValue1 unter maValue2
Beim Kauf und Verkauf von Gegenständen, bei denen entsprechende Transaktionen durchgeführt werden
Die Größe der Mittellinie wird visuell dargestellt und in verschiedenen Farben unterteilt
Senden von Kauf- und Verkaufssignalen
Vermeiden Sie, dass Sie von einer einzigen Gleichschwingung irregeführt werden
Die Mittellinienparameter sind anpassbar für unterschiedliche Periodenoperationen
Die Logik ist einfach, unkompliziert und leicht zu verstehen.
Benutzerdefinierte Kauf- und Verkaufssignale, die den Zeitpunkt des Handels in Echtzeit bestimmen
Visualisierung der Kursentwicklung, um einen intuitiven Handelsindikator zu bilden
Die optimale Kombination von Parametern durch Parameteroptimierung
Für die Rückmessung von Optimumparametern oder für den Handel auf der Festplatte
Durchschnittliche Kreuzungen sind leicht zu falschen Signalen und sollten in Kombination mit Trends und Formen beurteilt werden
Bei Binärschwankungen kann es leicht sein, häufige Positionen zu eröffnen, was zu Kostenverlusten führt.
Falsche Parameter können zu häufigen oder unfrequenten Transaktionen führen
Ein unerwartetes Ereignis könnte zu einer dramatischen Situation führen, die nicht aufgehalten werden kann.
Kurzzeitindikatoren können bei einem Durchbruch der Großen Zyklus ausfallen
Es ist nicht automatisch, es muss regelmäßig überwacht werden.
Die Risiken können auf folgende Weise gelöst werden:
Der Trend-Indikator ist ein Trend-Indikator, der den Handel mit Schwankungen verhindert.
In Kombination mit Formalzeichen bestätigt Signalwirksamkeit
Optimierung der Parameter, um die Handelsfrequenz auf ein vernünftiges Niveau zu bringen
Setzen Sie einen Stop-Loss-Haltpunkt, um Einzelschäden zu kontrollieren
Stabilität der Parameter für mehrere Zeiträume überprüfen
Zeit- oder Signalfilter, um falsche Durchbrüche zu vermeiden
Verschiedene Durchschnittsparameter testen, um die optimalen Parameter zu finden
Verschiedene Durchschnittslinien-Typen testen, um die genaueste Durchschnittslinie zu wählen, die ein Signal erzeugt
Der Trend-Indikator ist ein Trend-Indikator, mit dem sich ein Trend-Untrust-Trading vermeiden lässt.
Der richtige Zeitpunkt für den Einstieg wird durch die Kombination von schwankenden Indikatoren bestimmt.
Hinzufügen von Zeit- oder Signalfiltern, um falsche Signale zu reduzieren
Slide-Point-Kontrollen zur Optimierung der Festplatten-Trading-Effekte
Stabilität in mehreren Sorten und mehreren Zyklen
Einzug in die automatische Stop-Loss-Strategie
Technologien wie maschinelles Lernen zur Verbesserung der Rückdaten
Die Doppel-Even-Cross-Strategie ist eine sehr typische Technische Kennziffer-Strategie. Sie nutzt das Prinzip der schnellen und langsamen Gleich-Linien-Kreuzung, um ein Handelssignal zu erzeugen, das durch Parameteroptimierung gute Rückmeldungsergebnisse erzielt. Die Strategie birgt jedoch auch einige Risiken, die mit anderen Technischen Kennzahlen wie Trends, Formen und anderen zu verifizieren sind, um die Fehlsignalrate zu verringern.
/*backtest
start: 2023-10-05 00:00:00
end: 2023-10-05 22:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// © sehweijun
//study( title="Arch1tect's New Toy", shorttitle="Arch1tect's New Toy", overlay=true, resolution="")
// strategy( title="Arch1tect's New Toy (Strategy Tester Version)", shorttitle="Arch1tect's New Toy (Strategy Tester Version)", overlay=true, initial_capital = 100000, commission_value=0.07, commission_type=strategy.commission.cash_per_contract)
maTypeChoice = input( "EMA", title="MA Type", options=["EMA", "WMA", "SMA"] )
maSrc = input( close, title="MA Source" )
maLen1 = input( 15, minval=1, title="MA Length" )
maLen2 = input( 95, minval=1, title="MA Length" )
maValue1 = if ( maTypeChoice == "EMA" )
ema( maSrc, maLen1 )
else if ( maTypeChoice == "WMA" )
wma( maSrc, maLen1 )
else if ( maTypeChoice == "SMA" )
sma( maSrc, maLen1 )
else
0
maValue2 = if ( maTypeChoice == "EMA" )
ema( maSrc, maLen2 )
else if ( maTypeChoice == "WMA" )
wma( maSrc, maLen2 )
else if ( maTypeChoice == "SMA" )
sma( maSrc, maLen2 )
else
0
buySignal = crossover( maValue1, maValue2 )
sellSignal = crossunder( maValue1, maValue2 )
mainMAColour = ( maValue1 > maValue2 ) ? color.green : color.red
plot( maValue1, title="Arch1tect's New Toy", color=mainMAColour, offset=0, linewidth=4 )
//plot( maValue2, title="Arch1tect's Filter", color=color.black, offset=0, linewidth=2 )
var color buyCandleColour = #00ff0a
var color sellCandleColour = #ff1100
barcolor( buySignal ? buyCandleColour : sellSignal ? sellCandleColour : na, title="Signal Bar Colour" )
bgcolor( color=buySignal ? buyCandleColour : sellSignal ? sellCandleColour : na, transp=85, title="Signal Background Colour")
alertcondition( buySignal or sellSignal, title="Signal change!", message="Signal change!")
alertcondition( buySignal, title="Buy signal!", message="Buy signal!")
alertcondition( sellSignal, title="Sell signal!", message="Sell signal!")
// Strategy Tester
stratTesterOn = input( title="Strategy Tester [ON/OFF]", group="Strategy Tester", type=input.bool, defval=true)
entryTime = input( "2200-1200", title = "Daily trading time session (in Exchange GMT)", group="Strategy Tester", type = input.session )
startTime = input( "2200-2201", title = "Start Time", group="Strategy Tester", type = input.session )
maxDailyLoss = input( 2500, title = "Max daily loss", group="Strategy Tester", type = input.integer )
maxTotalDrawdown = input( 12000, title = "Max daily loss", group="Strategy Tester", type = input.integer )
contractSize = input( 1, title = "Contract size", group="Strategy Tester", type = input.integer )
tradeOnStartSess = input( title="First trade on session start [ON/OFF]", group="Strategy Tester", type=input.bool, defval=true)
fixedTPSL = input( title="Fixed TP/SL PIPS [ON/OFF]", group="Strategy Tester", type=input.bool, defval=false)
fixedTPValue = input ( 10.00, minval=0.01, type=input.float, title="TP", group="Strategy Tester" )
fixedSLValue = input ( 10.00, minval=0.01, type=input.float, title="SL", group="Strategy Tester" )
fromDay = input(defval = 1, title = "From Day", group="Date Range", type = input.integer, minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", group="Date Range", type = input.integer, minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", group="Date Range", type = input.integer, minval = 1970)
thruDay = input(defval = 1, title = "Thru Day", group="Date Range", type = input.integer, minval = 1, maxval = 31)
thruMonth = input(defval = 1, title = "Thru Month", group="Date Range", type = input.integer, minval = 1, maxval = 12)
thruYear = input(defval = 2112, title = "Thru Year", group="Date Range", type = input.integer, minval = 1970)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// strategy.risk.max_intraday_loss( maxDailyLoss, strategy.cash )
// strategy.risk.max_drawdown( maxTotalDrawdown, strategy.cash )
isTime(_position) =>
range = time( timeframe.period, _position + ':1234567' )
bgcolor( color=isTime( entryTime ) and stratTesterOn and window() ? color.yellow : na, title="Daily trading time session (in Exchange GMT)", transp=75 )
if ( stratTesterOn and window() )
if ( buySignal and isTime( entryTime ) )
if ( not fixedTPSL )
strategy.close_all()
strategy.entry( "Buy", strategy.long, contractSize )
if ( fixedTPSL and strategy.position_size == 0 )
strategy.entry( "Buy", strategy.long, contractSize )
strategy.exit( "TP/SL", "Buy", stop=close[0]-fixedSLValue, limit=close[0]+fixedTPValue )
if ( sellSignal and isTime( entryTime ))
if ( not fixedTPSL )
strategy.close_all()
strategy.entry( "Sell", strategy.short, contractSize )
if ( fixedTPSL and strategy.position_size == 0 )
strategy.entry( "Sell", strategy.short, contractSize )
strategy.exit( "TP/SL", "Sell", stop=close[0]+fixedSLValue, limit=close[0]-fixedTPValue )
if ( isTime( startTime ) and tradeOnStartSess and strategy.position_size == 0 )
if ( maValue1 > maValue2 )
strategy.entry( "Buy", strategy.long, contractSize )
if ( fixedTPSL )
strategy.exit( "TP/SL", "Buy", stop=close[0]-fixedSLValue, limit=close[0]+fixedTPValue )
else
strategy.entry( "Sell", strategy.short, contractSize )
if ( fixedTPSL )
strategy.exit( "TP/SL", "Sell", stop=close[0]+fixedSLValue, limit=close[0]-fixedTPValue )
strategy.close_all( when=not isTime( entryTime ) )
plot( strategy.equity )