
L’idée centrale de cette stratégie est de faire des opérations de vente et d’achat en fonction des ruptures de prix dans le canal de la tangjian, une stratégie quantitative de type suivi de tendance. Elle permet d’identifier automatiquement les canaux de prix, d’ouvrir des positions plus élevées lorsque les prix franchissent le canal et de faire des positions plus faibles lorsque les prix reviennent vers le bas du canal, près ou au point d’arrêt.
La stratégie est basée sur l’indicateur de la voie de Dongxian, la voie de Dongxian est la zone de la voie tracée par le prix le plus élevé et le prix le plus bas d’une période donnée. La méthode de calcul est:
En orbite = prix le plus élevé de près de n cycles En bas de la trajectoire = le prix le plus bas de près de n cycles
La stratégie ne prend en compte que les cas de rupture de la trajectoire ascendante.
La logique de l’opération est la suivante:
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
La réponse:
La stratégie peut également être optimisée dans les domaines suivants:
L’idée générale de la stratégie est claire, facile à comprendre et à mettre en œuvre. Elle utilise des indicateurs de la voie de Tongan pour identifier automatiquement la direction de la tendance. La configuration est flexible et peut être ajustée en fonction des besoins réels.
/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © Giovanni_Trombetta
// Strategy to capture price channel breakouts
//@version=4
strategy("ChannelsBreakout", max_bars_back=50, overlay=true)
instrument = input(1, title = "Select 1: Stock/Forex, 2: Future")
money = input(10000, title = "Money for each trade")
backtest_start = input(2000, "Insert first year to backtest")
period = input(50, title = "Period in bars of Donchian Channel")
monetary_stoploss = input(1000, title = "Monetary Stop Loss")
quantity = if instrument != 1
1
else
int(money / close)
upBarrier = highest(high,period)
downBarrier = lowest(low,period)
up = highest(high,period / 4)
down = lowest(low,period / 4)
plot(upBarrier, color=color.green, linewidth=2)
plot(downBarrier, color=color.red, linewidth=2)
plot(up, color=color.lime, linewidth=1)
plot(down, color=color.orange, linewidth=2)
longCondition = crossover(close, upBarrier[1]) and year >= backtest_start
if (longCondition)
strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0)
closeCondition = crossunder(close, down[1]) or down < down[1]
if (closeCondition)
strategy.close("Long", comment = "Trailing")
stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size
strategy.exit("StopLoss", from_entry = "Long", stop = stop_level)
plot(stop_level, color=color.yellow, linewidth=2)
// l = label.new(bar_index, na,
// text="PineScript Code", color= color.lime, textcolor = color.white,
// style=label.style_labelup, yloc=yloc.belowbar, size=size.normal)
// label.delete(l[1])