Стратегия сдерживания тренда с горизонтальным прорывом

Автор:Чао Чжан, Дата: 2024-04-26 15:22:06
Тэги:

img

Обзор

Эта стратегия использует горизонтальные линии в качестве уровней поддержки и сопротивления и генерирует торговые сигналы, когда цена проходит через эти линии. Главная идея заключается в следующем: во-первых, нарисуйте горизонтальные линии на основе определенных условий, займите длинные позиции, когда цена проходит выше линии, и закрывайте позиции, когда цена проходит ниже линии. В то же время существуют соответствующие условия для генерации горизонтальных линий, такие как низкая цена предыдущей свечи, которая больше текущей цены закрытия.

Принцип стратегии

  1. Исходя из того, что низкая цена предыдущей свечи больше текущей цены закрытия, нарисуйте горизонтальную линию длиной 20 при низкой цене предыдущей свечи и всегда держите только последние 10 линий.
  2. Если текущая цена превышает последнюю горизонтальную линию, закрыть все предыдущие длинные позиции и открыть новые длинные позиции.
  3. При нанесении новой горизонтальной линии, если есть позиция, сначала закрыть ее, а затем открыть новую длинную позицию.

Преимущества стратегии

  1. Логика стратегии проста и понятна, легко понять и реализовать.
  2. Используя прорыв уровня поддержки и сопротивления горизонтальной линии для генерации сигналов, он может хорошо улавливать тенденции.
  3. Когда создается новая горизонтальная линия, она сначала закрывает предыдущие позиции, а затем открывает новые, что может уменьшить риск, который могут принести предыдущие позиции.
  4. Стратегия может быть оптимизирована путем корректировки длины и количества горизонтальных линий.

Стратегические риски

  1. Для колеблющихся рынков частое прорыв горизонтальной линии может привести к переоценке, что приводит к большим сдвигам и комиссионным за транзакции.
  2. Определение горизонтальных линий в стратегии относительно простое и не подтверждается другими показателями, что может привести к некоторым ложным сигналам.
  3. Он только длинный и не короткий, и не может полностью использовать тенденции к снижению.

Направления оптимизации стратегии

  1. Другие показатели могут быть объединены для подтверждения действительности горизонтальных линий, таких как изменения объема торговли, для уменьшения ложных сигналов.
  2. Для колеблющихся рынков частота торгов может быть уменьшена за счет увеличения величины прорывов горизонтальных линий.
  3. Добавьте механизм короткой продажи, чтобы извлечь выгоду из снижающихся тенденций.
  4. Подумайте о динамической корректировке длины и количества горизонтальных линий для адаптации к различным рыночным условиям.

Резюме

Эта стратегия использует горизонтальные линии в качестве важных уровней поддержки и сопротивления и генерирует торговые сигналы с помощью прорывов линии. Преимущество заключается в том, что логика проста и проста в реализации, и она может хорошо улавливать тенденции. Однако недостатком является то, что она может переторговаться, генерировать ложные сигналы и может идти только долго, но не коротко. В будущем ее можно оптимизировать и улучшить путем объединения других индикаторов, снижения частоты торговли, добавления механизмов короткой продажи и динамической корректировки параметров.


/*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ı")



Больше