Strategi ini adalah strategi perdagangan komprehensif yang berlaku untuk Bitcoin dan cryptocurrency lainnya dalam jangka waktu 15 menit. Ini mengintegrasikan beberapa indikator untuk menghasilkan sinyal beli dan jual, termasuk moving average triangular, amplitudo rata-rata real, dan grafik penggulung garis keseimbangan, serta memiliki mekanisme manajemen risiko seperti stop loss.
Strategi ini menggunakan beberapa indikator berikut:
Triple Index Moving Average (TEMA): 3 TEMA dengan panjang dan sumber yang berbeda, berdasarkan harga tertinggi, terendah, dan penutupan.
Rata-rata amplitudo fluktuasi nyata ((ATR): menggunakan ATR kustom EMA halus untuk menghitung volatilitas pasar.
Indikator overtrend: menentukan arah tren berdasarkan ATR dan kelipatan.
Rata-rata Bergerak Sederhana ((SMA): SMA untuk TEMA periode pendek dihitung dengan nilai rata-rata.
Harga penutupan lini keseimbangan: untuk konfirmasi tambahan tren.
Ketika TEMA periode pendek lebih tinggi dari dua TEMA periode panjang, indikator overtrend lebih bullish, TEMA periode pendek lebih tinggi dari SMA-nya, dan harga penutupan garis keseimbangan lebih tinggi dari hari sebelumnya, menghasilkan sinyal beli.
Ketika TEMA berjangka pendek lebih rendah dari dua TEMA berjangka panjang, indikator overtrend turun, TEMA berjangka pendek lebih rendah dari SMA-nya, dan harga penutupan garis keseimbangan lebih rendah dari hari sebelumnya, menghasilkan sinyal jual.
Stop loss ditetapkan masing-masing 1% dan 3% dari harga masuk.
Menggabungkan beberapa indikator faktor seperti tren, volatilitas, dan bentuk, dapat meningkatkan akurasi penilaian dan menghindari sinyal palsu.
Pengaturan Stop Loss yang masuk akal dapat mengunci keuntungan, tetapi juga dapat secara efektif membatasi kerugian.
Parameter indikator dapat disesuaikan secara fleksibel untuk menyesuaikan diri dengan perubahan pasar dan mencari kombinasi terbaik.
Menambahkan faktor biaya untuk membuat hasil pengukuran lebih dekat dengan kinerja transaksi yang sebenarnya.
Terlalu banyak kombinasi indikator juga dapat menyebabkan kesalahan penilaian, yang memerlukan evaluasi yang cermat tentang efektivitas indikator.
Operasi 15 menit lebih rentan terhadap kejadian yang tidak terduga dibandingkan dengan siklus yang lebih panjang, dan ada risiko yang lebih besar untuk insiden.
Strategi ini masih perlu diuji coba dalam jangka waktu yang lebih lama dan di banyak pasar untuk memastikan stabilitas.
Kombinasi multi-indikator membawa sejumlah besar parameter, dan mengoptimalkan semua kombinasi parameter membutuhkan waktu yang lebih lama.
Uji ulang pengujian efek peningkatan aktual dari masing-masing indikator, hindari penggunaan indikator yang berlebihan.
Hasil pengujian parameter optimasi di lebih banyak pasar, memastikan stabilitas dan keandalan.
Pengendalian risiko yang lebih lanjut dapat dilakukan dengan cara seperti menggerakkan stop loss, menggantung stop loss, dan sebagainya.
Biaya slippoint dan lain-lain membuat penghitungan lebih realistis.
Strategi ini menggabungkan beberapa indikator dan mekanisme pengendalian risiko yang dirancang untuk perdagangan siklus 15 menit Bitcoin. Ada banyak ruang untuk pengoptimalan, yang memerlukan pengukuran mendalam untuk mengevaluasi efek indikator, pengujian stabilitas pasar yang luas, dan penambahan lebih banyak pertimbangan real-time untuk menemukan kombinasi parameter yang optimal dalam strategi multi-faktor.
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-09 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/
// © deperp
//@version=5
strategy('3kilos', shorttitle='3kilos BTC 15m', overlay=true, initial_capital=100000, max_bars_back=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)
short = input.int(50, minval=1)
srcShort = input(high, title='TEMA short')
long = input.int(100, minval=1)
srcLong = input(low, title='TEMA long 2')
long2 = input.int(350, minval=1)
srcLong2 = input(close, title='TEMA long 3')
atrLength = input.int(550, title='ATR Length', minval=1)
mult = input.float(3, title="Multiplier", minval=0.5, step=1)
smaPeriod = input.int(100, title="SMA Period", minval=1)
takeProfitPercent = input.float(1, title="Take Profit (%)", minval=0.1) / 100
stopLossPercent = input.float(3, title="Stop Loss (%)", minval=0.1) / 100
tema(src, length) =>
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)
3 * (ema1 - ema2) + ema3
tema1 = tema(srcShort, short)
plot(tema1, color=color.new(color.red, 0), linewidth=2)
tema2 = tema(srcLong, long)
plot(tema2, color=color.new(color.blue, 0), linewidth=2)
tema3 = tema(srcLong2, long2)
plot(tema3, color=color.new(color.green, 0), linewidth=2)
// Custom ATR calculation with EMA smoothing
atr_ema(src, length) =>
trueRange = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
emaTrueRange = ta.ema(trueRange, length)
emaTrueRange
// Calculate ATR with EMA smoothing
atr = atr_ema(close, atrLength)
// Calculate Supertrend
var float up = na
var float dn = na
var bool uptrend = na
up := na(up[1]) ? hl2 - (mult * atr) : uptrend[1] ? math.max(hl2 - (mult * atr), up[1]) : hl2 - (mult * atr)
dn := na(dn[1]) ? hl2 + (mult * atr) : uptrend[1] ? hl2 + (mult * atr) : math.min(hl2 + (mult * atr), dn[1])
uptrend := na(uptrend[1]) ? true : close[1] > dn[1] ? true : close[1] < up[1] ? false : uptrend[1]
// Calculate SMA
sma = ta.sma(tema1, smaPeriod)
// Heikin-Ashi Close
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
// Trend determination using Heikin-Ashi Close
longC = tema1 > tema2 and tema1 > tema3 and uptrend and tema1 > sma and haClose > haClose[1]
shortC = tema1 < tema2 and tema1 < tema3 and not uptrend and tema1 < sma and haClose < haClose[1]
alertlong = longC and not longC[1]
alertshort = shortC and not shortC[1]
useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2023"),
title="Start Date", group="Backtest Time Period",
tooltip="This start date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
inTradeWindow = true
stopLossLevelLong = close - atr * mult
stopLossLevelShort = close + atr * mult
longTakeProfitLevel = close * (1 + takeProfitPercent)
longStopLossLevel = close * (1 - stopLossPercent)
shortTakeProfitLevel = close * (1 - takeProfitPercent)
shortStopLossLevel = close * (1 + stopLossPercent)
if inTradeWindow and longC
strategy.entry('Long', strategy.long, comment='Long')
strategy.exit("TP Long", "Long", limit=longTakeProfitLevel, stop=longStopLossLevel, comment="TP/SL Long")
if inTradeWindow and shortC
strategy.entry('Short', strategy.short, comment='Short')
strategy.exit("TP Short", "Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel, comment="TP/SL Short")
// Alerts
alertcondition(longC, title='Long', message=' Buy Signal ')
alertcondition(shortC, title='Short', message=' Sell Signal ')