
Cette stratégie combine les deux facteurs de 123 revers et de l’indicateur d’oscillation des nombres positifs pour réaliser des transactions quantifiées à double facteur. La stratégie capture les opportunités de revers à court terme tout en identifiant les tendances à plus long terme pour réaliser un excess return à faible risque.
La première partie est la stratégie de 123 inversions. Cette stratégie utilise les caractéristiques de l’inversion du cours de clôture sur 2 jours pour déterminer les points de vente et d’achat. Lorsque le cours de clôture est en hausse pendant 2 jours consécutifs et que la ligne K lente est inférieure à 50, il est considéré comme une correction injustifiée, générant un point d’achat.
La deuxième partie est une stratégie d’indicateur de choc des nombres positifs. L’indicateur calcule le nombre positif le plus proche du prix actuel dans une fourchette de prix spécifiée et exporte la différence par rapport au prix actuel. Une valeur positive indique que le prix actuel est proche de la limite supérieure du nombre positif et une valeur négative indique que le prix actuel est proche de la limite inférieure du nombre positif.
Le principe de la fusion des signaux de négociation des deux stratégies est le suivant: le signal de négociation réel est généré par le signal de synchronisation et le signal de décalage n’ouvre pas de position.
Cette stratégie combine un double facteur, qui prend en compte à la fois les effets de la reprise à court terme et les caractéristiques de la tendance à long terme, juge le marché sous plusieurs angles et améliore la résistance au risque de la stratégie.
Par rapport à la stratégie de momentum unique, cette stratégie permet de contrôler efficacement le risque intraday en utilisant un facteur de revers pour arrêter ou inverser la position à temps lorsque des événements soudains entraînent des sauts de prix à court terme.
Par rapport à une stratégie de revers unique, cette stratégie introduit des indicateurs de choc des nombres premiers pour déterminer la direction de la tendance, ce qui permet d’éviter que des revers fréquents entraînent un overtrading.
Le risque le plus élevé de cette stratégie réside dans le fait qu’il existe un conflit de signaux entre les deux facteurs. Lorsque le 123 inverse montre des signes de survente et de survente, générant un signal de revers, et que l’indicateur de choc des nombres positifs montre qu’il est toujours dans la tendance, le revers direct peut entraîner des pertes.
Afin de contrôler ce risque, la stratégie a ajouté une logique de jugement supplémentaire, qui ne génère un signal de transaction réel que lorsque les deux signaux sont synchronisés. Cependant, cela peut également manquer certaines opportunités de transaction.
Optimiser les paramètres de l’indicateur stochastique pour trouver les combinaisons de paramètres de retournement les plus adaptées à chaque paramètre
Optimisation des paramètres de pourcentage d’écart de capacité pour les indicateurs de vibration qualitative, réduction des échanges de bruit
Augmentation des stratégies de freinage des pertes pour prévenir l’expansion des pertes unilatérales
Ajout d’un module de gestion des positions pour ajuster les positions dans différentes conditions de marché
Ajout d’un modèle d’apprentissage automatique pour juger de la fiabilité du signal à deux facteurs, réduisant la probabilité de conflits de signaux
Cette stratégie a réussi à combiner des facteurs de reprise à court terme avec des facteurs de tendance à long terme pour réaliser des transactions quantifiées à faible risque. L’utilisation efficace du double facteur de filtrage du bruit des transactions et la définition d’un risque de contrôle logique de jugement supplémentaire sont des stratégies de combat réelles pour des gains stables.
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 28/04/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Determining market trends has become a science even though a high number or people
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors
// have worked together in developing quite several indicators to help them better understand
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the
// nearest prime number, be it at the top or the bottom of the series, and outlines the
// difference between that prime number and the respective series.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
PrimeNumberOscillator(price, percent) =>
res = 0.0
res1 = 0.0
res2 = 0.0
for j = price to price + (price * percent / 100)
res1 := j
for i = 2 to sqrt(price)
res1 := iff(j % i == 0 , 0, j)
if res1 == 0
break
if res1 > 0
break
for j = price to price - (price * percent / 100)
res2 := j
for i = 2 to sqrt(price)
res2 := iff(j % i == 0 , 0, j)
if res2 == 0
break
if res2 > 0
break
res := iff(res1 - price < price - res2, res1 - price, res2 - price)
res := iff(res == 0, res[1], res)
res
PNO(percent) =>
pos = 0.0
xPNO = PrimeNumberOscillator(close, percent)
pos:= iff(xPNO > 0, 1,
iff(xPNO < 0, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Prime Number Oscillator", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Prime Number Oscillator ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNO = PNO(percent)
pos = iff(posReversal123 == 1 and posPNO == 1 , 1,
iff(posReversal123 == -1 and posPNO == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1 )
strategy.entry("Long", strategy.long)
if (possig == -1 )
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )