
Artikel ini menganalisis strategi perdagangan kuantitatif yang dibangunkan oleh Ravikant_sharma berdasarkan purata bergerak pelbagai indeks (EMA) dan indeks relatif lemah (RSI). Strategi ini menilai nilai melalui persilangan EMA dan RSI dalam tempoh yang berbeza, mengenal pasti trend harga, menentukan masa masuk dan keluar.
Strategi menggunakan 5 EMA yang berbeza, termasuk garis 9, 21, 51, 100, dan 200. Hanya 4 EMA pertama yang digambarkan dalam kod. Parameter RSI ditetapkan sebagai 14.
Strategi untuk membuka lebih banyak kedudukan apabila salah satu daripada syarat-syarat berikut dipenuhi:
Ia memerlukan RSI lebih besar daripada 65 untuk menunjukkan trend menaik yang kuat.
Apabila salah satu daripada syarat-syarat berikut dipenuhi, strategi keluar dari kedudukan rata:
Ini adalah strategi trend tracking yang tipikal, dengan kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Strategi ini juga boleh dioptimumkan dalam beberapa arah:
Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang boleh dipercayai dan mudah dilaksanakan. Ia menggunakan EMA pelbagai kitaran untuk menentukan arah trend, dan kemudian digabungkan dengan RSI memfilter isyarat palsu, untuk mengoptimumkan parameter dan mengoptimumkan model berdasarkan kesan pengukuran yang lebih baik.
/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 3h
basePeriod: 15m
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/
// © Ravikant_sharma
//@version=5
strategy('new', overlay=true)
start = timestamp(1990, 1, 1, 0, 0)
end = timestamp(2043, 12, 12, 23, 59)
ema0 = ta.ema(close, 9)
ema1 = ta.ema(close, 21)
ema2 = ta.ema(close, 51)
ema3 = ta.ema(close, 100)
ema4 = ta.ema(close, 200)
rsi2=ta.rsi(ta.sma(close,14),14)
plot(ema0, '9', color.new(color.green, 0))
plot(ema1, '21', color.new(color.black, 0))
plot(ema2, '51', color.new(color.red, 0))
plot(ema3, '200', color.new(color.blue, 0))
//plot(ema4, '100', color.new(color.gray, 0))
//LongEntry = ( ta.crossover(ema0,ema3) or ta.crossover(ema0,ema2) or ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) //
LongEntry=false
if ta.crossover(ema0,ema1)
if rsi2>65
LongEntry:=true
if ta.crossover(ema1,ema2)
if rsi2>65
LongEntry:=true
LongExit = ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98)
if time >= start and time <= end
if(LongEntry and rsi2>60)
strategy.entry('Long', strategy.long, 1)
if(LongExit)
strategy.close('Long')