
Эта стратегия основана на технических показателях, таких как движущиеся средние и объем сделок, и разработана для количественной стратегии, которая предотвращает падение на длинной линии. Если цена акции находится на 20-й линии, и объем покупок в этот день больше, чем объем продаж, и больше, чем средний объем сделок за последние n дней, считается, что рынок находится в состоянии плюсового состояния, и покупается; если цена акции пошла с рельса, и объем продаж в этот день больше, чем объем покупок, и больше, чем средний объем сделок за последние n дней, считается, что рынок находится в состоянии пустого состояния, и продается.
Эта стратегия основана на двух показателях:
Двойная средняя линия: рассчитывается 20-я и 60-я линии, когда 20-я линия пересекает 60-ю линию, рынок считается в состоянии потери; когда 20-я линия пересекает 60-ю линию, рынок считается в состоянии падения.
Количество сделок: рассчитывается количество покупок и продаж в день, если количество покупок больше, чем количество продаж, и больше, чем средний объем сделок за последние n дней, то сделка рассматривается как многоочередная; если количество продаж больше, чем количество покупок, и больше, чем средний объем сделок за последние n дней, то сделка рассматривается как пустая.
Конкретные стратегии и логика торгов следующие:
Большое вхождение: когда цена закрытия находится на 20-й линии, и объем покупок в этот день больше, чем объем продаж и средний объем сделок за последние n дней, считается, что рынок находится в состоянии большого просмотра. На основе колебаний рассчитывается полоса бурин, если цена закрытия находится между средней и нижней полосой бурин.
Пустой вход: когда цена закрытия падает вниз, и объем продаж в тот день больше, чем объем покупок и средний объем сделок за последние n дней, считается, что рынок находится в состоянии пустоты.
Стоп-стоп и стоп-лосс: установление разумных стоп-стоп и стоп-лосс, фиксирующих прибыль или уменьшение убытков. Стоп-стоп - это когда цена акции значительно выросла на 5% по сравнению с начальной ценой; стоп-стоп - это когда убыток достиг 10%; или стоп-стоп - это когда цена акции снизилась после недавнего нового максимума.
Эта стратегия имеет следующие преимущества:
В сочетании с двумя средними линиями и показателями объема торгов, избежана слепая зона суждения по одному техническому показателю.
При использовании различных параметров, Brin Belt определяет конкретную цену сделки, что делает вход более точным.
Стоп-стоп-стратегия разумна, помогает блокировать прибыль и контролировать риски.
Отчетная эффективность, стабильная прибыль, практически применима к количественным сделкам.
Однако эта стратегия также несет в себе некоторые риски:
Двойная равнолинейная стратегия легко приводит к ошибочным сигналам и требует фильтрации в сочетании с количественными и энергетическими показателями.
Неправильная настройка параметров Брин-полосы может привести к слишком частому или редкому доступу.
Неправильная установка фиксированного стоп-стоп может повлиять на стратегическую прибыль.
Для проверки требуется большое количество исторических данных, а также возможны случайные потери в дискетах.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров равнолинейной системы, поиск оптимальных комбинаций равнолинейных.
Оптимизация параметров Брин-полосы для более точного входа.
Динамически корректируйте точку остановки и убытка, устанавливая разумную долю прибыли и убытка в зависимости от рыночных условий.
Добавление других технических показателей, таких как MACD, KD и т.д., повышает стратегическую точность.
При помощи методов машинного обучения автоматически находят оптимальные параметры, чтобы сделать стратегию более агрессивной.
В целом, эта стратегия является очень практичной количественной торговой стратегией, хорошо отражает результаты, ее легко реализовать, риск контролируется, это стабильная стратегия, подходящая для использования в реальном мире, и ее следует изучить. Конечно, есть еще много возможностей для оптимизации стратегии, и ожидается, что ее улучшат еще больше профессионалов в количественной торговле.
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
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/
// © KAIST291
//@version=4
strategy("prototype",initial_capital=0.01,commission_type=strategy.commission.percent,commission_value=0.1, format=format.volume, precision=0,overlay=true)
// SETTING //
length1=input(1)
length3=input(3)
length7=input(7)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=(close>Supper and BV>SV and BV>Davgvol)
bull2=(close>ma20 and BV>SV and BV>Davgvol)
bux =(close<Supper and close>Slower and volume<Wavgvol)
bear=(close<Slower and close<lower and SV>BV and SV>Wavgvol)
hi=highest(exit,10)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>ma3 and ma20>ma60 and rsi<70)
strategy.entry("Long",strategy.long,0.1)
if (strategy.position_avg_price*1.05<close)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.999<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.997<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.995<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
strategy.close("Long",0.1)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////