Cette stratégie calcule un indicateur de volume net personnalisé pour mettre en œuvre une stratégie de négociation consistant à acheter sur le croisement doré et à vendre sur le croisement de la mort.
La logique de base de la stratégie est de calculer un indicateur de volume net (NV) personnalisé. L'indicateur NV juge la direction des changements de prix. Si positif, il prend le volume quotidien. Si négatif, il prend la valeur négative du volume quotidien. Si inchangé, il prend 0. Cela peut mieux refléter la relation entre les changements de prix et le volume.
La stratégie calcule ensuite la ligne moyenne mobile simple de 3 jours de l'indicateur NV, respectivement, comme la ligne croisée dorée et la ligne croisée de la mort. Lorsque l'indicateur NV traverse la ligne croisée dorée de bas en haut, passez long. Lorsque NV traverse la ligne croisée de la mort de haut en bas, passez court.
En outre, la stratégie fixe également des heures de début et de fin paramétrées pour contrôler les heures de négociation.
Le plus grand avantage de cette stratégie est que la stratégie est simple et claire, facile à comprendre, des paramètres flexibles, des variétés de trading personnalisables, des heures de trading, etc. En outre, cette stratégie appartient à une stratégie de suivi des tendances qui peut capturer efficacement les tendances des prix, réduire la fréquence des transactions et obtenir des rendements plus élevés.
Les principaux risques de cette stratégie sont les suivants:
La stratégie suivie quotidiennement ne peut pas répondre rapidement aux changements dans les tendances des prix.
La croix d'or quantitative elle-même a une certaine hystérésis, ce qui peut entraîner une entrée tardive et des pertes amplifiées.
Incapable de filtrer efficacement le bruit du marché et sensible aux pièges.
Les moyennes mobiles peuvent être utilisées dynamiquement, en combinaison avec d'autres indicateurs pour réduire les risques.
La stratégie peut être optimisée dans les aspects suivants:
Augmenter les stratégies de stop loss pour contrôler les pertes uniques avec des méthodes de stop loss mobiles et de stop loss du jour au lendemain.
Augmenter les indicateurs de filtrage et utiliser le MACD, le KDJ et d'autres indicateurs pour filtrer les faux signaux et améliorer la stabilité de la stratégie.
Optimisation des paramètres, recherche itérative de la combinaison optimale de paramètres par des algorithmes génétiques, des chaînes de Markov et d'autres méthodes.
Le portefeuille stratégique peut être combiné avec d'autres stratégies indépendantes pour diversifier davantage les risques et augmenter les rendements globaux.
Cette stratégie met en œuvre une tendance simple et efficace en suivant des croix d'or quantitatives. Bien qu'il y ait un certain degré d'hystérésis, les paramètres sont flexibles et faciles à comprendre.
/*backtest start: 2023-11-14 00:00:00 end: 2023-11-15 03:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="@DankCoins - Customized Net Volume") src = input(defval = close, title = "VA Source") nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume // Inputs // VHigh = input(defval = 50, title = "VHigh Amount") VLow = input(defval = -50, title = "VLow Amount") // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2012) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2012) MAV1 = sma(volume, 3) MAV2 = -sma(volume, 3) enterShort = crossunder(nv, MAV1) exitShort = crossunder(nv, MAV2) enterLong = crossover(nv, MAV2) exitLong = crossover(nv, MAV1) // Time Function start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" strategy.entry(id="Long Entry", long=true, when=enterLong and window()) strategy.entry(id="Short Entry", long=false, when=enterShort and window()) strategy.exit("Exit Long", from_entry = "Long Entry", when=exitLong and window()) strategy.exit("Exit Short", from_entry = "Short Entry", when=exitShort and window()) // Plot plot(nv, color=blue, title="NV") plot(VHigh, color=red) plot(VLow, color=red) plot(MAV1, color=green) plot(MAV2, color=green)