Эффективная стратегия торговли количеством

Автор:Чао Чжан, Дата: 2024-02-01 15:09:06
Тэги:

img

Обзор

Эта стратегия в основном сочетает в себе 5-дневный индикатор RSI и 200-дневную скользящую среднюю для формирования сигналов решения о торговле, которая принадлежит к стратегии комбинации технических индикаторов. Его основной принцип торговли заключается в следующем: когда цена достигает зоны перекупа/перепродажи, она сигнализирует о продаже; когда цена падает до зоны перепродажи, она сигнализирует о покупке.

Принцип стратегии

Эта стратегия в основном сочетает в себе 5-дневный индикатор RSI и 200-дневную скользящую среднюю для оценки перекупленной/перепроданной зоны, где цены идут, и формирует торговые решения:

  1. 5-дневный индикатор RSI определяет зону перекупки/перепродажи, в которой цены идут. Линия перекупки устанавливается на 72 и зона перепродажи составляет 30. Когда индикатор RSI проходит через 30 сверху вниз, генерируется сигнал покупки; когда индикатор RSI падает сверху вниз ниже 72, генерируется сигнал продажи.

  2. 200-дневная скользящая средняя определяет направление средне- и долгосрочной тенденции. Когда цена ниже 200-дневной скользящей средней, это нисходящая фаза цены; когда цена выше 200-дневной скользящей средней, это восходящая фаза цены.

  3. Комбинируя суждение 1 и 2, эта стратегия продает, когда 5-дневный индикатор RSI перекуплен и опускается ниже 72, и покупает, когда 5-дневный RSI опускается ниже 30 и цена ниже 200-дневной скользящей средней.

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

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

  2. 200-дневная скользящая средняя определяет направление основного тренда, чтобы избежать противоположных операций.

  3. Максимальное количество позиций может быть установлено для контроля рисков.

  4. Стратегия имеет большое пространство для оптимизации параметров, регулируемых параметров RSI и параметров скользящей средней.

  5. Относительно небольшой риск ретраксера может эффективно контролировать максимальный ретраксер стратегии.

Риски стратегии

  1. При использовании только показателей RSI и скользящей средней, сигнал стратегии может быть нестабильным, с риском длительных и коротких потерь на волатильных рынках.

  2. Необходимо оптимизировать и протестировать параметры RSI и скользящие средние параметры для достижения лучших результатов стратегии.

  3. Другие индикаторы или модели могут быть введены для оптимизации сигнала стратегии, такие как внедрение индикаторов волатильности, суждения машинного обучения и т. Д.

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

  1. Используйте больше комбинаций индикаторов для суждения, таких как MACD, KD, индикаторы волатильности и т.д.

  2. Увеличьте модели машинного обучения, такие как LSTM для оценки стабильности торговых сигналов.

  3. Увеличить количественные факторы, такие как изменения объема торговли, направления потока капитала и другие оценки факторов капитала.

  4. Оптимизируйте параметры стратегии, такие как параметры RSI, параметры скользящей средней и т.д.

  5. Оптимизировать механизмы стоп-лосса, такие как перемещение стоп-лосса, время стоп-лосса и т.д.

Резюме

Эта стратегия в основном использует комбинацию 5-дневного индикатора RSI и 200-дневного скользящего среднего показателя для оценки перекупленной/перепроданной области цен и формирования торговых сигналов. Она относится к стратегии комбинации технических индикаторов. Сигнал стратегии относительно ясен, а максимальный риск ретрекшенса относительно мал. Но он может быть дополнительно оптимизирован с помощью комбинаций нескольких индикаторов и суждений машинного обучения для улучшения результатов стратегии.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 3m
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/
// ©chewyScripts.

//@version=5
strategy("96er RSI+200EMA Strategy + Alerts", overlay=true)
// This works best on a small account $100, with 50% of equity and up to 10 max open trades. 
// 96% Profitable, turns $100 into $350 in 1 month. very few losses. super happy with it.
// So far it triples the account on a 1m chart in 1 month back testing on the SEI-USD pair.
// I did not test on FX pairs or other instruments.
// had some issues with the inputs not working so had to hard code some, also the lastClose var sometimes breaks and starts following every candle, not sure why.

in_r1 = input.int(5,"5 day input or RSI1")
in_openOrders = input.int(3,"max open orders")

in_lowerRSI = input.int(30,"RSI Lower")
in_upperRSI = input.int(72,"RSI Upper ")

in_emaperiod = input.int(200,"EMA Period")

in_buybreakout = input.int(50,"Buy breakout range")

in_buyTP = input.float(1.05,"Buy TP: 1+TP %, .05 seems to work well.")
in_sellTP = input.float(0.9850, "Sell TP: 1-TP%. .025 seems to work well. ")

simple int rsi5 = in_r1

// 3 rsi strategy , when all of them are overbought we sell, and vice versa
rsi7 = ta.rsi(close,rsi5)
lastClose = request.security(syminfo.tickerid, "D", close, lookahead = barmerge.lookahead_on)
rsi3 = ta.rsi(close[5],rsi5)

ma = ta.ema(close,in_emaperiod)

plot(rsi7,"5 Day RSI",color.red)
plot(lastClose,"Yesterdays Close",color.green)
plot(rsi3,"Previous 5th candles RSI",color.purple)


// sell condition
//sell = ta.crossunder(rsi7,70) and ta.crossunder(rsi14,70) and ta.crossunder(rsi21,70)

//buy condition
//buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and rsi3 <= in_upperRSI and strategy.opentrades < in_openOrders
//sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and rsi3 >= in_lowerRSI3 and strategy.opentrades < in_openOrders

buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and close < lastClose and strategy.opentrades < in_openOrders
sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and close > lastClose and strategy.opentrades < in_openOrders


var lastBuy = close 
var lastSell = close 

if (buy)
    strategy.entry("BUY", strategy.long)
    lastBuy := close 
    alert("Buy")

if ((close >= lastBuy*in_buyTP ) or rsi7 > in_buybreakout and close >= lastClose and (close >= lastClose*in_buyTP or close >= lastBuy*in_buyTP ) )
    strategy.close("BUY", "BUY Exit")
    alert("Buy Exit")
    
if (sell)
    strategy.entry("SELL", strategy.short)
    lastSell := close 
    alert("Sell")

if ( close < ma and (close <= lastSell*in_sellTP ) or (close < lastClose*in_sellTP) )
    strategy.close("SELL", "Sell Exit")
    alert("Sell Exit")


Больше