Краткосрочная стратегия прорыва канала


Дата создания: 2023-10-25 14:40:21 Последнее изменение: 2023-10-25 14:40:21
Копировать: 0 Количество просмотров: 674
1
Подписаться
1617
Подписчики

Краткосрочная стратегия прорыва канала

Обзор

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

Стратегический принцип

  1. Эта стратегия начинается с расчета максимальных и минимальных цен в течение определенного периода, чтобы построить верхний и нижний отрезки коридора.

  2. Если цены растут, то нужно сделать более широкий вход. Если цены падают, то нужно сделать более короткий вход.

  3. Использование мобильного стоп-контроля для управления рисками. Стоп-линия устанавливается как средняя линия в канале.

  4. Существует два варианта выхода: возвращение к средней линии и движущийся стоп. Первый обеспечивает быстрый вывод прибыли, второй - контроль риска.

  5. В зависимости от рыночных условий можно выбрать цикл каналов, скорректировать параметры, такие как стоп-лосс, для оптимизации стратегии.

Анализ преимуществ

  1. Операция проста и легко реализуема. Все, что нужно - это отслеживать отношение цены к каналу и открывать позиции по правилам.

  2. Торговля в соответствии с тенденцией, без риска обратного хода.

  3. Вход в здание должен быть четким и понятным, чтобы создать четкий сигнал.

  4. С хорошей прибыльностью, обычно получают довольно удовлетворительную прибыль.

  5. Настраиваемые параметры могут быть оптимизированы для разных рынков.

Анализ рисков

  1. Прорыв не обязательно будет успешным, есть риск быть пойманным.

  2. Канал требует определенного цикла формирования и не подходит для землетрясений.

  3. Если мы посмотрим на остановку в середине канала, мы увидим, что она может быть слишком консервативной, чтобы поддерживать тренд.

  4. Оптимизация параметров требует поддержки историческими данными.

  5. Механическая продажа и покупка прорывных точек может увеличить количество сделок и стоимость пробега.

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

  1. Оценить эффективность различных циклических параметров и выбрать оптимальный цикл прохода.

  2. Испытание регрессионной средней линии остановки и движущейся остановки, выбор более подходящего механизма выхода.

  3. Оптимизируйте степень остановки, чтобы снизить вероятность того, что остановка будет вызвана.

  4. Присоединяйтесь к фильтрации трендов, чтобы избежать неуместных прорывных сделок.

  5. Посмотрите на увеличение позиций, но с учетом рисков.

Подвести итог

Эта стратегия в целом является более зрелой краткосрочной стратегией прорыва. У нее есть четкие правила входа, есть меры контроля риска и она работает хорошо.

Исходный код стратегии
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 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/
// Strategy testing and optimisation for free Bitmex trading bot 
// © algotradingcc 

//@version=4
strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075)

//Options
buyPeriod = input(13, "Channel Period for Long position")
sellPeriod = input(18, "Channel Period for Short position")
isMiddleExit = input(true, "Is exit on Base Line?")
takeProfit = input(46, "Take Profit (%) for position")
stopLoss = input(9, "Stop Loss (%) for position")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriod)
BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod)

SellEnter = lowest(sellPeriod)
SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits & Stop Loss
TP = 0.0
SL = 0.0
if strategy.position_size > 0
    TP := strategy.position_avg_price*(1 + takeProfit/100)
    SL := strategy.position_avg_price*(1 - stopLoss/100)

if strategy.position_size > 0 and SL > BuyExit
    BuyExit := SL
    
if strategy.position_size < 0
    TP := strategy.position_avg_price*(1 - takeProfit/100)
    SL := strategy.position_avg_price*(1 + stopLoss/100)

if strategy.position_size < 0 and SL < SellExit
    SellExit := SL
    
    
// Long Position    
if timeRange and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, stop = BuyEnter)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0)


// Short Position
if timeRange and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, stop = SellEnter)
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TP, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()