
La stratégie de négociation de la chaîne de fluctuation de Dongjian permet de juger de la tendance des prix actuels en calculant les chaînes de prix les plus hautes et les plus basses d’une période donnée, et de négocier long et court en combinaison avec des chaînes de rupture. La stratégie s’applique à la négociation d’actions et de monnaies numériques très volatiles.
Cette stratégie construit des canaux en calculant les prix maximum pcmax et minimum pcmin du dernier cycle de l’histoire. Les méthodes de calcul de la trajectoire ascendante et descendante des canaux sont les suivantes:
La hauteur de la piste y = pcmax - (pcmax - pcmin) * (100 - percentDev)/100
Le débit est calculé en utilisant la formule suivante:
Le taux de participation est de 13%.
Un signal long est émis lorsque le prix atteint une hauteur; un signal short est émis lorsque le prix atteint une basse.
La manière dont les signaux de transactions spécifiques sont générés est la suivante:
boundup = high > yh Déterminer si une rupture est survenue
bounddn = low < yl Déterminer si une déviation a été effectuée
upsign = sma(bounddn, 2) == 1 Déterminé par la moyenne de bounddn, le déraillement se poursuit
dnsign = sma(boundup, 2) == 1 Déterminé par la moyenne de la boundup, le déraillement continue
exitup = dnsign Dépassement de la voie ferrée générant un signal d’équilibre
exitdn = upsign Dépassement de la voie descendante générant un signal d’équilibre
if upsign Le signal de dérivation est généré par le signal de multiplication
if dnsign Le déraillement génère un signal de vide
La stratégie impose également des heures de début et de fin pour éviter les positions inutiles du jour au lendemain.
Les tendances sont mieux mesurées en utilisant le canal de Dongxian
Il est possible de faire des transactions bidirectionnelles en réglant à la fois des signaux de prise et de retrait.
Le filtrage homogène permet de juger les signaux et d’éviter les erreurs de transaction
La mise en place d’une méthode de stop loss est facultative et permet de contrôler les risques.
Réglez les heures de début et de fin pour éviter les risques de positions nocturnes
Le canal de Dongjian est sensible aux paramètres history et percentDev et doit être optimisé pour s’adapter aux différentes variétés.
Les tremblements de terre peuvent générer de faux signaux
Le fait de ne pas tenir compte de la gestion des commandes peut avoir des conséquences sur les bénéfices
Le risque de position exagérée sur un actif sans prise en compte des facteurs de gestion de position
Les fonds de transaction doivent être raisonnablement placés dans le portefeuille sans tenir compte de la gestion des fonds
Optimisation des paramètres history et percentDev pour une meilleure adaptation aux différentes variétés
Ajout de filtres pour éviter les signaux erronés lors des secousses
Ajout d’un module de gestion de position pour contrôler le pourcentage de capital occupé par une seule position
Ajout d’un module de gestion des fonds, limitant le pourcentage de fonds occupés par les positions totales
Ajout d’une fonctionnalité de gestion des commandes pour optimiser la commande
La stratégie de négociation de la chaîne de fluctuation de Dongguan permet de juger les tendances et les signaux de négociation par la rupture de la chaîne, de mieux mesurer l’effet, tout en offrant une capacité de négociation bidirectionnelle. Cependant, la stratégie comporte également des risques et nécessite une optimisation des paramètres, des filtres, de la gestion des positions, de la gestion des fonds et de la gestion des commandes, etc., afin de stabiliser les bénéfices dans le monde réel.
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
////////////////////////////////////////////////////////////
// Copyright by AlexInc v1.0 02/07/2018 @aav_1980
// PriceChannel strategy
// If you find this script helpful, you can also help me by sending donation to
// BTC 16d9vgFvCmXpLf8FiKY6zsy6pauaCyFnzS
// LTC LQ5emyqNRjdRMqHPHEqREgryUJqmvYhffM
////////////////////////////////////////////////////////////
//@version=3
strategy("AlexInc PriceChannel Str", overlay=false)
history = input(20)
percentDev = input(13)
capital = input(100)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usestoploss = input(true, defval = true, title = "Stop Loss")
stoplossmult = input(3.8, defval = 3.8, minval = 1, maxval = 10, title = "Stop loss multiplicator")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
bodymin = min( open, close)
bodymax = max(open, close)
pcmax = highest(bodymax, history)
pcmin = lowest(bodymin, history)
yh = ((pcmax - pcmin) / 100 * (100 - percentDev)) + pcmin
yl = ((pcmax - pcmin) / 100 * percentDev) + pcmin
plot(pcmax)
plot(pcmin)
plot(yh)
plot(yl)
//1
bounddn = low < yl ? 1 : 0
boundup = high > yh ? 1 : 0
upsign = sma(bounddn, 2) == 1
dnsign = sma(boundup, 2) == 1
//2
//upsign = crossover(bodymin, yl)
//dnsign = crossunder(bodymax , yh)
exitup = dnsign
exitdn = upsign
lot = strategy.equity / close * capital / 100
xATR = atr(history)
nLoss = usestoploss ? stoplossmult * xATR : na
stop_level_long = 0.0
stop_level_long := nz(stop_level_long[1])
stop_level_short = 0.0
stop_level_short := nz(stop_level_short[1])
pos = strategy.position_size
if pos >0 and pos[1] <= 0 //crossover(pos, 0.5)
stop_level_long = strategy.position_avg_price - nLoss
if pos < 0 and pos[1] >= 0 //crossunder(pos, -0.5)
stop_level_short = strategy.position_avg_price + nLoss
if pos == 0
stop_level_long = bodymin - nLoss
stop_level_short = bodymax + nLoss
//plot(bodymax + nLoss, color=red)
//plot(bodymin - nLoss, color=red)
plot(stop_level_long, color=red)
plot(stop_level_short, color=red)
if upsign
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dnsign
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
if true
strategy.close_all()
//if strategy.position_size != 0
// strategy.exit("Exit Long", from_entry = "Long", stop = stop_level_long)
// strategy.exit("Exit Short", from_entry = "Short", stop = stop_level_short)