La stratégie de négociation de la tendance Ruda Momentum

Auteur:ChaoZhang est là., Date: 2024-04-03 15:16:47 Je vous en prie.
Les étiquettes:Le taux d'intérêtVAB

img

Résumé

La stratégie Ruda Momentum Trend Trading est une stratégie de trading quantitative basée sur des indicateurs de dynamique et de tendance. La stratégie utilise des indicateurs tels que OBV (On Balance Volume), EMA (Exponential Moving Average) et le ratio du corps du chandelier pour déterminer les signaux d'achat et de vente. Lorsque l'EMA à court terme dépasse l'EMA à long terme, OBV atteint un nouveau sommet et le ratio du corps du chandelier est supérieur au seuil fixé, la stratégie achète au prix d'ouverture du lendemain; lorsque le prix tombe en dessous du prix stop-loss ou que le prix de clôture tombe en dessous de l'EMA à court terme, la stratégie ferme la position.

Principe de stratégie

  1. Calculer deux lignes EMA avec des paramètres de 5 pour l'EMA à court terme et de 21 pour l'EMA à long terme.
  2. Calculer l'indicateur OBV. Lorsque l'OBV atteint un sommet de 10 jours, la dynamique haussière est considérée comme forte.
  3. Lorsque le rapport de corps est supérieur au seuil défini (par défaut 50%), la tendance est considérée comme établie.
  4. Lorsque la tendance est à la hausse, la dynamique haussière est forte et que la tendance est établie, la stratégie achète au prix d'ouverture du jour suivant avec un prix stop-loss fixé au minimum du bas de la journée en cours et le prix d'ouverture moins 1%.
  5. Lorsque le prix tombe en dessous du prix stop-loss ou que le prix de clôture tombe en dessous de l'EMA à court terme, la stratégie ferme la position.

Analyse des avantages

  1. En combinant des indicateurs de tendance et de dynamique, la stratégie peut saisir des instruments puissants.
  2. L'utilisation du prix d'ouverture du jour suivant pour acheter et le stop-loss dynamique peut éviter certaines fausses ruptures.
  3. Les conditions de stop-loss et de prise de profit sont claires et le risque est contrôlable.

Analyse des risques

  1. Les indicateurs de tendance et de dynamique présentent un décalage, ce qui peut entraîner des achats à prix élevés et des stop-loss prématurés.
  2. Les paramètres fixes manquent d'adaptabilité et les performances peuvent varier considérablement selon les différentes conditions du marché.
  3. Les tests antérieurs sur un marché et un instrument uniques nécessitent une vérification plus approfondie de la stabilité et de l'applicabilité de la stratégie.

Direction de l'optimisation

  1. Optimiser les paramètres des indicateurs de tendance et de dynamique pour améliorer la sensibilité et l'efficacité des indicateurs.
  2. Introduire un jugement sur l'état du marché et ajuster dynamiquement les paramètres en fonction des caractéristiques actuelles du marché.
  3. Élargir la portée des tests antérieurs, accroître les tests sur différents marchés et instruments afin d'améliorer la robustesse de la stratégie.
  4. Envisager l'introduction de modules de gestion des positions et de contrôle des risques afin d'améliorer le rapport risque/rendement.

Résumé

La Ruda Momentum Trend Trading Strategy est une stratégie de trading quantitative simple et facile à utiliser qui capture des instruments puissants et des opportunités de tendance en combinant des indicateurs de tendance et de momentum. Cependant, la stratégie présente également certaines limitations, telles que le décalage des indicateurs et des paramètres fixes.


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






Relationnée

Plus de