Ежедневные торговые стратегии


Дата создания: 2023-09-26 20:49:44 Последнее изменение: 2023-09-26 20:49:44
Копировать: 0 Количество просмотров: 611
1
Подписаться
1617
Подписчики

Краткое содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Добавление логики стоп-лорда при ежедневном изменении направления, установка движущегося стоп-лорда при выигрыше позиции, уменьшение отступления.

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

  3. Снижение размера позиции в период высокой волатильности и увеличение позиции в период низкой волатильности позволяет контролировать риск.

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

  5. Добавление логики обработки внезапных событий, таких как приостановка торговли в случае крупных финансовых событий, чтобы избежать подставки.

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

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

Исходный код стратегии
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 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/

//@version=4
// strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)

frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")

tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")

timeframes = array.new_int(7, 1)
timeframes_options = array.new_string(7, 'None')

array.set(timeframes,0,7)
array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday'))
array.set(timeframes,1,1)
array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday'))
array.set(timeframes,2,2)
array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday'))
array.set(timeframes,3,3)
array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday'))
array.set(timeframes,4,4)
array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday'))
array.set(timeframes,5,5)
array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday'))
array.set(timeframes,6,6)
array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday'))



for i = 0 to array.size(timeframes) - 1
    
    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        strategy.close_all()

    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        if array.get(timeframes_options, i) == 'Long'
            strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
        else if array.get(timeframes_options, i) == 'Short'
            strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))