Ruda Momentum Trend Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-04-03 15:16:47
Tags:EMAOBV

img

Übersicht

Die Ruda Momentum Trend Trading Strategie ist eine quantitative Handelsstrategie, die auf Momentum- und Trendindikatoren basiert. Die Strategie verwendet Indikatoren wie OBV (On Balance Volume), EMA (Exponential Moving Average) und Candlestick Body Ratio, um Kauf- und Verkaufssignale zu bestimmen.

Strategieprinzip

  1. Berechnen Sie zwei EMA-Linien mit Parametern von 5 für die kurzfristige EMA und 21 für die langfristige EMA.
  2. Berechnen Sie den OBV-Indikator. Wenn der OBV ein 10-Tage-Hoch erreicht, gilt die bullische Dynamik als stark.
  3. Berechnen Sie das Lichtkörperverhältnis. Wenn das Lichtkörperverhältnis größer ist als die festgelegte Schwelle (Standard 50%), gilt der Trend als festgelegt.
  4. Wenn der Trend aufwärts ist, die bullische Dynamik stark ist und der Trend etabliert ist, kauft die Strategie zum Eröffnungspreis des nächsten Tages mit einem Stop-Loss-Preis, der auf dem Mindestwert des aktuellen Tages niedrig und dem Eröffnungspreis minus 1% festgelegt ist.
  5. Wenn der Kurs unter den Stop-Loss-Preis fällt oder der Schlusskurs unter die kurzfristige EMA fällt, schließt die Strategie die Position.

Analyse der Vorteile

  1. Durch die Kombination von Trend- und Dynamikindikatoren kann die Strategie starke Instrumente erfassen.
  2. Die Verwendung des Eröffnungspreises des nächsten Tages für den Kauf und dynamischen Stop-Loss kann einige falsche Ausbrüche vermeiden.
  3. Die Stop-Loss- und Take-Profit-Bedingungen sind klar, und das Risiko ist kontrollierbar.

Risikoanalyse

  1. Die Trend- und Dynamikindikatoren weisen eine Verzögerung auf, was zu hohen Preisen und vorzeitigen Stop-Losses führen kann.
  2. Bei festen Parametern fehlt es an Anpassungsfähigkeit, und die Leistung kann unter unterschiedlichen Marktbedingungen erheblich variieren.
  3. Die Rückprüfung auf einem Binnenmarkt und einem Instrument erfordert eine weitere Überprüfung der Stabilität und Anwendbarkeit der Strategie.

Optimierungsrichtung

  1. Optimierung der Parameter der Trend- und Dynamikindikatoren zur Verbesserung der Empfindlichkeit und Wirksamkeit der Indikatoren.
  2. Einführung eines Marktzustandsbeurteilens und dynamische Anpassung der Parameter an die aktuellen Marktmerkmale.
  3. Erweiterung des Anwendungsbereichs von Backtesting, Erhöhung der Tests auf verschiedenen Märkten und Instrumenten, um die Robustheit der Strategie zu verbessern.
  4. Überlegen Sie, Positionsmanagement- und Risikokontrollmodule einzuführen, um das Risiko-Rendite-Verhältnis zu verbessern.

Zusammenfassung

Die Ruda Momentum Trend Trading Strategie ist eine einfache und einfach zu bedienende quantitative Handelsstrategie, die starke Instrumente und Trendchancen durch Kombination von Trend- und Momentum-Indikatoren erfasst. Die Strategie hat jedoch auch bestimmte Einschränkungen wie Indikatorverzögerung und feste Parameter. In Zukunft kann die Strategie durch Optimierung der Indikatorparameter, Einführung von Anpassungsmechanismen, Erweiterung des Umfangs des Backtestings und Stärkung des Risikomanagements optimiert und verbessert werden, um die Robustheit und Rentabilität der Strategie zu verbessern.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
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/
// © lhcbenac

//@version=5
strategy('Ruda_Strategy', overlay=true , initial_capital=5000 , pyramiding = 3, commission_type =  strategy.commission.cash_per_contract , commission_value =  1 )

//
// 
////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                    Otimizações                     //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////
//
// 

////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////
//
//
// Indica situação de Compra ou Venda

// Condição True or False 
YEAR_BT= input.int(1,title="Nº Anos ", group = "Backtest")

INPUT_ME1 = input.int(5,title="Momentum ", group = "RUDA")
INPUT_ME2 = input.int(21,title="Trend ", group = "RUDA")
INPUT_CORPO = input.int(50,title="CORPO ", group = "RUDA")/100



v_obv = ta.obv
v_med1 = ta.ema(close , INPUT_ME1)
v_med2 = ta.ema(close , INPUT_ME2)
valid_1 = v_med1 > v_med2 
valid_2 = v_obv >= ta.highest(v_obv[1], 10)
valid_3 = math.abs(close - open) / (high-low) > INPUT_CORPO
plot(v_med1)
plot(v_med2)

compra = valid_1 and valid_2 and  strategy.position_size == 0 and valid_3


var float v_minima_ref = na

dataInicio = timestamp(year(timenow) - YEAR_BT, month(timenow), dayofmonth(timenow), 00, 00)

// Variáveis globais
var float preco_entrada = na
var float preco_stop = na

if compra and time >= dataInicio and ta.change(time("D")) != 0 and ta.change(compra)  
    v_minima_ref := low
    preco_entrada := open
    preco_stop := math.min(low, open - 0.01 * open)
    strategy.entry("Compra", strategy.long , stop = preco_stop )
    if (not na(preco_entrada) and not na(preco_stop))
        label.new(x=bar_index, y= low * 0.9, text= "Dia: " + str.tostring(dayofmonth) + "\nPreço de Entrada: " + str.tostring(preco_entrada) + "\nPreço de Stop Loss: " + str.tostring(preco_stop), style=label.style_label_up, color=color.green)

    
    
// Lógica de saída
// Saída no stop loss
if (not na(preco_stop) and low < preco_stop and ta.change(low) < 0)
    strategy.close("Compra", comment="Saída no Stop")

// Saída no lucro
if (close < v_med1 and ta.change(close) < 0)
    strategy.close("Compra", comment="Saída na Media")

venda =( (not na(preco_stop) and low < preco_stop and ta.change(low) < 0) or (close < v_med1 and ta.change(close) < 0) ) and strategy.position_size > 0
codiff = compra ? 1 : venda ? -1 : na 
plotarrow(codiff, colorup=#00c3ff, colordown=#ff0062,title="Compra", maxheight=20, offset=0)






Verwandt

Mehr