Stratégie de retournement à court terme de la ligne positive continue


Date de création: 2023-10-08 13:56:39 Dernière modification: 2023-10-08 13:56:39
Copier: 1 Nombre de clics: 767
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie est basée sur une logique classique de négociation à court terme: après la formation d’une pluralité de lignes positives, les lignes négatives sont vides; après une pluralité de lignes négatives, les lignes positives sont plus nombreuses. Plus précisément, la stratégie détecte la hauteur et la couleur des lignes K pour déterminer si une pluralité de lignes K de la même couleur apparaissent, puis détermine si le renversement est en place à l’aide de l’indicateur RVI.

Principe de stratégie

La logique de base de cette stratégie est la suivante:

  1. Détecter si la hauteur de l’entité de la ligne K dépasse le seuil de hauteur minimale pour filtrer les fluctuations négatives et positives trop petites.

  2. Si les deux premières lignes K sont de même couleur, cela pourrait créer une opportunité de reprise à court terme.

  3. Après avoir déterminé que les deux premières lignes K sont de la même couleur, un signal de transaction est généré si la ligne K actuelle est différente de la couleur des deux lignes K précédentes.

  4. Après l’entrée en bourse, la direction de la position est déterminée par le croisement pluriel de l’indicateur RVI. L’indicateur RVI peut déterminer le point de revers à court terme.

  5. Dans l’ensemble, la stratégie prend en compte les caractéristiques de la ligne K et les indicateurs RVI, formant un système de négociation à courte période de reprise.

Analyse des avantages

Cette stratégie présente les principaux avantages suivants:

  1. Capture des anomalies de prix à court terme. Lorsqu’il y a plusieurs lignes positives ou négatives en continu, cela indique que le prix est anormal à court terme, ce qui permet d’obtenir de meilleurs rendements.

  2. L’indicateur RVI aide à la détermination. L’indicateur RVI permet de déterminer efficacement les points de retournement à court terme, se complète avec les caractéristiques de la ligne K et améliore la stabilité du système.

  3. La fréquence d’opération est plus élevée et convient aux opérations sur des lignes courtes. La présence de lignes K consécutives de même couleur est fréquente et, en combinaison avec l’indicateur RVI, cette stratégie peut offrir plus d’opportunités de trading.

  4. Le risque est maîtrisé. Le nombre de mains de négociation est fixé et le stop-loss est défini.

  5. La logique est claire et simple. Il est facile à comprendre et à mettre en œuvre.

Analyse des risques

Cette stratégie comporte également des risques à prendre en compte:

  1. Les retours à court terme ne sont pas nécessairement valables. Dans le cas d’une tendance persistante, les signaux de retours à court terme peuvent être invalidés et entraîner une entrée erronée.

  2. Les indicateurs RVI peuvent émettre des signaux erronés. Les indicateurs RVI peuvent également ne pas fonctionner en raison de circonstances particulières.

  3. Un arrêt de perte incorrect peut augmenter les pertes. Un arrêt de perte raisonnable est nécessaire.

  4. Les lignes K de couleur identique consécutive sont trop rigides. On peut envisager d’optimiser la proportion de lignes K de couleur identique à X% dans les lignes K de racine N.

  5. Attention à la taille des mains. Les mains fixes ne peuvent pas contrôler l’ouverture globale du risque. Les mains fortes sont sujettes à des explosions de position.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Optimisation de la logique de détermination homogène des lignes K continues, en utilisant des méthodes statistiques plutôt que des racines fixes rigides.

  2. Optimiser les paramètres RVI pour trouver la meilleure combinaison de paramètres.

  3. Ajout d’une stratégie mobile de stop loss en fonction des fluctuations du marché.

  4. Ajout d’un module de gestion des positions, permettant d’ajuster le nombre de transactions en fonction du taux d’utilisation des fonds.

  5. L’ajout de conditions de filtrage supplémentaires améliore la stabilité du système en combinant des indicateurs tels que les canaux, les tendances, etc.

  6. Optimisation des paramètres pour les différentes variétés afin d’améliorer l’adaptabilité.

  7. L’introduction de l’apprentissage automatique pour la formation des données historiques et l’optimisation dynamique des paramètres du système.

Résumer

Cette stratégie est globalement une stratégie de trading à rebours à court terme typique basée sur les anomalies de la ligne K à court terme avec les indicateurs RVI. Elle présente certains avantages, mais elle comporte également des risques possibles. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées en optimisant continuellement les paramètres et en établissant un système plus rigoureux.

Code source de la stratégie
/*backtest
start: 2022-10-07 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules.
//
//This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€
//LOGIC:
//- LONG ENTRY when previous candle is bear
//- LONG EXIT: RVI > signal line
//- SHORT ENTRY when previous candle is bull
//- SHORT EXIT: RVI <  signal line
//
//NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script
//
//Take profit = no
//Stop loss = no

// strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)

//INPUTS
src = input(close, "source")
min_body_height = input(42, "Minimum body height", type=input.float)
//bars_back=input(2, "Consecutive bars of same color")
rvi_period = input(55, "RVI period")

//CALCULATIONS_____________________________
//candle color
body_height = abs(open - close) / syminfo.mintick
body_color = open > close ? color.red : color.green

//da migliorare for i=0 to bars_back-1

//RVI -------- thanks to hecate
p = rvi_period

CO = close - open
HL = high - low

value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6
value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6

num = sum(value1, p)
denom = sum(value2, p)

RVI = denom != 0 ? num / denom : 0

RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6

plot(RVI, color=color.green, style=plot.style_line, linewidth=1)
plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1)

//----------------------------------

longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and 
   body_height[0] >= min_body_height and body_color[0] == color.red and 
   RVIsig > RVI
exitLong = RVI > RVIsig

shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and 
   body_height[0] >= min_body_height and body_color[0] == color.green and 
   RVIsig < RVI
exitShort = RVI < RVIsig

if longCondition and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

strategy.close("Long", when=exitLong)

if shortCondition and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

strategy.close("Short", when=exitShort)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(7, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()