Die effiziente Quant-Handelsstrategie kombiniert

Schriftsteller:ChaoZhang, Datum: 2024-02-01 15:09:06
Tags:

img

Übersicht

Diese Strategie kombiniert hauptsächlich den 5-tägigen RSI-Indikator und den 200-tägigen gleitenden Durchschnitt, um Handelsentscheidungssignale zu bilden, die zur Kombinationsstrategie der technischen Indikatoren gehören. Ihr Haupthandelsprinzip lautet: Wenn der Preis zum Überkauf-/Überverkauft-Bereich rennt, signalisiert er zu verkaufen; wenn der Preis in den Überverkaufsbereich fällt, signalisiert er zu kaufen. Der größte Vorteil dieser Strategie besteht darin, dass das Strategiesignal relativ klar ist und das Rückkaufrisiko relativ gering ist. Es gibt jedoch auch Einschränkungen bei der Bildung von Handelsentscheidungen, die ausschließlich auf einer einzigen Kombination technischer Indikatoren basieren, die durch Multifaktormodelle und Machine-Learning-Algorithmen optimiert werden können.

Strategieprinzip

Diese Strategie kombiniert hauptsächlich den 5-tägigen RSI-Indikator und den 200-tägigen gleitenden Durchschnitt, um das Überkauf-/Überverkaufsgebiet zu beurteilen, in dem die Preise laufen, und bildet Handelsentscheidungen:

  1. Der 5-Tage-RSI-Indikator beurteilt den überkauften/überverkauften Bereich, in dem die Preise laufen. Die überkaufte Linie ist auf 72 und der überverkaufte Bereich ist 30. Wenn der RSI-Indikator von unten nach oben durch 30 bricht, wird ein Kaufsignal generiert; wenn der RSI-Indikator von oben nach unten unter 72 fällt, wird ein Verkaufssignal generiert.

  2. Der 200-tägige gleitende Durchschnitt bestimmt die Richtung des mittelfristigen bis langfristigen Trends. Wenn der Preis unter dem 200-tägigen gleitenden Durchschnitt liegt, ist dies eine Abwärtstunde des Preises; wenn der Preis über dem 200-tägigen gleitenden Durchschnitt liegt, ist dies eine Aufwärtstunde des Preises.

  3. Diese Strategie kombiniert 1 und 2 Urteil, verkauft aus, wenn der 5-Tage-RSI-Indikator überkauft ist und unter 72 fällt, und kauft ein, wenn der 5-Tage-RSI unter 30 fällt und der Preis unter dem 200-Tage- gleitenden Durchschnitt liegt.

Vorteile der Strategie

  1. Das Strategiesignal ist relativ klar, da der RSI-Indikator verwendet wird, um das Überkauf-/Überverkaufssignal nach dem Beurteilungsbereich zu bestimmen.

  2. Der gleitende 200-Tage-Durchschnitt bestimmt die Richtung des Haupttrends, um gegenteilige Operationen zu vermeiden.

  3. Die maximale Anzahl der Positionen kann festgelegt werden, um Risiken zu kontrollieren.

  4. Die Strategie bietet einen großen Raum für die Optimierung von Parametern, einstellbare RSI-Parameter und gleitende Durchschnittsparameter.

  5. Das relativ geringe Retracement-Risiko kann die maximale Retracement-Rate der Strategie wirksam kontrollieren.

Risiken der Strategie

  1. Bei Verwendung nur von RSI- und gleitenden Durchschnittsindikatoren kann das Strategiesignal instabil sein, mit dem Risiko von langen und kurzen Schüttelverlusten in volatilen Märkten.

  2. Es müssen RSI-Parameter und gleitende Durchschnittsparameter für bessere Strategieergebnisse optimiert und getestet werden.

  3. Es können andere Indikatoren oder Modelle eingeführt werden, um das Strategiesignal zu optimieren, wie beispielsweise Volatilitätsindikatoren, maschinelles Lernen usw.

Richtungen für die Optimierung der Strategie

  1. Verwenden Sie mehr Indikatorenkombinationen zum Beurteilen, wie MACD, KD, Volatilitätsindikatoren usw.

  2. Erhöhung der Beurteilungen durch maschinelle Lernmodelle wie LSTM zur Beurteilung der Stabilität von Handelssignalen.

  3. Erhöhung der quantitativen Faktoren wie Veränderungen des Handelsvolumens, der Kapitalflussrichtung und anderer Beurteilungen von Kapitalfaktoren.

  4. Optimieren Sie Strategieparameter wie RSI-Parameter, gleitende Durchschnittsparameter usw.

  5. Optimieren Sie Stop-Loss-Mechanismen, z. B. bewegliche Stop-Loss, Zeit-Stop-Loss usw.

Zusammenfassung

Diese Strategie verwendet hauptsächlich die Kombination des 5-tägigen RSI-Indikators und des 200-tägigen gleitenden Durchschnittsindikators, um den überkauften / überverkauften Bereich der Preise zu beurteilen und Handelssignale zu bilden. Sie gehört zur Kombinationsstrategie der technischen Indikatoren. Das Strategiesignal ist relativ klar und das maximale Retracement-Risiko ist relativ gering. Es kann jedoch durch Multi-Indikatorenkombinationen und maschinelles Lernen weiter optimiert werden, um die Strategieergebnisse zu verbessern.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 3m
basePeriod: 1m
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/
// ©chewyScripts.

//@version=5
strategy("96er RSI+200EMA Strategy + Alerts", overlay=true)
// This works best on a small account $100, with 50% of equity and up to 10 max open trades. 
// 96% Profitable, turns $100 into $350 in 1 month. very few losses. super happy with it.
// So far it triples the account on a 1m chart in 1 month back testing on the SEI-USD pair.
// I did not test on FX pairs or other instruments.
// had some issues with the inputs not working so had to hard code some, also the lastClose var sometimes breaks and starts following every candle, not sure why.

in_r1 = input.int(5,"5 day input or RSI1")
in_openOrders = input.int(3,"max open orders")

in_lowerRSI = input.int(30,"RSI Lower")
in_upperRSI = input.int(72,"RSI Upper ")

in_emaperiod = input.int(200,"EMA Period")

in_buybreakout = input.int(50,"Buy breakout range")

in_buyTP = input.float(1.05,"Buy TP: 1+TP %, .05 seems to work well.")
in_sellTP = input.float(0.9850, "Sell TP: 1-TP%. .025 seems to work well. ")

simple int rsi5 = in_r1

// 3 rsi strategy , when all of them are overbought we sell, and vice versa
rsi7 = ta.rsi(close,rsi5)
lastClose = request.security(syminfo.tickerid, "D", close, lookahead = barmerge.lookahead_on)
rsi3 = ta.rsi(close[5],rsi5)

ma = ta.ema(close,in_emaperiod)

plot(rsi7,"5 Day RSI",color.red)
plot(lastClose,"Yesterdays Close",color.green)
plot(rsi3,"Previous 5th candles RSI",color.purple)


// sell condition
//sell = ta.crossunder(rsi7,70) and ta.crossunder(rsi14,70) and ta.crossunder(rsi21,70)

//buy condition
//buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and rsi3 <= in_upperRSI and strategy.opentrades < in_openOrders
//sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and rsi3 >= in_lowerRSI3 and strategy.opentrades < in_openOrders

buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and close < lastClose and strategy.opentrades < in_openOrders
sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and close > lastClose and strategy.opentrades < in_openOrders


var lastBuy = close 
var lastSell = close 

if (buy)
    strategy.entry("BUY", strategy.long)
    lastBuy := close 
    alert("Buy")

if ((close >= lastBuy*in_buyTP ) or rsi7 > in_buybreakout and close >= lastClose and (close >= lastClose*in_buyTP or close >= lastBuy*in_buyTP ) )
    strategy.close("BUY", "BUY Exit")
    alert("Buy Exit")
    
if (sell)
    strategy.entry("SELL", strategy.short)
    lastSell := close 
    alert("Sell")

if ( close < ma and (close <= lastSell*in_sellTP ) or (close < lastClose*in_sellTP) )
    strategy.close("SELL", "Sell Exit")
    alert("Sell Exit")


Mehr