Artikel ini terutamanya menganalisis strategi perdagangan kuantitatif yang dibangunkan oleh Ravikant_sharma berdasarkan purata bergerak eksponensial berganda (EMA) dan indeks kekuatan relatif (RSI). Strategi ini mengenal pasti trend harga dan menentukan titik masuk dan keluar dengan melintasi EMA dengan kitaran dan nilai RSI yang berbeza.
Strategi ini menggunakan 5 EMA dengan tempoh yang berbeza, termasuk garis 9 hari, 21 hari, 51 hari, 100 hari dan 200 hari. Hanya 4 EMA pertama yang digambarkan dalam kod. Parameter RSI ditetapkan kepada 14.
Satu daripada syarat berikut mesti dipenuhi sebelum membeli:
Pada masa yang sama, RSI mesti lebih besar daripada 65, yang menunjukkan aliran menaik yang kuat.
Satu daripada syarat berikut mesti dipenuhi sebelum menutup kedudukan:
Ia adalah trend tipikal yang mengikuti strategi dengan kekuatan berikut:
Masih ada beberapa risiko:
Strategi ini boleh dioptimumkan lagi dengan cara berikut:
Kesimpulannya, ini adalah strategi trend berikut yang boleh dipercayai dan mudah dilaksanakan. Dengan persilangan EMA untuk arah trend dan penapis RSI untuk isyarat palsu, hasil backtest yang baik memberikan asas yang kukuh untuk parameter dan pengoptimuman model yang lebih lanjut untuk mendapatkan keuntungan yang mantap. Walau bagaimanapun, peniaga masih harus berhati-hati terhadap pembalikan tajam dan parameter yang tidak tepat yang menimbulkan risiko.
/*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')