Ruda Momentum Trend-Handelsstrategie

EMA OBV
Erstellungsdatum: 2024-04-03 15:16:47 zuletzt geändert: 2024-04-03 15:16:47
Kopie: 0 Klicks: 700
1
konzentrieren Sie sich auf
1617
Anhänger

Ruda Momentum Trend-Handelsstrategie

Überblick

Die Ruda-Strategie ist eine quantitative Handelsstrategie, die auf Dynamik und Trendindikatoren basiert. Die Strategie nutzt Kennzahlen wie den OBV (On Balance Volume), EMA (Exponential Moving Average) und den Anteil der K-Line-Einheiten, um Kauf- und Verkaufsmöglichkeiten zu ermitteln. Die Strategie wird am nächsten Tag eingekauft, wenn die langfristige EMA, die OBV, hoch ist und der Anteil der K-Line-Einheiten größer ist als der eingestellte Wert.

Strategieprinzip

  1. Berechnen Sie zwei EMA-Linien, wobei das kurzfristige EMA-Parameter 5 und das langfristige EMA-Parameter 21 ist. Wenn ein langfristiger EMA auf einem kurzfristigen EMA getragen wird, wird ein Trend als aufwärts angesehen, während der Trend umgekehrt abwärts ist.
  2. Die Berechnung des OBV-Wertes ergab, dass die Mehrkernenergie stark ist, wenn der OBV den 10. Höchststand erreicht.
  3. Berechnen Sie den Anteil der K-Linien-Einheiten, wenn der Anteil der Einheiten größer ist als der eingestellte Schwellenwert (default 50%). Der Trend gilt als festgestellt.
  4. Wenn ein Aufwärtstrend, eine mehrspurige Dynamik stark ist und ein Trend festgestellt wird, wird die Strategie am nächsten Tag zum Eröffnungspreis gekauft, wobei der Stop-Loss-Preis der Mindestwert zwischen dem Tagestief und dem Eröffnungspreis von -1% ist.
  5. Die Strategie wird ausgeschaltet, wenn der Preis den Stop-Loss-Preis oder den Schlusskurs über die kurzfristige EMA fällt.

Analyse der Stärken

  1. In Kombination mit Trends und Dynamikindikatoren kann man starke Sorten fangen.
  2. Mit dem Kauf und dem dynamischen Stop-Loss am nächsten Tag kann ein teilweiser Falschbruch vermieden werden.
  3. Die Stop-Loss- und Stop-Stop-Bedingungen sind klar und die Risiken sind kontrollierbar.

Risikoanalyse

  1. Trends und Dynamik-Indikatoren sind nachlässig, und es kann zu einem zu hohen Kauf und zu frühem Verlust kommen.
  2. Die Parameter sind fest, es fehlt an Anpassungsfähigkeit und die Performance kann unter verschiedenen Marktbedingungen stark variieren.
  3. Die Stabilität und die Anwendbarkeit der Strategie für die Rückprüfung des einheitlichen Marktes und der Sorten sind noch zu überprüfen.

Optimierungsrichtung

  1. Optimierung der Parameter von Trend- und Dynamikindikatoren, um die Sensitivität und Effektivität der Indikatoren zu verbessern.
  2. Einführung von Parametern zur Beurteilung der Marktlage und Anpassung der Parameter an die Dynamik der aktuellen Marktmerkmale.
  3. Erweiterung des Rückprüfungsbereichs, Erhöhung der Tests für verschiedene Märkte und Sorten und Steigerung der Strategie-Stähigkeit.
  4. Erwägen Sie die Einführung von Positionsmanagement- und Risikokontrollmodulen, um den Ertrags-Risiko-Verhältnis zu erhöhen.

Zusammenfassen

Die Ruda-Strategie für dynamische Trends ist eine einfache und benutzerfreundliche quantitative Handelsstrategie, die durch die Kombination von Trends und dynamischen Indikatoren starke Sorten und Trendchancen erfasst. Die Strategie hat jedoch auch einige Einschränkungen, wie z. B. Indikatorverzögerung, Parameterfixierung. In Zukunft können Strategien optimiert und verbessert werden, um die Stabilität und Profitabilität der Strategie zu verbessern.

Strategiequellcode
/*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)