Strategi Mengikuti Aliran Pengayun Momentum


Tarikh penciptaan: 2024-01-22 10:08:55 Akhirnya diubah suai: 2024-01-22 10:08:55
Salin: 1 Bilangan klik: 602
1
fokus pada
1617
Pengikut

Strategi Mengikuti Aliran Pengayun Momentum

Gambaran keseluruhan

Strategi pengesanan trend pendakian pendakian adalah strategi gabungan yang menggunakan kedua-dua indikator pendakian, pendakian dan rata-rata bergerak. Ia bertujuan untuk mengenal pasti trend kenaikan pada Tahap 2 dan trend penurunan pada Tahap 4, menghasilkan isyarat jual beli dan jual beli yang tepat pada kedua-dua peringkat. Strategi ini memanfaatkan teori kitaran pasaran sepenuhnya, membuka kedudukan hanya pada peringkat pasaran yang paling menguntungkan.

Prinsip Strategi

Penjanaan isyarat dan penilaian trend

Isyarat strategi ini adalah sebahagian besarnya dari penilaian komprehensif tiga petunjuk teknikal, termasuk RSI, EMA, dan EMA yang lebih kuat. Secara khusus, strategi ini akan menganggap EMA jangka panjang sebagai tren naik, dan membentuk tanda plurality, apabila EMA jangka pendek melintasi EMA jangka panjang, dan EMA jangka panjang melintasi EMA jangka pendek, menunjukkan tren menurun, dan menghasilkan tanda kosong.

Penjanaan isyarat beransur-ansur

Keunikan strategi ini ialah ia hanya menghasilkan isyarat pada kedua-dua tahap pasaran lembu dan tahap 4 pasaran lembu. Iaitu, ia hanya membuat kedudukan ketika tren naik paling kuat dan tren turun paling jelas.

Proses membuat keputusan secara keseluruhan

Secara ringkasnya, logik keputusan strategi ini dapat diringkaskan sebagai: mengesahkan trend bertahap (Stage 2 atau Stage 4) Menentukan niat kosong RSI yang dinamik Menentukan arah EMA rata-rata Menetapkan stop loss yang sesuai dengan ATR Menetapkan kedudukan apabila semua syarat dipenuhi.

Kelebihan Strategik

Menggunakan kitaran pasaran untuk meningkatkan kadar kemenangan

Kelebihan terbesar strategi ini adalah bahawa ia memahami ciri-ciri kitaran pasaran. Dengan berdagang hanya pada tahap kenaikan dan penurunan yang paling jelas, ia dapat menyaring banyak kebisingan yang tidak pasti, dan dengan itu meningkatkan peluang kejayaan kepada lebih dari 80%.

Penapisan pelbagai indikator untuk mengurangkan isyarat palsu

Strategi ini menggunakan pelbagai petunjuk seperti momentum, trend, dan kadar turun naik untuk disahkan secara silang. Ini menghalang isyarat yang menyesatkan yang mungkin dihasilkan oleh mana-mana petunjuk tunggal, yang meningkatkan kestabilan dan kebolehpercayaan strategi secara keseluruhan.

Berkualiti parameter yang sangat disesuaikan

Strategi ini menyediakan parameter yang boleh disesuaikan yang sangat kaya, pengguna boleh menyesuaikan dengan gaya peribadi dan keadaan pasaran, mengoptimumkan strategi ke tahap tertinggi, yang juga meningkatkan kemampuan beradaptasi strategi.

Risiko dan Penyelesaian

Risiko objektif pasaran

Tidak ada strategi kuantitatif yang dapat sepenuhnya mengelakkan risiko pasaran itu sendiri, seperti peristiwa hitam besar yang tidak dapat diramalkan. Tetapi ini adalah risiko yang wujud dalam objektif pasaran, bukan masalah strategi itu sendiri, yang memerlukan pedagang untuk menjaga kewaspadaan, mengawal kedudukan dan menggunakan pengaruh dengan bijak.

Risiko Pengoptimuman Parameter

Oleh kerana parameter strategi boleh disesuaikan dengan bebas, penyesuaian yang tidak wajar boleh menyebabkan fenomena overfitting. Ini perlu dicegah dengan pengesanan semula yang ketat, memastikan bahawa penyesuaian parameter apa pun telah disahkan dengan baik, dapat disesuaikan dengan keadaan pasaran yang lebih luas, dan tidak terhad kepada satu tempoh sejarah tertentu.

Arah pengoptimuman

Menambah fungsi pengurusan nombor kedudukan

Strategi semasa untuk membina kedudukan dengan jumlah tetap, yang boleh menyebabkan kedudukan terlalu ringan dalam keadaan yang sedang berkembang. Oleh itu, satu arah yang boleh dioptimumkan adalah dengan menambah modul pengurusan kedudukan, apabila trend cukup jelas, kedudukan boleh meningkat secara beransur-ansur, untuk mendapatkan kesan yang lebih baik dalam keadaan yang sedang berkembang.

Menapis isyarat dengan pembelajaran mesin

Strategi ini boleh digabungkan dengan pembelajaran mesin untuk membina model terlatih yang digunakan untuk menilai kualiti isyarat, menapis beberapa isyarat berkualiti rendah, dan seterusnya meningkatkan prestasi keseluruhan strategi. Ini adalah arah penting dalam pengoptimuman strategi.

ringkaskan

Strategi pengesanan trend pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian pendakian

Kod sumber strategi
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JS_TechTrading

//@version=5
strategy('The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', shorttitle='The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', overlay=true,initial_capital = 1000)
//// author -  JS-TechTrading

// MOM Rsi indicator 
group_mom_rsi = "Rsi Of Momentum "
len = input.int(10, minval=1, title="Length Mom-Rsi", group =group_mom_rsi ,tooltip = 'This ind calculate Rsi value of Momentum we use this ind to determine power of trend')
src2 = close
mom = src2 - src2[len]
rsi_mom = ta.rsi(mom, len)
mom_rsi_val = input.int(60, minval=1, title="Mom-Rsi Limit Val", group =group_mom_rsi, tooltip = "When our Mom-Rsi value more then this we open LONG or Short, with help of this indicator we we determine the status of the trend")

// Super Trend Ind
group_supertrend = "SuperTrend indicator"
atrPeriod = input(10, "ATR Length SuperTrend", group = group_supertrend)
factor = input.float(3.0, "Factor SuperTrend", step = 0.01, group = group_supertrend)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Ema Indicator
group_most = "Ema indicator"
src = input(close, 'Source Ema Ind',group = group_most)
AP2 = input.int(defval=12, title='Length Ema Ind', minval=1,group = group_most)
Trail1 = ta.ema(src, AP2) //Ema func
AF2 = input.float(defval=1, title='Percent Ema Ind', minval=0.1,group = group_most) / 100
SL2 = Trail1 * AF2  // Stoploss Ema
Trail2 = 0.0
iff_1 = Trail1 > nz(Trail2[1], 0) ? Trail1 - SL2 : Trail1 + SL2
iff_2 = Trail1 < nz(Trail2[1], 0) and Trail1[1] < nz(Trail2[1], 0) ? math.min(nz(Trail2[1], 0), Trail1 + SL2) : iff_1
Trail2 := Trail1 > nz(Trail2[1], 0) and Trail1[1] > nz(Trail2[1], 0) ? math.max(nz(Trail2[1], 0), Trail1 - SL2) : iff_2

//EMA50/150/200
group_50_150_200="EMA50/150/200"
show_emas=input.bool(defval = true, title = "SHOW EMAS", group = group_50_150_200)
ema50= ta.ema(src, 50)
ema150 = ta.ema(src, 150)
ema200 = ta.ema(src, 200)
ema50_color=input.color(defval = color.purple, title = "EMA50 COLOR",group = group_50_150_200)
ema50_linewidth=input.int(defval = 2, title = "EMA50 LINEWIDTH", group = group_50_150_200)
ema150_color=input.color(defval = color.blue, title = "EMA150 COLOR", group = group_50_150_200)
ema150_linewidth=input.int(defval = 2, title = "EMA150 LINEWIDTH", group = group_50_150_200)
ema200_color=input.color(defval = color.black, title = "EMA200 COLOR", group = group_50_150_200)
ema200_linewidth=input.int(defval = 2, title = "EMA200 LINEWIDTH", group = group_50_150_200)
plot(show_emas ? ema50 : na, color = ema50_color, linewidth = ema50_linewidth)
plot(show_emas ? ema150 : na, color=ema150_color, linewidth = ema150_linewidth)
plot(show_emas ? ema200 : na, color = ema200_color, linewidth = ema200_linewidth)

//Bull = ta.barssince(Trail1 > Trail2 and close > Trail2 and low > Trail2) < ta.barssince(Trail2 > Trail1 and close < Trail2 and high < Trail2)

//TS1 = plot(Trail1, 'ExMov', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(33, 149, 243, 100) : color.rgb(255, 235, 59, 100), linewidth=2)
//TS2 = plot(Trail2, 'ema', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(76, 175, 79, 30) : color.rgb(255, 82, 82, 30), linewidth=2)
//fill(TS1, TS2, Bull  ? color.green : color.red, transp=90)


// Strategy Sett
group_strategy = "Settings of Strategy"
Start_Time = input(defval=timestamp('01 January 2000 13:30 +0000'), title='Start Time of BackTest', group =group_strategy)
End_Time = input(defval=timestamp('30 April 2030 19:30 +0000'), title='End Time of BackTest', group =group_strategy)
dollar = input.float(title='Dollar Cost Per Position* ', defval=50000, group =group_strategy)
trade_direction = input.string(title='Trade_direction', group =group_strategy, options=['LONG', 'SHORT', 'BOTH'], defval='BOTH')
v1 = input(true, title="Version 1 - Uses SL/TP Dynamically ", group =group_strategy ,tooltip = 'With this settings our stoploss price increase or decrease with price to get better PNL score')

v2 = input(false, title="Version 2 -  Uses SL/TP Statically", group =group_strategy)
v2stoploss_input = input.float(5, title='Static Stop.Loss % Val', minval=0.01, group =group_strategy)/100
v2takeprofit_input = input.float(10, title='Static Take.Prof % Val', minval=0.01, group =group_strategy)/100

v2stoploss_level_long = strategy.position_avg_price * (1 - v2stoploss_input)
v2takeprofit_level_long = strategy.position_avg_price * (1 + v2takeprofit_input)

v2stoploss_level_short = strategy.position_avg_price * (1 + v2stoploss_input)
v2takeprofit_level_short = strategy.position_avg_price * (1 - v2takeprofit_input)

group_line = "Line Settings"
show_sl_tp = input.bool(title='  Show StopLoss - TakeProf Lines',inline = "1", defval=true, group =group_line)
show_trend_line = input.bool(title='  Show Trend Line',inline = '3' ,defval=true, group =group_line)
stoploss_colour = input.color(title='StopLoss Line Colour',inline = '2' ,defval=color.rgb(255, 255, 0), group =group_line)
up_trend_line_colour = input.color(title='Up Trend line Colour',inline = '4' ,defval=color.rgb(0, 255, 0, 30), group =group_line)
down_trend_line_colour = input.color(title='Down Trend line Colour',inline = '4' ,defval=color.rgb(255, 0, 0, 30), group =group_line)

//plot(supertrend ,color = strategy.position_size > 0 and show_sl_tp ? color.rgb(255, 0, 0) :show_sl_tp ? color.rgb(0, 255, 0) : na , style = plot.style_steplinebr,linewidth = 2)
// plot(supertrend ,color = show_sl_tp and v1 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)

// plot(v2stoploss_level_long ,color = strategy.position_size > 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2stoploss_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_long  ,color = strategy.position_size > 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)


TS2 = plot(Trail2, 'Ema Strategy', style=plot.style_line, color=show_trend_line and Trail1 < Trail2 ? down_trend_line_colour : show_trend_line ? up_trend_line_colour  : na, linewidth=2)

// bgcolor(buy_signal ? color.rgb(0, 230, 119, 80) : na)
// bgcolor(sell_signal ? color.rgb(255, 82, 82, 80) : na)

Time_interval = true
buy_signal = Trail1 > Trail2 and direction < 0 and rsi_mom > mom_rsi_val and Time_interval
sell_signal =Trail1 < Trail2 and direction > 0 and rsi_mom > mom_rsi_val and Time_interval


// Strategy entries 
stop_long = (close < supertrend and v1) or (v2 and strategy.position_size > 0)
stop_short = (close > supertrend and v1) or (v2 and strategy.position_size < 0)
long_cond = ((close > ema150 ) and (ema50 > ema150) and (ema150 > ema200))
short_cond = ((close < ema150) and (ema50 < ema150) and (ema150 < ema200))
if (not stop_long) and (not short_cond) and long_cond and strategy.opentrades == 0 and (trade_direction == 'LONG' or trade_direction == 'BOTH') and buy_signal
    strategy.entry('Long_0', strategy.long, qty=dollar / close)

if (not stop_short) and (not long_cond) and short_cond and strategy.opentrades == 0 and (trade_direction == 'SHORT' or trade_direction == 'BOTH') and sell_signal
    strategy.entry('Short_0', strategy.short, qty=dollar / close)


if close < supertrend and v1
    strategy.exit('Long_Close',from_entry = "Long_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size > 0
    strategy.exit('Long_Close',from_entry = "Long_0", stop=v2stoploss_level_long,limit= v2takeprofit_level_long  , qty_percent=100)
    
if close > supertrend and v1
    strategy.exit('Short_Close',from_entry = "Short_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size < 0
    strategy.exit('Short_Close',from_entry = "Short_0", stop=v2stoploss_level_short,limit= v2takeprofit_level_short ,qty_percent=100)