
Эта стратегия является стратегией остановки убытков, основанной на двух движущихся средних линиях. Она использует две движущиеся средние линии, одну как основной среднюю и одну как остановку убытков.
Эта стратегия использует функцию sma, которая вычисляет простую скользящую среднюю длины len в качестве основной средней линии ma。 затем вычисляет многоголовую стоп-линию elpercent и пустую стоп-линию espercent на основе пользовательского ввода.
el = ma + (ma * elpercent / 100) es = ma + (ma * espercent / 100)
где elpercent и espercent соответственно представляют собой проценты отклонения вверх и вниз от основной средней.
Таким образом, получается три линии: основная средняя линия ma, многоголовая стоп-линия el, пустая стоп-линия es.
В этой стратегии используется следующая логика:
Если цена закрытия превышает линию стоп-овес el, то открывается позиция; если цена закрытия ниже линии стоп-овес es, то закрывается позиция.
Если цена закрытия ниже верхней стоп-линии es, открывается пустота; если цена закрытия выше верхней стоп-линии el, открывается пустота.
Используя двойную подвижную среднюю линию для установки стоп-стоп, можно эффективно контролировать риск.
Основная средняя длина len и процент отклонения elpercent, espercent могут быть настроены, могут быть скорректированы параметры для различных рынков, адаптивность высока.
Применение механизма остановки убытков позволяет своевременно прекратить убытки и избежать их дальнейшего расширения.
Стратегическая концепция проста, понятна, легко понятна и подходит для начинающих.
Это позволяет использовать в полной мере возможности двухстороннего взаимодействия.
Риск обратной совместимости данных. Стратегия перемещения равной линии имеет высокую совместимость с историческими данными, а эффективность может быть разной. Решение заключается в проверке на реальном рынке в сложных переменных рынках и корректировке параметров в зависимости от ситуации на реальном рынке.
Риск, связанный с тем, что стоп-пойнт находится слишком близко к основной средней линии. Если стоп-пойнт установлен слишком близко к основной средней линии, он может быть вызван краткосрочными ценовыми колебаниями. Стоп-пойнт может быть соответствующим образом увеличен, чтобы избежать этого.
Финансовое давление, вызванное двусторонними сделками. При одновременном проведении ликвидных операций необходимо иметь достаточное количество средств в качестве залога.
Оптимизация параметров рискованна. Параметры могут быть настроены по-разному в зависимости от рыночных условий, поэтому для оптимизации параметров требуется время.
Можно рассмотреть возможность добавления дополнительных показателей для определения рыночных тенденций и повышения эффективности принятия решений. Например, добавление количественных показателей, показателей колебаний и т. д.
Можно изучить автоматическую оптимизацию длины движущейся средней линии для параметров LEN и STOP, чтобы она могла быть скорректирована в соответствии с изменениями рынка.
Можно добавлять фильтры на торговые сорта, торгуя только теми сортами, которые имеют тенденцию.
Можно рассмотреть возможность изменения метода остановки на отслеживание остановки и корректировку остановки в реальном времени в зависимости от цены.
Можно создать систему оценки, оптимизирующую параметры, используя результаты обратной проверки для автоматического поиска оптимальной комбинации параметров.
Общая концепция стратегии ясна и понятна, она эффективно контролирует риск, используя двойную подвижную среднюю линию для остановки. Стратегия обладает такими преимуществами, как регулируемость параметров и адаптивность, но также следует обратить внимание на такие проблемы, как адаптация обратных данных и настройка расстояния остановки.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Robot WhiteBox StopMA", shorttitle = "Robot WhiteBox StopMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
len = input(50)
src = input(ohlc4)
elpercent = input(5.0, minval = 0, maxval = 100, title = "Shift long, %")
espercent = input(-5.0, minval = -100, maxval = 0, title = "Shift short, %")
showlines = input(true, defval = true, title = "Show lines")
showbg = input(true, defval = true, title = "Show background")
//Levels
ma = sma(src, len)
el = ma + ((ma / 100) * elpercent)
es = ma + ((ma / 100) * espercent)
//Lines
colel = showlines ? color.lime : na
colma = showlines ? color.blue : na
coles = showlines ? color.red : na
plot(el, color = colel, offset = 1)
plot(ma, color = colma, offset = 1)
plot(es, color = coles, offset = 1)
//Background
trend = 0
trend := high > el[1] ? 1 : low < es[1] ? -1 : trend[1]
colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(colbg, transp = 80)
//Trading
if ma > 0
strategy.entry("Long", strategy.long, needlong ? na : 0, stop = el)
strategy.entry("Short", strategy.short, needshort ? na : 0, stop = es)