Strategi Pengenalpastian Trend MyQuant


Tarikh penciptaan: 2024-02-22 16:04:04 Akhirnya diubah suai: 2024-02-22 16:04:04
Salin: 2 Bilangan klik: 633
1
fokus pada
1617
Pengikut

Strategi Pengenalpastian Trend MyQuant

Gambaran keseluruhan

Strategi pengenalan trend MyQuant adalah strategi yang digunakan untuk perdagangan harian Bitcoin. Strategi ini mengenal pasti trend pasaran dengan mengira purata bergerak harga dan derivatif peringkat pertama dan kedua, dan membuat keputusan membeli dan menjual berdasarkan itu.

Prinsip Strategi

Strategi ini mula-mula mengira purata bergerak beradaptasi harga (ALMA) dan derivatif pertama dan kedua. Derivatif pertama mencerminkan kelajuan perubahan harga, derivatif kedua mencerminkan kurva harga. Berdasarkan nilai derivatif pertama dan kedua, anda kini berada dalam tren naik, tren menurun atau masa goyah.

Secara khusus, strategi ini mengkaji:

  • ALMA: purata bergerak beradaptasi harga, panjang 140, faktor laju 1.1, sigma 6
  • dema: Pembahagian pertama ALMA
  • d2ema: derivatif pertama dema yang mencerminkan derivatif kedua harga
  • index: Indeks getaran penunjuk dema
  • ind: Indeks penyesuaian harga dari garis purata

Apabila syarat membeli dipenuhi, jumlah saham yang dibeli dikira berdasarkan CAUSED.Accumulation/Distribution Bands dan Caused Exposure Top and Bottom Finder. Apabila syarat menjual dipenuhi, menjual semua kedudukan.

Kelebihan Strategik

Strategi ini menggabungkan trend dan penghakiman indikator, yang dapat mengenal pasti titik perubahan trend pasaran. Menggunakan harga satu peringkat dan kedua derivatif untuk menentukan trend, mengelakkan daripada terjejas oleh pergerakan harga, membuat isyarat lebih jelas. Berbanding dengan strategi purata bergerak yang biasa, mempunyai keunggulan keakuran penghakiman yang lebih tinggi.

Analisis risiko

Strategi ini sangat sensitif terhadap pilihan tempoh masa perdagangan dan penyesuaian parameter. Jika pilihan tempoh masa tidak tepat, kegagalan untuk merangkumi titik perubahan harga penting, akan menyebabkan strategi tidak berkesan. Jika parameter penunjuk tidak betul, isyarat membeli dan menjual akan terjejas oleh lebih banyak bunyi, yang akan mempengaruhi keuntungan strategi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Mengoptimumkan logik pilihan tempoh dengan memilih lebih bijak tempoh pelacakan dan perdagangan cakera.
  2. Parameter untuk mengoptimumkan parameter penunjuk, seperti menyesuaikan panjang ALMA dan dema.
  3. Tambah penilaian terhad untuk mengawal kerugian maksimum.
  4. Mengkaji keberkesanan pelbagai mata wang kripto, memilih varian yang terbaik.

ringkaskan

Strategi pengenalan trend MyQuant dengan pengiraan derivatif peringkat pertama dan kedua dari purata bergerak yang disesuaikan dengan harga, secara berkesan mengenal pasti trend pasaran Bitcoin dan membuat keputusan pembelian dan penjualan yang sesuai. Strategi ini membuat keputusan dengan menggabungkan pelbagai petunjuk dan mengelakkan isyarat dari gangguan bunyi yang berlebihan.

Kod sumber strategi
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © spacekadet17
// 
//@version=5

strategy(title="Trend Identifier Strategy", shorttitle="Trend Identifier Strategy", format=format.price, precision=4, overlay = false, initial_capital = 1000, pyramiding = 10, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.03)

//start-end time
startyear = input.int(2020,"start year")
startmonth = input.int(1,"start month")
startday = input.int(1,"start day")
endyear = input.int(2025,"end year")
endmonth = input.int(1,"end month")
endday = input.int(1,"end day")

timeEnd = time <= timestamp(syminfo.timezone,endyear,endmonth,endday,0,0)
timeStart = time >= timestamp(syminfo.timezone,startyear,startmonth,startday,0,0)
choosetime = input(false,"Choose Time Interval")
condTime = (choosetime ? (timeStart and timeEnd) : true)

// time frame?
tfc = 1
if timeframe.isdaily
    tfc := 24

// indicators: price normalized alma, and its 1st and 2nd derivatives
ema = ta.alma(close,140,1.1,6)
dema = (ema-ema[1])/ema
stodema = ta.ema(ta.ema(ta.stoch(dema,dema,dema,100),3),3)

d2ema = ta.ema(dema-dema[1],5)
stod2ema = ta.ema(ta.ema(ta.stoch(d2ema,d2ema,d2ema,100),3),3)

ind = (close-ta.ema(close,120*24/tfc))/close
heat = ta.ema(ta.stoch(ind,ind,ind,120*24/tfc),3)
index = ta.ema(heat,7*24/tfc)

//plot graph
green = color.rgb(20,255,100)
yellow = color.yellow
red = color.red
blue = color.rgb(20,120,255)
tcolor = (dema>0) and (d2ema>0)? green : (dema>0) and (d2ema<0) ? yellow : (dema < 0) and (d2ema<0) ? red : (dema < 0) and (d2ema>0) ? blue : color.black
demaema = ta.ema(dema,21)
plot(demaema, color = tcolor)

//strategy buy-sell conditions
cond1a = strategy.position_size <= 0
cond1b = strategy.position_size > 0

if (condTime and cond1a and ( ( ((tcolor[1] == red and demaema<0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == yellow and demaema>-0.02) ) and tcolor == green) or (tcolor[1] == red and tcolor == blue and demaema < -0.01) ) and index<85 and ind<0.4)
    strategy.entry("buy",strategy.long, (strategy.equity-strategy.position_size*close)/1/close)
    
if (condTime and cond1b and ( (((tcolor[1] == yellow and demaema > -0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == green and demaema < 0.02)) and tcolor == red) or (tcolor[1] == green and tcolor == yellow and demaema > 0.015) ) and index>15 and ind>-0.1)
    strategy.order("sell",strategy.short, strategy.position_size)