Stratégie de capture de tendance avec rupture horizontale

Auteur:ChaoZhang est là., Date: 2024-04-26 15h22min au plus tard
Les étiquettes:

img

Résumé

Cette stratégie utilise des lignes horizontales comme niveaux de support et de résistance, et génère des signaux de trading lorsque le prix franchit ces lignes. L'idée principale est: d'abord, dessiner des lignes horizontales basées sur certaines conditions, aller long lorsque le prix franchit la ligne, et fermer des positions lorsque le prix franchit la ligne.

Principe de stratégie

  1. Sur la base de la condition que le prix bas de la bougie précédente est supérieur au prix de clôture actuel, tracez une ligne horizontale de 20 à la valeur basse de la bougie précédente et gardez toujours les 10 dernières lignes.
  2. Si le prix actuel dépasse la dernière ligne horizontale, fermer toutes les positions longues précédentes et ouvrir de nouvelles positions longues.
  3. Lors du tracé d'une nouvelle ligne horizontale, si une position existe, fermez-la d'abord, puis ouvrez une nouvelle position longue.

Les avantages de la stratégie

  1. La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre.
  2. En utilisant la percée des niveaux de support et de résistance des lignes horizontales pour générer des signaux, il peut bien capturer les tendances.
  3. Lorsqu'une nouvelle ligne horizontale est générée, elle ferme d'abord les positions précédentes, puis en ouvre de nouvelles, ce qui peut réduire le risque que peuvent présenter les positions précédentes.
  4. La stratégie peut être optimisée en ajustant la longueur et le nombre de lignes horizontales.

Risques stratégiques

  1. Pour les marchés oscillants, les ruptures fréquentes des lignes horizontales peuvent entraîner une survente, ce qui entraîne des glissements importants et des frais de transaction.
  2. La définition des lignes horizontales de la stratégie est relativement simple et ne peut être vérifiée par d'autres indicateurs, ce qui peut générer de faux signaux.
  3. Il ne va que de long et pas de court, et ne peut pas exploiter pleinement les tendances à la baisse.

Directions d'optimisation de la stratégie

  1. D'autres indicateurs peuvent être combinés pour confirmer la validité des lignes horizontales, tels que les variations du volume des transactions, afin de réduire les faux signaux.
  2. Pour les marchés oscillants, la fréquence des transactions peut être réduite en augmentant l'ampleur des percées horizontales.
  3. Ajouter un mécanisme de vente à découvert pour tirer profit des tendances à la baisse.
  4. Il convient d'envisager d'ajuster dynamiquement la longueur et le nombre de lignes horizontales afin de les adapter aux différentes conditions du marché.

Résumé

Cette stratégie utilise des lignes horizontales comme des niveaux de support et de résistance importants, et génère des signaux de trading par des percées de ligne. L'avantage est que la logique est simple et facile à mettre en œuvre, et qu'elle peut bien capturer les tendances. Cependant, l'inconvénient est qu'elle peut surtrader, générer de faux signaux, et ne peut aller que long mais pas court.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Traderxprox

//@version=5
strategy("Alarm Trader_ALL", overlay=true)

// Yatay çizgi oluşum
yatayc = low[1] > close[0]

if yatayc
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")


//YATAY ÇİZGİ
int cizgilen = input.int(20, "Çizgi uzunluğu?", group = "Yatay Çizgi Ayarları")
var array<line> lines = array.new<line>()
int numberOfLines = input.int(10, "Son Kaç Çizgi?", 0, group = "Yatay Çizgi Ayarları")
kural22 = low[1] > close[0]
// if kural22
//     newLine = line.new(bar_index-2, low[1], bar_index+cizgilen, low[1] ,color=color.red, width=1, style=line.style_solid)
//     // Push the `newLine` into the `lines` array.
//     lines.push(newLine)
//     // Delete the oldest line when the size of the array exceeds the specified `numberOfLines`.
//     if array.size(lines) > numberOfLines
//         line.delete(lines.shift())
    
// Alarm kırılım için koşul

var float lastLinePrice = na
if not na(close) and array.size(lines) > 0 
    lastLinePrice := line.get_price(array.get(lines, array.size(lines) - 1), bar_index)
if open < lastLinePrice and close > lastLinePrice
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")



Plus de