Стратегия высокой/низкой криптовалюты, основанная на нескольких показателях

Автор:Чао Чжан, Дата: 2023-12-29 14:16:16
Тэги:

img

Обзор

Эта стратегия является стратегией высокого / низкого уровня, подходящей для рынков криптовалют. Она интегрирует MACD, PSAR, ATR, Elliott Wave и другие множество индикаторов для торговли в более высокие временные рамки, такие как 1 час, 4 часа или 1 день. Преимущество этой стратегии заключается в высоком соотношении риска и вознаграждения со средним коэффициентом прибыли от 1,5 до 2,5.

Логика стратегии

Торговые сигналы этой стратегии исходят из высоких/низких уровней цен и составных суждений нескольких индикаторов.

  1. Судить, есть ли диапазон высокого/низкого уровня, сформированный последовательными более высокими максимумами или более низкими минимумами на графике цен.

  2. Проверьте уровень гистограммы MACD.

  3. Проверьте индикатор PSAR на направление тренда.

  4. Проверьте направление тренда на основе ATR и MA.

  5. Подтвердите направление тренда с помощью индикатора волны Эллиота.

Если все 5 условий указывают в одном направлении, генерируются длинные или короткие сигналы.

Преимущества

  1. Высокое соотношение риска и вознаграждения до 1:30.

  2. Высокий средний коэффициент прибыли, обычно между 1,5 и 2,5.

  3. Сочетание нескольких показателей помогает эффективно отфильтровывать ложные прорывы.

Риски

  1. Относительно низкий показатель победы около 10-20%.

  2. Существуют потенциальные риски сокращения объемов.

  3. На показатели могут влиять рыночные режимы.

  4. Нужна хорошая психологическая выносливость.

Соответствующие меры:

  1. Увеличьте капитал, чтобы сбалансировать процент выигрыша.

  2. Установите строгий стоп-лосс для каждой сделки.

  3. Корректировать параметры на основе различных рынков.

  4. Укрепить психологию и контролировать размеров позиций.

Руководство по оптимизации

  1. Тестные параметры, основанные на различных крипто и рынках.

  2. Добавьте стоп-лосс и прибыль, чтобы оптимизировать управление деньгами.

  3. Увеличьте процент побед с помощью методов машинного обучения.

  4. Добавьте фильтр социального настроения для торговых сигналов.

  5. Рассмотрим подтверждение в нескольких временных рамках.

Заключение

В заключение, это агрессивная стратегия торговли криптовалютами с высоким риском и высокой доходностью. Ее преимущество заключается в высоком соотношении вознаграждения риска и факторе прибыли. Основные риски связаны с относительно низким уровнем выигрыша, который требует сильной психологии.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21

//@version=4
strategy("Crypto strategy high/low", overlay=true)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
//sar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)


// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

CCI = input(20)
ATR = input(5)
Multiplier=input(1,title='ATR Multiplier')
original=input(true,title='original coloring')
thisCCI = cci(close, CCI)
lastCCI = nz(thisCCI[1])
bufferDn= high + Multiplier * sma(tr,ATR)
bufferUp= low - Multiplier * sma(tr,ATR)
if (thisCCI >= 0 and lastCCI < 0) 
    bufferUp := bufferDn[1]
if (thisCCI <= 0 and lastCCI > 0) 
    bufferDn := bufferUp[1]

if (thisCCI >= 0)
    if (bufferUp < bufferUp[1])
        bufferUp := bufferUp[1]
else
    if (thisCCI <= 0)
        if (bufferDn > bufferDn[1])
            bufferDn := bufferDn[1]
x=0.0
x:=thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1]
swap=0.0

swap:=x>x[1]?1:x<x[1]?-1:swap[1]

swap2=swap==1?color.lime:color.red
swap3=thisCCI >=0 ?color.lime:color.red
swap4=original?swap3:swap2

//elliot wave
srce = input(close, title="source")
sma1length = input(5)
sma2length = input(35)
UsePercent = input(title="Show Dif as percent of current Candle", type=input.bool, defval=true)
smadif=iff(UsePercent,(sma(srce, sma1length) - sma(srce, sma2length)) / srce * 100, sma(srce, sma1length) - sma(srce, sma2length))
col=smadif <= 0 ? color.red : color.green

longC = high > high[1] and high[1] > high[2] and close[2] > high[3] and hist > 0 and uptrend and smadif < 0 and swap4==color.lime 
//longC = high > high[1] and high[1] > high[2] and high[2] > high[3] and high[3] > high[4] and close[4] > high[5]
shortC = low < low[1] and low[1] < low[2] and close[2] < low[3] and hist < 0 and not uptrend and  smadif > 0 and swap4==color.red 
//shortC = low < low[1] and low[1] < low[2] and low[2] < low[3] and low[3] < low[4] and close[4] < low[5]

tp=input(0.15, title="tp")
sl=input(0.005, title="sl")


strategy.entry("long",1,when=longC)
strategy.entry("short",0,when=shortC)

strategy.exit("x_long", "long" ,loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick , alert_message = "closelong")
//strategy.entry("short",0, when= loss = close * sl / syminfo.mintick)

strategy.exit("x_short", "short" , loss = close * sl / syminfo.mintick, profit  = close * tp / syminfo.mintick,alert_message = "closeshort")
//strategy.entry("long",1, when = loss = close * sl / syminfo.mintick)

//strategy.close("long",when= hist < 0)
//strategy.close("short", when= hist > 0)

Больше