Strategi Niat Segera Purata Pergerakan Eksponen dan Pemecahan Trek Atas


Tarikh penciptaan: 2023-11-13 11:52:22 Akhirnya diubah suai: 2023-11-13 11:52:22
Salin: 1 Bilangan klik: 667
1
fokus pada
1617
Pengikut

Strategi Niat Segera Purata Pergerakan Eksponen dan Pemecahan Trek Atas

Gambaran keseluruhan

Strategi ini menggunakan isyarat persilangan garis cepat dan lambat MACD, untuk membuat penilaian komprehensif bersama dengan beberapa petunjuk lain, menangkap isyarat penembusan rata-rata bergerak indeks dalam sekelip mata, membuat keputusan membeli atau menjual, dan merupakan strategi perdagangan garis pendek.

Prinsip Strategi

  1. Menggunakan garis laju dan garis perlahan MACD sebagai isyarat dagangan utama. Masuklah ke dalam pasaran apabila garis laju melintasi garis perlahan, masuklah ke dalam pasaran apabila garis pantas melintasi garis perlahan.

  2. Gabungan dengan RSI untuk menentukan sama ada terlalu beli atau terlalu jual. RSI adalah bullish apabila ia berada di bawah garis tengah, dan RSI adalah bearish apabila ia berada di atas garis tengah.

  3. Hitung harga penutupan semasa dengan garis rata-rata SMA dalam tempoh tertentu. Harga penutupan di bawah SMA adalah bullish dan harga penutupan di atas SMA adalah bearish.

  4. Hitung titik Fibonacci 0.5 untuk nilai tertinggi dalam satu tempoh tertentu, sebagai titik rintangan pemandang. Hitung titik Fibonacci 0.5 untuk nilai terendah dalam satu tempoh tertentu, sebagai titik sokongan pemandang.

  5. Apabila memenuhi garis cepat dan harga di bawah sokongan, masuklah ke dalam perdagangan. Apabila memenuhi garis cepat dan harga di atas rintangan, masuklah ke dalam perdagangan.

  6. Menggunakan langkah-langkah pergerakan berhenti. Pada permulaan selepas kemasukan, titik berhenti ditetapkan sebagai peratusan tertentu dari harga pembukaan, dan apabila kerugian mencapai peratusan tertentu, ia berubah menjadi sedikit langkah-langkah untuk menjejaki berhenti.

Kelebihan Strategik

  1. Strategi memanfaatkan sepenuhnya isyarat silang MACD, yang merupakan isyarat perdagangan indikator teknikal klasik dan berkesan.

  2. Ia boleh digunakan untuk mengesan tanda-tanda palsu dan meningkatkan kebolehpercayaan.

  3. Mengira tahap rintangan sokongan yang dinamik, melakukan transaksi terobosan, dan menangkap pergerakan yang lebih besar.

  4. Menggunakan langkah-langkah pergerakan stop loss, anda boleh mengunci sebahagian besar keuntungan dan mengawal risiko.

  5. Strategi perdagangan logiknya jelas dan mudah difahami, sesuai untuk pelajar pemula.

Risiko Strategik

  1. Indeks MACD bermasalah dengan ketinggalan dan mungkin akan terlepas titik jual beli terbaik di pasaran.

  2. Penghakiman gabungan pelbagai indikator meningkatkan kerumitan strategi dan mudah berlaku konflik indikator.

  3. Pengiraan dinamik menyokong risiko penembusan yang salah di tempat rintangan.

  4. Hentikan kerugian bergerak mungkin terlambat dalam situasi yang lebih besar dan tidak dapat menghasilkan keuntungan yang berterusan.

  5. Parameter strategi memerlukan pengoptimuman ujian berulang, parameter yang tidak sesuai akan menjejaskan keberkesanan strategi.

Arah pengoptimuman strategi

  1. Anda boleh menguji kombinasi parameter yang berbeza untuk mengoptimumkan parameter kitaran MACD.

  2. Lebih banyak penunjuk boleh diperkenalkan, seperti garis Brin, KDJ dan lain-lain untuk analisis pelbagai dimensi.

  3. Ia boleh digabungkan dengan faktor-faktor lain untuk menilai kebolehpastian sokongan terhadap titik rintangan.

  4. Kaedah-kaedah yang lebih maju untuk menghentikan kerosakan bergerak, seperti berhenti masa, berhenti getaran, dan lain-lain, boleh dikaji.

  5. Modul pengoptimuman parameter automatik boleh dimasukkan untuk mencapai pengoptimuman parameter automatik.

ringkaskan

Strategi ini menggunakan pelbagai petunjuk seperti MACD, RSI, SMA, dan lain-lain untuk menangkap isyarat penembusan rata-rata pergerakan indeks dalam masa sekejap, dan merupakan strategi perdagangan penembusan garis pendek yang tipikal. Isyarat strategi ini dihasilkan dengan keterlambatan tertentu, tetapi keakuratannya dapat ditingkatkan dengan pengoptimuman parameter. Secara keseluruhan, logik perdagangan strategi ini sederhana dan jelas, mudah difahami, menunjukkan prestasi yang mantap, sesuai untuk digunakan oleh kebanyakan orang untuk mempelajari nilai, perlu diuji dan dioptimumkan lebih lanjut.

Kod sumber strategi
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 23:00:00
period: 1m
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/
// © onurenginogutcu

//@version=4
strategy("R19 STRATEGY", overlay=true, calc_on_every_tick=true , margin_long=100, margin_short=100 ,  process_orders_on_close=true )



sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT" , group = "SYMBOL") 
timeFrame = input(title="Strategy Decision Time Frame", type = input.resolution ,  defval="60")

adxlen = input(14, title="ADX Smoothing" , group = "ADX")
dilen = input(14, title="ADX DI Length", group = "ADX")
adxemalenght = input(30, title="ADX EMA", group = "ADX")
adxconstant = input(19, title="ADX CONSTANT", group = "ADX")

fibvar = input (title = "Fibo Look Back Canles" , defval = 50 , minval = 0 , group = "FIBO MACD SMA")
smaLookback = input (title = "SMA Look Back Candles" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDFast = input (title = "MACD Fast Lenght" , defval = 15 , minval = 0 , group = "FIBO MACD SMA")
MACDSlow = input (title = "MACD Slow Lenght" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDSmooth = input (title = "MACD Signal Smoothing" , defval = 9 , minval = 0 , group = "FIBO MACD SMA")
MACDLookback = input (title = "MACD Look Back Candles" , defval = 100 , minval = 0 , group = "FIBO MACD SMA")

trailingStopLong = input (title = "Trailing Long Stop %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
trailingStopShort = input (title = "Trailing Short Stop %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
LongTrailingProfitStart = input (title = "Long Profit Start %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
ShortTrailingProfitStart = input (title = "Short Profit Start %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01

lsl = input(title="Max Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=3.0, group = "TP & SL") * 0.01
     
ssl = input(title="Max Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5, group = "TP & SL") * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=95, group = "CAPITAL TO INVEST") * 0.01
     

symClose = security(sym, timeFrame, close)
symHigh = security(sym, timeFrame, high)
symLow = security(sym, timeFrame, low)

atr = atr (14) 

/////////adx code

dirmov(len) =>
	up = change(symHigh)
	down = -change(symLow)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
emasig = ema (sig , adxemalenght )


////////adx code over



i = ema (symClose , MACDFast) - ema (symClose , MACDSlow) 
r = ema (i , MACDSmooth)

sapust = highest (i , MACDLookback) * 0.729 
sapalt = lowest (i , MACDLookback) * 0.729  


simRSI = rsi (symClose , 50 ) 




fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)





cond1 = 0
cond2 = 0
cond3 = 0
cond4 = 0


longCondition = crossover(i, r) and i < sapalt and sig > adxconstant and symClose < sma (symClose , smaLookback) and simRSI < sma (simRSI , 50) and symClose < fibbottom 
shortCondition = crossunder(i, r) and i > sapust and sig > adxconstant and  symClose > sma (symClose , smaLookback) and simRSI > sma (simRSI , 50) and symClose > fibtop 


//////////////////////probability long/short
if (crossover(i, r) and i < sapalt)
    cond1 := 35
else if (crossunder(i, r) and i > sapust)
    cond1 := -35
else
    cond1 := 0
    
if (symClose < sma (symClose , smaLookback))
    cond2 := 30
else if (symClose > sma (symClose , smaLookback))
    cond2 := -30
else
    cond2 := 0
    
if (simRSI < sma (simRSI , 50))
    cond3 := 25
else if (simRSI > sma (simRSI , 50))
    cond3 := -25
else
    cond3 := 0
    
if (symClose < fibbottom)
    cond4 := 10
else if (symClose > fibbottom)
    cond4 := -10
else
    cond4 := 0
    
probab = cond1 + cond2 + cond3 + cond4
////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////
var startTrail = 0
var trailingLongPrice = 0.0
var trailingShortPrice = 0.0

if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close )

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close )
    
    
if (strategy.position_size == 0)    
    trailingShortPrice := 0.0
    trailingLongPrice := 0.0  
    startTrail := 0
/////////////////////////////////strategy exit

if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + LongTrailingProfitStart))
    startTrail := 1

if (strategy.position_size < 0 and close <= strategy.position_avg_price * (1 - ShortTrailingProfitStart))
    startTrail := -1
    



trailingLongPrice := if strategy.position_size > 0 and startTrail == 1
    stopMeasure = close * (1 - trailingStopLong)
    max (stopMeasure , trailingLongPrice [1])
else if strategy.position_size > 0 and startTrail == 0
    strategy.position_avg_price * (1 - lsl)


trailingShortPrice := if strategy.position_size < 0 and startTrail == -1
    stopMeasure = close * (1 + trailingStopShort)
    min (stopMeasure , trailingShortPrice [1])
else if strategy.position_size < 0 and startTrail == 0
    strategy.position_avg_price * (1 + ssl)




if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop = trailingLongPrice , limit=strategy.position_avg_price*(1 + longtp))
 

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop = trailingShortPrice , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)

plot (trailingLongPrice , color = color.green) ///long price trailing stop
plot (trailingShortPrice , color = color.red) /// short price trailing stop
plot (startTrail , color = color.yellow)
plot (probab , color = color.white) ////probability