Strategi penembusan kejutan harga


Tanggal Pembuatan: 2023-12-13 14:36:04 Akhirnya memodifikasi: 2023-12-13 14:36:04
menyalin: 3 Jumlah klik: 635
1
fokus pada
1621
Pengikut

Strategi penembusan kejutan harga

Ringkasan

Strategi Shake-Out adalah strategi untuk melakukan perdagangan saat harga menembus titik support atau resistance yang penting. Strategi ini menggabungkan beberapa indikator teknis untuk mengidentifikasi peluang perdagangan yang penting.

Prinsip Strategi

Strategi ini didasarkan pada empat indikator teknis, yaitu garis tengah pita Brin, 48-day SMA, MACD, dan ADX. Logika spesifiknya adalah:

  1. Mempertimbangkan peluang perdagangan ketika harga menutup di atas atau di bawah SMA 48 hari;

  2. Ketika harga close out menembus garis tengah Bollinger Bands, sebagai sinyal masuk;

  3. MACD lebih besar atau lebih kecil dari 0 sebagai indikator tambahan untuk menentukan arah tren;

  4. ADX harus lebih besar dari 25 untuk menyaring non-trending.

Melakukan hal-hal yang lebih banyak atau kurang dari empat hal tersebut.

Keunggulan Strategis

Ini adalah strategi yang menggabungkan indikator tren dan getaran. Keuntungan utamanya adalah:

  1. 48 hari SMA menyaring perdagangan yang terlalu sering terjadi dan mengunci tren garis tengah-panjang;

  2. Brin Belt Breakout memiliki kemampuan yang sangat kuat untuk menahan kerusakan pada titik-titik penembusan resistance support.

  3. MACD menilai arah tren besar dan menghindari perdagangan berlawanan arah.

  4. ADX memfilter pasar non-trending untuk meningkatkan strategi kemenangan.

Secara keseluruhan, strategi ini telah dioptimalkan dalam banyak hal, seperti mengontrol frekuensi transaksi, menangkap titik-titik penting, menilai tren, dan memfilter ketidak efektifannya.

Risiko Strategis

Strategi ini memiliki risiko utama sebagai berikut:

  1. Dalam pasar yang bergejolak, garis tengah Brin sering memicu peluang perdagangan, yang dapat menyebabkan overtrading.

  2. Indikator ADX juga memiliki kesalahan dalam menilai tren dan ketidakmampuan.

  3. Pengunduran diri lebih berisiko dan cocok untuk investor yang memiliki kemampuan menanggung risiko tertentu.

Optimasi Strategi

Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:

  1. Meningkatkan indikator ATR, menetapkan stop loss, mengurangi stop loss tunggal;

  2. Optimalkan parameter pita Brin untuk mengurangi frekuensi pemicu di garis tengah;

  3. Meningkatkan volume transaksi atau indikator kekuatan tren untuk menilai kekuatan tren dan menghindari pembalikan kelemahan.

Meringkaskan

Secara keseluruhan, strategi terobosan gempa ini cukup matang, secara efektif menangkap titik-titik perdagangan penting dalam situasi gempa. Ini menggabungkan tren dan indikator gempa, untuk menangkap keseimbangan antara risiko dan keuntungan. Dengan pengoptimalan lebih lanjut, diharapkan untuk mendapatkan keuntungan tambahan yang lebih stabil.

Kode Sumber Strategi
/*backtest
start: 2023-12-11 00:00:00
end: 2023-12-12 00:00:00
period: 10m
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/
// © 03.freeman
//Volatility Traders Minds Strategy (VTM Strategy)
//I found this startegy on internet, with a video explaingin how it works.
//Conditions for entry:
//1 - Candles must to be above or bellow the 48 MA (Yellow line)
//2 - Candles must to break the middle of bollinger bands
//3 - Macd must to be above or bellow zero level;
//4 - ADX must to be above 25 level
//@version=4
strategy("Volatility Traders Minds Strategy (VTM Strategy)", shorttitle="VTM",overlay=true)
source = input(close)
//MA
ma48 = sma(source,48)
//MACD
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)

MACD = ema(source, fastLength) - ema(source, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

//BB

length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

//ADX
adxThreshold = input(title="ADX Threshold", type=input.integer, defval=25, minval=1)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	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)

//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => close>ma48 and close>basis and delta>0 and sig>adxThreshold  // functions can be used to wrap up and work out complex conditions
//exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() )    // use function or simple condition to decide when to get in
//strategy.close(id = "Buy", when = exitLong() )                  // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => close<ma48 and close<basis and delta<0 and sig>adxThreshold
//exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
//strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()