Тенденция прорыва в соответствии со стратегией

Автор:Чао Чжан, Дата: 2023-12-08 17:16:34
Тэги:

img

Обзор

Эта стратегия отслеживает ценовую тенденцию криптовалют, устанавливая высокие и низкие цены.

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

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

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

В частности, основная логика стратегии заключается в следующем:

  1. Записывать самые высокие и самые низкие цены за определенный период (связуемые)
  2. Судить, если фактическая торговая цена выше, чем самая высокая цена
    1. Если выше, то есть длинная возможность, открыть длинную позицию на основе уровня цены, установленного параметром ENTRY
    2. Если фактическая торговая цена ниже самой низкой цены, существует возможность открыть короткую позицию на основе уровня цен, установленного параметром EXIT
  3. После открытия длинной позиции закрыть ее, когда цена опустится ниже уровня, установленного параметром EXIT
  4. После открытия короткой позиции, закрыть ее, когда цена поднимется выше уровня, установленного параметром ENTRY

Через эту логическую петлю он может улавливать восходящие и нисходящие тенденции цены и достигать следующего тренда.

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

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

Кроме того, эта стратегия очень подходит для количественной торговли и может легко достичь автоматизированного размещения заказов.

Наконец, эта стратегия также может максимизировать доходность путем корректировки параметров.

Риски

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

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

Наконец, эта стратегия слишком чувствительна к краткосрочному шуму рынка, который может генерировать неправильные торговые сигналы.

Руководство по оптимизации

Следующие аспекты могут быть дополнительно оптимизированы для этой стратегии:

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

  2. Добавьте фильтры технических индикаторов, такие как скользящая средняя, KDJ, чтобы судить об общем тренде, чтобы избежать чрезмерной торговли из-за краткосрочного шума.

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

  4. Используйте машинное обучение для обучения оптимальных параметров. Получите оптимальные настройки ENTRY и EXIT для текущей рыночной среды посредством массивного обучения историческим данным.

Заключение

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

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

В целом, это простая и эффективная стратегия, подходящая для количественной и автоматизированной торговли.


/*backtest
start: 2022-12-01 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/
// © JstMtlQC

//@version=4
strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)


/////////////// INPUT ENTRY EXIT
entry= input(100, "ENTRY H/L")
exit= input(50, "EXIT H/L")

/////////////// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")

/////////////// Backtest Setting
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false 

/////////////// BUY OPEN PLOT
highestpricelong = highest(high,entry)[1]
plot(highestpricelong, color=color.green, linewidth=2)

/////////////// BUY CLOSE PLOT
lowestpricelong = lowest(high,exit)[1]
plot(lowestpricelong, color=color.green, linewidth=2)

/////////////// SHORT OPEN PLOT
lowestpriceshort = lowest(low,entry)[1]
plot(lowestpriceshort, color=color.red, linewidth=2)

/////////////// SHORT CLOSE PLOT
highestpriceshort = highest(low,exit)[1]
plot(highestpriceshort, color=color.red, linewidth=2)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CONDITION LONG SHORT //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// SHORT 

entryshort= crossunder(close, lowestpriceshort)
exitshort= crossover(close,highestpriceshort)

/////////////// LONG 

exitlong= crossover(close, lowestpricelong)
entrylong= crossover(close,highestpricelong)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// LONG and SHORT ORDER //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// LONG 

if (entrylong)
    strategy.entry("LongEntry", strategy.long, when = window())
if (exitlong or entryshort)
    strategy.close("LongEntry", when=window())

/////////////// SHORT 

if (entryshort)
    strategy.entry("short", strategy.short, when = window())
if (exitshort or entrylong)
    strategy.close("short", when=window())



Больше