Эта стратегия основана на равнолинейной торговле, путем установления трех входных линий с плюсовыми и пустыми головами, для реализации многополосного двунаправленного открытия позиции, относится к стратегии отслеживания тенденции. Когда цена прорывает среднюю линию, по очереди открывает позиции, делая дополнительное открытие, для реализации раздельного входа через подвешенные листы.
Эта стратегия основана на прорыве средней линии для определения направления тренда. В частности, она получает среднее значение средней линии, рассчитывая средние значения цены открытия, цены закрытия, цены максимума, цены минимума и т. Д. Затем устанавливается многосторонняя линия входа выше средней линии, а под ней - пустая линия входа.
Количество ордеров, которые делают больше свободных позиций, постепенно увеличивается, и открытие позиций осуществляется поэтапно, путем установки повешенного листа. Например, входящая линия 1 запускает открытие 1 руки для получения большего количества свободных позиций, входящая линия 2 запускает увеличение 1 руки для хранения позиций, а входящая линия 3 запускает увеличение 1 руки для хранения позиций. Таким образом, можно распределить затраты на вход и снизить риск одноразового заказа.
Стратегия также включает в себя механизм компенсации. Когда размер позиции не равен нулю, то отслеживается стоп-лосс в соответствии с средней ценой, и если цена снова опустится ниже средней, то стоп-лосс будет закрыт. Это может блокировать часть прибыли и защитить средства.
В целом, эта стратегия использует в полной мере показатели средней линии, чтобы определить направление тенденции, максимизировать прибыльный диапазон с помощью многоуровневой входной линии, в то же время устанавливая риск контроля стоп-лосса, является типичной стратегией отслеживания тенденции.
Эта стратегия имеет следующие преимущества:
Используя среднюю линию, можно четко определить направление тенденции. Средняя линия может эффективно фильтровать рыночный шум, чтобы определить направление основных тенденций.
Многоуровневые входные линии, максимально используйте зоны для движения тренда. С помощью нескольких входных линий можно максимально запечатлеть всю зону движения тренда, расширить пространство для прибыли.
Открытие позиции в группах, снижение риска за одну позицию. Разделение входа на несколько входов позволяет распределить риск заказа, снизить среднюю стоимость хранения позиции.
Установка механизма компенсации убытков, эффективное управление рисками. С помощью компенсации убытков, можно быстро остановить убытки, когда цена снова опускается ниже средней линии, чтобы избежать чрезмерных потерь.
Стратегическая концепция понятна и понятна, параметры гибкие, могут быть оптимизированы для разных рынков.
Однако эта стратегия также несет в себе некоторые риски:
Вероятность ошибочного сигнала средней линии. Средняя линия оценивает задержку тенденции и может дать ошибочный сигнал.
Риск потери при обратном тренде. Стратегия предполагает тенденцию, и в случае обратного тренда, будет произведен большой убыток.
Слишком плотная линия входа увеличивает частоту сделок и затраты на скольжение.
Открытие позиций в группах увеличивает риск концентрации позиций. При чрезмерном количестве позиций риск концентрации.
Нерациональная установка стоп-пойнтов, возможно, преждевременная или слишком маленькая стоп-пойнты.
Соответствующие меры управления рисками:
Оптимизируйте параметры средних линий, выбирая подходящие средние циклические линии.
Следите за важными техническими показателями, оценивайте сигналы об обратном тренде и своевременно останавливайте убытки.
Настройка расстояния между игровыми полями, снижение частоты торгов.
Оптимизация размеров и пропорций позиций, контроль концентрационного риска.
Тестирование и оптимизация стоп-пойнтов, снижение риска стоп-пойнтов.
Эта стратегия может быть оптимизирована в следующих аспектах:
Испытание различных средних параметров и источников данных, выбор наилучшего среднего показателя для определения эффекта тренда.
Оптимизируйте пропорции между расстояниями и количеством позиций в многополосной входной линии, чтобы найти оптимальные параметры.
В сочетании с другими показателями в качестве фильтрующих условий, избегайте ошибочного сигнала равномерности. Например, MACD, RSI и т. Д.
Оптимизация позиции стоп-линий, также можно настроить стоп-пункт в соответствии с динамикой ATR.
Условия для закрытия всех позиций.
Параметры, которые позволяют оптимизировать стратегию в зависимости от рыночных периодов.
Функция динамической корректировки увеличения количества позиций и определения количества открытых позиций в зависимости от пропорции использования средств.
В целом, эта стратегия использует равнолинейную оценку направления тренда, основной источник прибыли, основанный на движении тренда. Благодаря многоуровневому входу и разделенному открытию позиций, можно эффективно удерживать тенденцию, расширять прибыльную зону. При этом устанавливается механизм остановки потерь для контроля риска.
/*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"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Robot WhiteBox Iceberg", shorttitle = "Robot WhiteBox Iceberg", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data")
short3 = input(true, title = "short 3")
short2 = input(true, title = "short 2")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
long2 = input(true, title = "long 2")
long3 = input(true, title = "long 3")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Variables
lots = 0.0
size = strategy.position_size
mult = 1 / syminfo.mintick
needtime = true
//MA
oc2 = (open + close) / 2
pcma = (highest(high, len) + lowest(low, len)) / 2
src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close
sma = sma(src, len)
ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult
//Levels
longline1 = 0.0
longline2 = 0.0
longline3 = 0.0
shortline1 = 0.0
shortline2 = 0.0
shortline3 = 0.0
longline1 := long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 := lots[1] == 0 ? long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close : longline2[1]
longline3 := lots[1] == 0 ? long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close : longline3[1]
shortline1 := short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 := lots[1] == 0 ? short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close : shortline2[1]
shortline3 := lots[1] == 0 ? short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close : shortline3[1]
//Lines
colorlong1 = long1 ? color.lime : na
colorlong2 = long2 ? color.lime : na
colorlong3 = long3 ? color.lime : na
colorshort1 = short1 ? color.red : na
colorshort2 = short2 ? color.red : na
colorshort3 = short3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3")
plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2")
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")
plot(longline2, offset = offset, color = colorlong2, title = "Long line 2")
plot(longline3, offset = offset, color = colorlong3, title = "Long line 3")
//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if ma > 0
lots := round(size / lot)
strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime))
lots := round(size / lot)
strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime))
lots := round(size / lot)
strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime))
lots := round(size / lot)
strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime))
lots := round(size / lot)
strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime))
lots := round(size / lot)
strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 and needtime))
if size > 0
strategy.entry("TPL", strategy.short, 0, limit = ma, when = needtime)
if size < 0
strategy.entry("TPS", strategy.long, 0, limit = ma, when = needtime)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("L1")
strategy.cancel("L2")
strategy.cancel("L3")
strategy.cancel("S1")
strategy.cancel("S2")
strategy.cancel("S3")
strategy.cancel("TPL")
strategy.cancel("TPS")