Эта стратегия - это стратегия торговли, основанная на множестве ордеров, устанавливающих лимит. Она устанавливает различное количество ордеров на покупку или продажу в зависимости от того, превышает ли цены различные ордеры.
Эта стратегия использует среднелинейный индикатор для определения направления тренда. В частности, количество ордеров на установление лимита на основе того, превзошла ли цена верхнюю среднюю линию из 3 строк. Количество ордеров на установление лимита на отсутствие на основе того, превзошла ли цена нижнюю среднюю линию из 3 строк.
Таким образом, чем сильнее ценовая тенденция, тем больше сопутствующих лимитных ордеров; когда цена появляется обратный сигнал, проводится обратное открытие позиции.
В целом стратегия формирует пирамидальный формат открытия позиций в сочетании с прорывным тихим положением. Целью является открытие позиций по многократным средним ценам, снижение затрат; остановка средней осевой линии, контроль риска.
Эта стратегия имеет следующие преимущества:
Используйте среднюю линию, чтобы оценить тенденцию, простой и интуитивный.
Пирамидальные позиции позволяют получить более высокую стоимость в начале тренда.
Среднеосевая равновесная остановка, может быть своевременно остановлена, чтобы контролировать риск.
Позиции по лимитированной цене позволяют избежать проскальзывания.
Настраиваемые параметры для различных сортов.
Явная структура, легкость понимания и расширения.
Также существуют следующие риски:
Промежуточные показатели могут привести к ошибочным выводам.
Неудача билета может привести к пропуску времени входа в зал.
Среднеосевая сторона может быть слишком толстой, чтобы пробиться. Судите сами.
Неправильная настройка параметров может привести к гиперпозиции пирамиды.
Недостаточный диапазон времени отслеживания может привести к пересоответствию кривой.
Не учитывается фактор комиссионных.
Решение риска:
Параметры подтверждения и оптимизации в сочетании с другими показателями.
Установите срок действия и измените цену лимита.
Настройка остановки на средней оси, или добавление логики прорыва.
Оптимизация параметров, оценка прибыли и убытка.
Расширение временного диапазона отзывов, многорыночные отзывы.
Добавление платы и логики скольжения.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров для большего количества сортов.
Добавление фильтров для подтверждения других показателей, таких как MACD, KDJ и т. д.
Добавление логики остановки на средней оси равновесия.
Динамическая коррекция коэффициента открытия позиции и позиции стоп-лосса.
Оптимизация ценовых ограничений, улучшение затрат. Например, установка цены в зависимости от колебаний.
Повышение эффективности управления расходами и предотвращение чрезмерного возврата.
Тестирование эффективности параметров различных сортов, создание пула параметров.
Стратегия открывает позиции с помощью установки пирамиды лимитных цен с целью получения оптимальных затрат. Используется стоп-линия для контроля риска. Структура стратегии проста, ясна, легко понятна и расширяется. Однако, можно улучшить стратегию, вводя другие показатели, оптимизируя параметры, улучшая логику лимитных цен и т. Д.
/*backtest
start: 2022-09-15 00:00:00
end: 2023-09-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Robot WhiteBox MultiMA", shorttitle = "Robot WhiteBox MultiMA", 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
size = strategy.position_size
mult = 1 / syminfo.mintick
needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
//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 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 = long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close
longline3 = long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close
shortline1 = short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 = short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close
shortline3 = short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close
//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]
lots = 0.0
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)
if size < 0
strategy.entry("TPS", strategy.long, 0, limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()