Transformator Uji Coba Ulang Squeeze v2.0


Tanggal Pembuatan: 2024-04-28 14:09:26 Akhirnya memodifikasi: 2024-04-28 14:09:26
menyalin: 0 Jumlah klik: 536
1
fokus pada
1617
Pengikut

Transformator Uji Coba Ulang Squeeze v2.0

Ringkasan

Extreme Retracement Transformations Gold v2.0 adalah sistem perdagangan kuantitatif yang didasarkan pada strategi jenis ekstrim. Ini melakukan retracement pada strategi dalam jangka waktu tertentu dengan mengatur parameter seperti persentase masuk, stop loss dan stop loss, dan waktu maksimum memegang posisi.

Prinsip Strategi

  1. Pertama-tama, berdasarkan parameter periode pengembalian yang disetel oleh pengguna, tentukan waktu awal dan akhir pengembalian.
  2. Pada periode pengembalian, jika tidak ada posisi yang dipegang saat ini dan harga menyentuh harga masuk (dihitung berdasarkan persentase pembukaan posisi), maka posisi dibuka dan harga stop loss dan stop loss ditetapkan pada saat yang sama (dihitung berdasarkan persentase stop loss dan stop loss).
  3. Jika sudah memegang posisi, maka membatalkan stop loss order sebelumnya, dan menetapkan kembali harga stop loss baru (dihitung berdasarkan harga rata-rata posisi saat ini).
  4. Jika Anda telah menetapkan waktu maksimum untuk memegang posisi, maka Anda akan memaksakan posisi kosong ketika waktu memegang posisi mencapai nilai maksimum.
  5. Strategi ini mendukung perdagangan dalam dua arah, baik dalam bentuk over dan under.

Keunggulan Strategis

  1. Pengaturan parameter yang fleksibel dapat disesuaikan dengan kondisi pasar yang berbeda dan kebutuhan transaksi.
  2. Mendukung perdagangan multi-arah, yang dapat menghasilkan keuntungan dalam berbagai kondisi pasar.
  3. Berbagai pilihan pengaturan periode retrospeksi yang dapat digunakan untuk retrospeksi dan analisis data historis.
  4. Pengaturan Stop Loss dan Stop Loss dapat secara efektif mengendalikan risiko dan meningkatkan efisiensi penggunaan dana.
  5. Pengaturan waktu maksimum untuk memegang posisi dapat mencegah risiko pasar yang terlalu lama.

Risiko Strategis

  1. Pengaturan harga masuk, harga stop loss, dan harga stop loss sangat berpengaruh pada keuntungan strategi, dan pengaturan parameter yang tidak tepat dapat menyebabkan kerugian.
  2. Ketika pasar bergejolak, mungkin terjadi situasi yang memicu stop loss segera setelah membuka posisi, sehingga menyebabkan kerugian.
  3. Jika Anda memicu penutupan jangka waktu penutupan maksimum saat memegang posisi, Anda mungkin kehilangan kesempatan untuk mendapatkan keuntungan selanjutnya.
  4. Strategi ini mungkin tidak bekerja dengan baik dalam situasi tertentu (misalnya di pasar yang bergejolak).

Arah optimasi strategi

  1. Anda dapat mempertimbangkan untuk memperkenalkan lebih banyak indikator teknis atau indikator sentimen pasar untuk mengoptimalkan kondisi entry, stop loss dan stop loss, meningkatkan stabilitas dan profitabilitas strategi.
  2. Untuk pengaturan waktu maksimum untuk memegang posisi, dapat disesuaikan secara dinamis sesuai dengan volatilitas pasar dan posisi yang menguntungkan dan rugi, untuk menghindari biaya peluang yang mungkin ditimbulkan oleh posisi yang tetap.
  3. Untuk karakteristik pasar yang bergoyang, Anda dapat menambahkan logika seperti terobosan di zona goyang atau konfirmasi pembalikan tren, untuk mengurangi biaya yang ditimbulkan oleh perdagangan yang sering terjadi.
  4. Pertimbangkan untuk memasukkan strategi manajemen posisi dan pengelolaan dana, mengendalikan risiko transaksi tunggal, meningkatkan efisiensi dan stabilitas penggunaan dana.

Meringkaskan

Extreme Retracement Metamorphosis Gold v2.0 adalah sistem perdagangan kuantitatif yang didasarkan pada strategi jenis ekstrim, yang dapat diperdagangkan dalam berbagai lingkungan pasar melalui pengaturan parameter yang fleksibel dan dukungan perdagangan multi arah. Di samping itu, opsi pengaturan periode retracement yang kaya dan pengaturan stop loss dapat membantu pengguna dalam analisis data historis dan pengendalian risiko. Namun, kinerja strategi sangat dipengaruhi oleh pengaturan parameter, yang perlu dioptimalkan dan ditingkatkan sesuai dengan karakteristik pasar dan kebutuhan perdagangan untuk meningkatkan kehandalan dan profitabilitas strategi.

Kode Sumber Strategi
/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy(title="Squeeze Backtest by Shaqi v2.0", overlay=true, pyramiding=0, currency="USD", process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, backtest_fill_limits_assumption=0)
R0 = "6 Hours"
R1 = "12 Hours"
R2 = "24 Hours"
R3 = "48 Hours"
R4 = "1 Week"
R5 = "2 Weeks"
R6 = "1 Month"
R7 = "Maximum"

BL = "low"
BH = "high"
BO = "open"
BC = "close"
BHL= "mid (hl)"
BOC = "mid (oc)"

LONG = "LONG"
SHORT = "SHORT"

direction = input.string(title="Direction", defval=LONG, options=[LONG, SHORT], group="Squeeze Settings")
strategy.risk.allow_entry_in(direction == LONG ? strategy.direction.long : strategy.direction.short)
openPercent = input.float(1.4, "Open, %", minval=0.01, maxval=100, step=0.1, inline="Percents", group="Squeeze Settings") * 0.01
closePercent = input.float(0.6, "Close, %", minval=0.01, maxval=100, step=0.1, inline="Percents", group="Squeeze Settings") * 0.01
stopPercent = input.float(0.8, "Stop Loss, %", minval=0.01, maxval=100, step=0.1, inline="Percents", group="Squeeze Settings") * 0.01
isMaxBars = input.bool(true, "Max Bars To Sell", inline="MaxBars", group="Squeeze Settings")
maxBars = input.int(10, title="", minval=0, maxval=1000, step=1, inline="MaxBars", group="Squeeze Settings")
bind = input.string(BC, "Bind", options=[BL, BH, BO, BC, BHL, BOC], group="Squeeze Settings")
isRange = input.bool(true, "Fixed Range", inline="Range", group="Backtesting Period")
rangeStart = input.string(R2, "", options=[R0, R1, R2, R3, R4, R5, R6, R7], inline="Range", group="Backtesting Period")
periodStart = input(timestamp("12 Apr 2024 00:00 +0000"), "Backtesting Start", group="Backtesting Period")
periodEnd = input(timestamp("20 Apr 2024 00:00 +0000"), "Backtesting End", group="Backtesting Period")

int startDate = na
int endDate = na
if isRange
    if rangeStart == R0
        startDate := timenow - 21600000
        endDate := timenow
    else if rangeStart == R1
        startDate := timenow - 43200000
        endDate := timenow
    else if rangeStart == R2
        startDate := timenow - 86400000
        endDate := timenow
    else if rangeStart == R3
        startDate := timenow - 172800000
        endDate := timenow
    else if rangeStart == R4
        startDate := timenow - 604800000
        endDate := timenow
    else if rangeStart == R5
        startDate := timenow - 1209600000
        endDate := timenow
    else if rangeStart == R6
        startDate := timenow - 2592000000
        endDate := timenow
    else if rangeStart == R7
        startDate := time
        endDate := timenow
else 
    startDate := periodStart
    endDate := periodEnd
    
float bindOption = na
if bind == BL
    bindOption := low
else if bind == BH
    bindOption := high
else if bind == BO
    bindOption := open
else if bind == BC
    bindOption := close
else if bind == BHL
    bindOption := hl2
else
    bindOption := ohlc4

afterStartDate = (time >= startDate)
beforeEndDate = (time <= endDate)
periodCondition = true
notInTrade = strategy.position_size == 0
inTrade = strategy.position_size != 0

barsFromEntry = ta.barssince(strategy.position_size[0] > strategy.position_size[1])
entry = strategy.position_size[0] > strategy.position_size[1]
entryBar = barsFromEntry == 0
notEntryBar = barsFromEntry != 0
openLimitPrice = direction == LONG ? (bindOption - bindOption * openPercent) : (bindOption + bindOption * openPercent)

closeLimitPriceEntry = openLimitPrice * (direction == LONG ? 1 + closePercent : 1 - closePercent)
closeLimitPrice = strategy.position_avg_price * (direction == LONG ? 1 + closePercent : 1 - closePercent)

stopLimitPriceEntry = direction == LONG ? openLimitPrice - openLimitPrice * stopPercent : openLimitPrice + openLimitPrice * stopPercent
stopLimitPrice = direction == LONG ? strategy.position_avg_price - strategy.position_avg_price * stopPercent : strategy.position_avg_price + strategy.position_avg_price * stopPercent

if periodCondition and notInTrade
    strategy.entry(direction == LONG ? "BUY" : "SELL", direction == LONG ? strategy.long : strategy.short, limit = openLimitPrice, stop = stopLimitPriceEntry)
    strategy.exit("INSTANT", limit = closeLimitPriceEntry, stop = stopLimitPriceEntry, comment_profit = direction == LONG ? 'INSTANT SELL' : 'INSTANT BUY', comment_loss = 'INSTANT STOP')
if inTrade 
    strategy.cancel("INSTANT")
    strategy.exit(direction == LONG ? "SELL" : "BUY", limit = closeLimitPrice, stop = stopLimitPrice, comment_profit = direction == LONG ? "SELL" : "BUY", comment_loss = "STOP")
if isMaxBars and barsFromEntry == maxBars
    strategy.close_all(comment = "TIMEOUT STOP", immediately = true)



showStop = stopPercent <= 0.20

// plot(showStop ? stopLimitPrice : na, title="Stop Loss Limit Order", force_overlay=true, style=plot.style_linebr, color=#c50202, linewidth=1, offset=1)
// plot(closeLimitPrice, title="Take Profit Limit Order", force_overlay=true, style=plot.style_linebr, color = direction == LONG ? color.red : color.blue, linewidth=1, offset=1)
// plot(strategy.position_avg_price, title="Buy Order Filled Price", force_overlay=true, style=plot.style_linebr, color=direction == LONG ? color.blue : color.red, linewidth=1, offset=1)
plot(showStop ? stopLimitPrice : na, title="Stop Loss Limit Order", force_overlay=true, style=plot.style_linebr, color=#c50202, linewidth=1, offset=0)
plot(closeLimitPrice, title="Take Profit Limit Order", force_overlay=true, style=plot.style_linebr, color = direction == LONG ? color.red : color.blue, linewidth=1, offset=0)
plot(strategy.position_avg_price, title="Buy Order Filled Price", force_overlay=true, style=plot.style_linebr, color=direction == LONG ? color.blue : color.red, linewidth=1, offset=0)

plot(openLimitPrice, title="Trailing Open Position Limit Order", style=plot.style_stepline, color=color.new(direction == LONG ? color.blue : color.red, 30), offset=1)
plot(closeLimitPriceEntry, title="Trailing Close Position Limit Order", style=plot.style_stepline, color=color.new(direction == LONG ? color.red : color.blue, 80), offset=1)
plot(stopLimitPriceEntry, title="Trailing Stop Position Limit Order", style=plot.style_stepline, color=color.new(#c50202, 80), offset=1)