Это настраиваемая многолинейная торговая стратегия для биткоина. Она позволяет вам делать больше или меньше в зависимости от различных торговых дней недели. Цены могут иметь тенденцию двигаться в одном или другом направлении в разные торговые дни недели. Эта стратегия позволяет вам тестировать различные торговые дни в течение ряда дат, чтобы использовать это.
Пожалуйста, убедитесь, что вы используете график дат при просмотре показателей и истории торгов, чтобы убедиться, что сценарий работает так, как ожидается, и что вы получаете как можно больше исторических данных из Trading View.
Основная логика этой стратегии заключается в том, что пользователь может выбирать между многократными сделками в день в течение недели, пустыми сделками или без сделки.
Во-первых, он позволяет пользователям устанавливать диапазон дат для отсчета, включая начало месяца, даты, года и окончание месяца, даты, года.
Затем он использует набор временных рамок для хранения цифровых представлений каждого дня недели, от 0 в воскресенье до 6 в субботу.
Другой массив timeframes_options используется для хранения выбора ежедневно совершать многозадачные, пустые или никакие сделки. Это устанавливается с помощью одного из входных параметров.
В цикле for стратегия проверяет, соответствует ли текущий торговый день какому-либо из дней в массиве временных рамок. Если он соответствует, и опция отличается от предыдущего дня, сначала закрыть все невыполненные позиции.
Если опция не является однородной, то открывается позиция в соответствующем направлении в зависимости от выбранного многого или пустого.
Таким образом, стратегия может совершать многооборотные сделки в течение установленного периода времени, в зависимости от настроек на каждый день недели.
Основным преимуществом этой стратегии является предоставление высоко настраиваемой многооборотной торговли. Пользователи могут свободно выбирать, в каком направлении торговать каждый день недели.
В отличие от фиксированной еженедельной торговой стратегии, эта стратегия может быть гибко адаптирована. Если результаты в определенные дни не являются оптимальными, можно легко изменить только торговлю в другие дни.
Дата отслеживания также очень гибкая, и вы можете протестировать любой пользовательский период времени, чтобы увидеть, какие комбинации дат работают лучше всего.
Логика транзакций очень ясна, проста, легко понятна и изменяется. Пользователи могут настраивать параметры без необходимости программирования.
Стратегия также автоматически ликвидирует непогашенные позиции при ежедневном изменении направления, чтобы избежать ненужного риска.
Основная опасность этой стратегии заключается в том, что выбор ежедневных сделок, установленный пользователем, не всегда подходит для всех диапазонов дат.
Например, многодневный рабочий выходной может оказаться эффективным в определенный период времени, но может потерпеть неудачу в другой период времени.
Поэтому необходимо тщательно тестировать различные диапазоны дат, а не полагаться на одноразовые результаты. Параметры должны быть скорректированы с учетом конкретных рыночных условий.
Другой риск заключается в том, что при ежедневном изменении направления не удастся своевременно прекратить ликвидацию. Это может привести к увеличению убытков. Однако стратегия пытается смягчить эту проблему путем автоматического ликвидации.
В целом, стратегия зависит от оптимизации параметров и требует достаточного количества испытаний, чтобы найти комбинацию параметров, подходящих для различных рыночных условий.
Эта стратегия может быть оптимизирована в следующих аспектах:
Добавление логики стоп-лорда при ежедневном изменении направления, установка движущегося стоп-лорда при выигрыше позиции, уменьшение отступления.
Добавление фильтра, сигнализирующего о том, что цены пробивают высокие или низкие точки в течение дня, чтобы избежать повторных торгов без тренда.
Снижение размера позиции в период высокой волатильности и увеличение позиции в период низкой волатильности позволяет контролировать риск.
Выбор дня торгов включает в себя машинное обучение, которое определяет вероятность ежедневных сделок на основе исторических данных и генерирует динамическое ежедневное направление.
Добавление логики обработки внезапных событий, таких как приостановка торговли в случае крупных финансовых событий, чтобы избежать подставки.
Эта стратегия обеспечивает высокую гибкость в выборе дневного направления. Пользователь может свободно комбинировать тесты, чтобы найти оптимальные параметры. Однако эта стратегия имеет высокие требования к оптимизации и требует большого количества тестов, чтобы найти настройки, подходящие для разных рынков. Добавление методов оптимизации, таких как стоп-лост, фильтры и динамическая корректировка, может снизить риск и повысить стабильность.
/*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)))