Strategi Dukungan dan Resistensi Dinamis Berdasarkan Data Sejarah

Penulis:ChaoZhang, Tanggal: 2023-11-28 17:00:13
Tag:

img

Gambaran umum

Strategi ini secara dinamis menghitung level support dan resistance berdasarkan harga tinggi, rendah dan dekat dalam sejarah, dan menghasilkan sinyal trading sesuai dengan itu.

Logika Strategi

  1. Menghitung rata-rata harga tinggi, rendah dan dekat periode sebelumnya sebagai titik pivot (PP).

  2. Hitung 3 garis pendukung: S1 = 2PP - harga tertinggi; S2 = PP - (R1-S1); S3 = harga terendah - 2(harga tertinggi - PP).

  3. Hitung 3 garis resistensi: R1 = 2PP - harga terendah; R2 = PP + (R1-S1); R3 = harga tertinggi + 2(PP - harga terendah).

  4. Mengambil posisi panjang ketika harga menembus garis resistensi, mengambil posisi pendek ketika harga menembus garis dukungan.

Analisis Keuntungan

  1. Tingkat dukungan dan resistensi dinamis berdasarkan data historis dapat menangkap perubahan struktur pasar tepat waktu.

  2. Pengaturan dukungan dan resistensi multi-lapisan memungkinkan optimasi manajemen risiko yang lebih baik.

  3. Sinyal perdagangan sederhana dan intuitif dan mekanisme stop loss.

Analisis Risiko

  1. Tingkat harga referensi yang diberikan oleh data historis dapat menjadi tidak valid dalam skenario volatilitas tinggi.

  2. Peralihan antara posisi panjang dan pendek harus mempertimbangkan biaya perdagangan.

  3. Kualitas data harus dijamin untuk menghindari kesalahan perhitungan.

Arahan Optimasi

  1. Pertimbangkan untuk memasukkan lebih banyak referensi data historis seperti rata-rata bergerak 100 hari dll.

  2. Mengoptimalkan ukuran posisi, misalnya menyesuaikan ukuran posisi berdasarkan volatilitas.

  3. Tambahkan strategi stop loss seperti trailing stop loss atau stop loss berbasis risiko.

Ringkasan

Strategi ini menyediakan tingkat harga referensi dukungan dan resistensi multi-lapisan berdasarkan sejarah. Ini memiliki logika sederhana dan langsung yang cocok untuk posisi jangka menengah hingga panjang. Sementara itu, risiko di bawah volatilitas pasar dan biaya perdagangan yang tinggi harus dipantau. Optimasi lebih lanjut dapat membuat strategi kuat di bawah lingkungan yang kompleks.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/06/2020
// Pivot points simply took the high, low, and closing price from the previous period and 
// divided by 3 to find the pivot. From this pivot, traders would then base their 
// calculations for three support, and three resistance levels. The calculation for the most 
// basic flavor of pivot points, known as ‘floor-trader pivots’, along with their support and 
// resistance levels.
//
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Pivot Point V2", shorttitle="Pivot Point V2", overlay = true)
res = input(title="Resolution", type=input.resolution, defval="D")
SellFrom = input(title="Sell from ", defval="R1", options=["R1", "R2", "R3"])
BuyFrom = input(title="Buy from ", defval="S1", options=["S1", "S2", "S3"])
width = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xHigh  = security(syminfo.tickerid,res, high)
xLow   = security(syminfo.tickerid,res, low)
xClose = security(syminfo.tickerid,res, close)
vPP = (xHigh+xLow+xClose) / 3
vS1 = 2*vPP - xHigh 
vR1 = 2*vPP-xLow
vS2 = vPP - (vR1 - vS1)
vR2 = vPP + (vR1 - vS1)
vS3 = xLow - 2 * (xHigh - vPP)
vR3 = xHigh + 2 * (vPP - xLow) 
pos = 0
S = iff(BuyFrom == "S1", vS1, 
      iff(BuyFrom == "S2", vS2,
         iff(BuyFrom == "S3", vS3,0)))
B = iff(SellFrom == "R1", vR1, 
      iff(SellFrom == "R2", vR2,
         iff(SellFrom == "R3", vR3,0)))
pos := iff(close > B, 1,
       iff(close < S, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih banyak