Strategi indikator tinggi-rendah dan indikator rata-rata bergerak


Tanggal Pembuatan: 2023-11-21 15:19:35 Akhirnya memodifikasi: 2023-11-21 15:19:35
menyalin: 2 Jumlah klik: 648
1
fokus pada
1617
Pengikut

Strategi indikator tinggi-rendah dan indikator rata-rata bergerak

Ringkasan

Strategi ini terutama menggabungkan indikator tinggi rendah, indikator garis rata-rata dan indikator supertrend untuk menentukan tren pasar.

Prinsip Strategi

  1. Indikator ini digunakan untuk menilai apakah harga telah mencapai harga tinggi atau rendah dalam periode tertentu dan mengumpulkan skor. Ketika skor naik, itu berarti peningkatan kekuatan multihead; Ketika skor turun, itu berarti peningkatan kekuatan kosong.

  2. Dengan menggunakan indikator garis rata, menentukan apakah harga berada dalam tren naik tangga dari bawah ke atas, atau tren turun tangga dari atas ke bawah. Ketika garis rata menunjukkan tren naik tangga, mewakili peningkatan kekuatan multihead; Ketika garis rata menunjukkan penurunan tangga, mewakili peningkatan kekuatan overhead.

  3. Menggabungkan indikator tinggi rendah dan indikator rata-rata, menentukan tren pasar; kemudian menggabungkan arah indikator tren super, mencari peluang untuk membangun posisi. Secara khusus, ketika indikator tinggi rendah dan indikator rata-rata menunjukkan peningkatan kekuatan multihead, dan arah indikator tren super adalah ke bawah, posisi panjang dibuat; ketika indikator tinggi rendah dan indikator rata-rata menunjukkan peningkatan kekuatan kosong, dan arah indikator tren super adalah ke atas, posisi kosong dibuat.

Keunggulan Strategis

  1. Indikator tinggi rendah dapat secara efektif menilai pergerakan harga dan perubahan kekuatan, indikator rata-rata dapat secara efektif menilai tren harga, keduanya digabungkan dapat menentukan arah pasar dengan lebih akurat.

  2. Bergabung dengan indikator supertrend untuk melakukan penempatan, dapat menghindari penempatan terlalu dini atau terlalu terlambat. Indikator supertrend dapat secara efektif mengidentifikasi titik balik harga.

  3. Beberapa indikator saling diverifikasi untuk mengurangi sinyal palsu.

Risiko Strategis

  1. Jika indikator tinggi rendah dan rata-rata menunjukkan sinyal yang salah, maka bisa menyebabkan kerugian dalam penempatan.

  2. Jika keterlibatan tidak tinggi, parameter indikator supertrend yang tidak tepat dapat mengirimkan sinyal yang salah.

  3. Jika tren berbalik terlalu cepat, stop loss yang tidak tepat dapat menyebabkan kerugian yang lebih besar.

  4. Risiko dapat dikurangi dengan mengoptimalkan parameter indikator, menyesuaikan titik stop loss, dan sebagainya.

Optimasi Strategi

  1. Dapat menguji berbagai jenis rata-rata indikator untuk mencari kombinasi parameter yang optimal.

  2. Parameter indikator tinggi rendah dan indikator rata-rata dapat dioptimalkan untuk membuat sinyal lebih stabil dan dapat diandalkan.

  3. Dapat dikombinasikan dengan indikator lain untuk verifikasi, seperti MACD, KD dll, mengurangi sinyal palsu.

  4. Parameter dan bobot sinyal dapat dioptimalkan secara otomatis dengan algoritma pembelajaran mesin.

  5. Ini bisa dikombinasikan dengan analisis sentimen dan lain-lain untuk menilai panasnya pasar, menghindari perdagangan varietas panas rendah.

Meringkaskan

Strategi ini menggunakan indikator tinggi rendah dan rata-rata untuk menilai tren dan kekuatan pasar, kemudian digabungkan dengan indikator supertrend untuk memfilter sinyal, untuk melakukan perdagangan berisiko rendah. Keunggulan strategi ini adalah verifikasi multi-indikator dan membangun posisi tepat waktu, yang dapat mengontrol risiko secara efektif. Masalahnya adalah kesalahan dalam menilai sinyal dan tren palsu.

Kode Sumber Strategi
/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("AlignedMA and Cumulative HighLow Strategy", overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
includePartiallyAligned = input(true)
HighLowPeriod = input(50, minval=1,step=1)
LookbackPeriod = input(10, minval=1,step=1)

supertrendMult = input(2, minval=1, maxval=10, step=0.5)
supertrendLength = input(10, minval=1)

tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
backtestYears = input(10, minval=1, step=1)

f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma
    
f_getMaAlignment(MAType, includePartiallyAligned)=>
    ma5 = f_getMovingAverage(close,MAType,5)
    ma10 = f_getMovingAverage(close,MAType,10)
    ma20 = f_getMovingAverage(close,MAType,20)
    ma30 = f_getMovingAverage(close,MAType,30)
    ma50 = f_getMovingAverage(close,MAType,50)
    ma100 = f_getMovingAverage(close,MAType,100)
    ma200 = f_getMovingAverage(close,MAType,200)

    upwardScore = 0
    upwardScore := close > ma5? upwardScore+1:upwardScore
    upwardScore := ma5 > ma10? upwardScore+1:upwardScore
    upwardScore := ma10 > ma20? upwardScore+1:upwardScore
    upwardScore := ma20 > ma30? upwardScore+1:upwardScore
    upwardScore := ma30 > ma50? upwardScore+1:upwardScore
    upwardScore := ma50 > ma100? upwardScore+1:upwardScore
    upwardScore := ma100 > ma200? upwardScore+1:upwardScore
    
    upwards = close > ma5 and ma5 > ma10 and ma10 > ma20 and ma20 > ma30 and ma30 > ma50 and ma50 > ma100 and ma100 > ma200
    downwards = close < ma5 and ma5 < ma10 and ma10 < ma20 and ma20 < ma30 and ma30 < ma50 and ma50 < ma100 and ma100 < ma200
    upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 5? 0.5: upwardScore < 2?-0.5:upwardScore>3?0.25:-0.25) : 0

f_getHighLowValue(HighLowPeriod)=>
    currentHigh = highest(high,HighLowPeriod) == high
    currentLow = lowest(low,HighLowPeriod) == low
    currentHigh?1:currentLow?-1:0

inDateRange = time >= timestamp(syminfo.timezone, year(timenow) - backtestYears, 01, 01, 0, 0)

maAlignment = f_getMaAlignment(MAType,includePartiallyAligned)
alignedMaIndex = sum(maAlignment,LookbackPeriod)

maAlignmentDirection = alignedMaIndex > alignedMaIndex[1] ? 1 : alignedMaIndex < alignedMaIndex[1] ? -1 : 0
maAlignmentDirection := maAlignmentDirection == 0? nz(maAlignmentDirection[1],0):maAlignmentDirection

highLowIndex = f_getHighLowValue(HighLowPeriod)
cumulativeHighLowIndex = sum(highLowIndex,LookbackPeriod)

hlDirection = cumulativeHighLowIndex > cumulativeHighLowIndex[1] ? 1 : cumulativeHighLowIndex < cumulativeHighLowIndex[1] ? -1 : 0
hlDirection := hlDirection == 0? nz(hlDirection[1],0):hlDirection

[superTrend, dir] = supertrend(supertrendMult, supertrendLength)

buyEntry = (dir == -1 and maAlignmentDirection == 1 and hlDirection == 1)
sellEntry = (dir == 1 and maAlignmentDirection == -1 and hlDirection == -1)

barColor = buyEntry?color.lime:sellEntry?color.orange:color.gray
barcolor(barColor)

// strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when=barColor == color.lime and inDateRange, oca_name="oca_buy")
strategy.close("Buy", when=dir == 1)

strategy.entry("Sell", strategy.short, when=barColor == color.orange and inDateRange, oca_name="oca_sell")
strategy.close("Sell", when=dir == -1)