
Strategi ini adalah strategi dagangan bergolak yang berasaskan dua persamaan. Ia menggunakan persilangan purata bergerak cepat dan purata bergerak perlahan sebagai isyarat membeli dan menjual. Ia menghasilkan isyarat membeli apabila purata bergerak cepat melintasi purata bergerak perlahan dari bawah; ia menghasilkan isyarat menjual apabila purata bergerak cepat melintasi purata bergerak perlahan dari atas ke bawah.
Strategi ini menggunakan RMA panjang 6 sebagai purata bergerak cepat dan HMA panjang 4 sebagai purata bergerak perlahan. Strategi ini menilai trend harga dan menghasilkan isyarat perdagangan melalui garis cepat dan garis perlahan.
Apabila garisan pantas dari bawah melintasi garisan perlahan, ia menunjukkan harga dalam jangka pendek berputar dari bawah ke bawah, dan ia adalah masa untuk menukar cip, oleh itu strategi menghasilkan isyarat beli pada masa ini; apabila garisan pantas dari atas melintasi garisan perlahan, ia menunjukkan harga dalam jangka pendek berputar dari bawah ke bawah, dan ia adalah masa untuk menukar cip, oleh itu strategi menghasilkan isyarat jual pada masa ini.
Selain itu, strategi ini juga mengesan keputusan trend jangka panjang untuk mengelakkan perdagangan berlawanan. Hanya apabila keputusan trend jangka panjang juga menyokong isyarat itu, isyarat beli dan jual yang sebenar akan dihasilkan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Strategi dua garis rata mudah menghasilkan keuntungan kecil beberapa kali tetapi kerugian besar sekali. Penyelesaian adalah dengan menyesuaikan tahap hentian hentian yang sesuai.
Isyarat dagangan sering berlaku dalam keadaan yang bergolak, yang boleh menyebabkan dagangan berlebihan. Penyelesaian adalah dengan meringankan syarat dagangan dengan sewajarnya, mengurangkan transaksi.
Parameter strategi mudah dioptimumkan, dan mungkin tidak berfungsi dengan baik. Penyelesaian adalah ujian parameter yang stabil.
Strategi tidak berfungsi dengan baik dalam keadaan trend. Penyelesaian adalah dengan menambah modul penilaian trend atau menggunakan kombinasi dengan strategi trend.
Strategi ini boleh dioptimumkan dengan cara berikut:
Kemas kini penunjuk garis rata-rata, menggunakan penapis penyesuaian seperti Kalman.
Menambah modul pembelajaran mesin untuk menggunakan latihan AI untuk menentukan titik jual beli.
Menambah modul pengurusan wang untuk mengawal risiko secara automatik.
Di samping faktor frekuensi tinggi, ia juga membantu mencari isyarat dagangan yang lebih kuat.
Arbitrage antara pasaran pelbagai jenis.
Strategi getaran linear secara keseluruhan adalah strategi perdagangan kuantitatif yang tipikal dan praktikal. Ia mempunyai daya serap yang kuat, dan pemula dapat mempelajari banyak pengetahuan mengenai pembangunan strategi. Pada masa yang sama, ia juga mempunyai banyak ruang untuk penambahbaikan, yang dapat dioptimumkan dengan menggabungkan lebih banyak teknik kuantitatif untuk mendapatkan kesan strategi yang lebih baik.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 3m
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/
// © dc_analytics
// https://datacryptoanalytics.com/
//@version=5
strategy("Scalping Trading", overlay=true)
// INPUTS //
bar_color = input(true, title='Bar Color', group='⚙ Settings',tooltip='Color chart bars.', inline = "1")
mostrar = input(true, 'Show Alerts', group='⚙ Settings', inline = "1")
tempo = input.timeframe('60', group='⚙ Settings', title='🕗 Timeframe', options=['1', '5', '15', '30', '60', '120', '240', '360', '720', 'D', 'W'])
i_position = input.string("Bottom Center", title = "⚙ D-Panel Location",
options = ["Top Right", "Bottom Center", "Bottom Right"], group='⚙ D-Panel Settings️',
tooltip='Choose the location of the information table on the chart.(D-Panel) ')
position = i_position == "Top Right" ? position.top_right : i_position == "Bottom Center" ? position.bottom_center : position.bottom_right
i_tam = input.string('Big', title = '⚙ D-Painel Size',
options = ["Tiny", "Small", "Big"], group='⚙ D-Panel Settings️',tooltip='Choose the size of the information panel (D-Panel).')
tamanho = i_tam == "Tiny" ? size.tiny : i_tam == "Small" ? size.small : size.normal
show_tp_sl = input(true, title='Show Take Profit/Stop Loss', group='⚙ Settings',tooltip='Show Take Profit/Stop Loss.')
TP = input.float(defval=4500, title='Take Profit:',group='⚙ Risk Management',tooltip='Choose amount of profit')
SL = input.float(defval=2500, title='Stop Loss:', group='⚙ Risk Management',tooltip='Choose amount of loss')
// END INPUTS //
// DECLARATIONS //
t_up = '📈'
t_down = '📉'
c_buy = 'Long ⇡'
c_sell = 'Short ⇣'
// _DECLARATION TREND
t_sma = ta.hma(close, 200)
tend_sma = ta.sma(close, 12)
tendencia = request.security(syminfo.tickerid, timeframe.period, t_sma, barmerge.gaps_off, barmerge.lookahead_off)
tend_tabela = request.security(syminfo.tickerid, timeframe.period, tend_sma, barmerge.gaps_off, barmerge.lookahead_off)
// _END DECLARATION TREND
circle = plot.style_circles
// END DECLARATIONS //
// COLORS //
color gray = color.gray
color red = color.new(#ff8c05, 0)
color orange = color.new(#ff8c05, 0)
color silver = color.silver
color up_vol = color.new(color.green, 0)
color dn_vol = color.new(color.purple, 0)
color orange_tranp = color.new(#ff8c05, 95)
// END COLORS //
// SCANNER MARKET MAKERS //
periodo = input.int(20, 'Period Volume', group='⚙️ Scanner Market Makers Settings')
fator = input.float(1.85, 'Proportion to the mean: (1.25 = 125% of the mean)', minval=0, group='⚙️ Scanner Market Makers Settings')
vol_up = close > open
vol_down = open > close
vol = volume
pesado = volume > ta.ema(volume, periodo) * fator
palette = pesado and vol_up ? gray : pesado and vol_down ? orange : vol_up ? silver : gray
// END SCANNER MARKET MAKERS //
// LOGIC ONE //
s = ta.rma(close, 6)
v = ta.hma(close, 4)
// TREND
t_baixa = tendencia > tendencia[1]
t_alta = tendencia < tendencia[1]
te_d = tend_tabela > tend_tabela[1]
trend = te_d ? t_up : t_down
// END TREND
a = request.security(syminfo.tickerid, tempo, s)
b = request.security(syminfo.tickerid, tempo, ohlc4)
c_dn = a > b and a[1] < b[1]
c_up = b > a and b[1] < a[1]
compra = mostrar and c_up ? a : na
venda = mostrar and c_dn ? a : na
s_sell = venda and t_alta
s_buy = compra and t_baixa
c_vela = b > a and te_d ? gray : orange
s_up = false
s_dw = false
b_sinal = not s_up and s_buy
s_sinal = not s_dw and s_sell
if b_sinal
s_dw := false
s_up := true
s_up
if s_sinal
s_dw := true
s_up := false
s_up
// END LOGIC ONE //
// DATA TABLE //
c = b > a ? orange : gray
c_sinal = b > a ? c_buy : c_sell
// END DATA TABLE //
// PLOT/BARCOLOR //
c_barcolor = pesado and vol_up ? up_vol : pesado and vol_down ? dn_vol : vol_up ? c : c
barcolor(bar_color ? c_barcolor : na)
plot(a, color=orange_tranp, style=circle)
// END PLOT/BARCOLOR //
// TABLE //
var dash = table.new(position=position, columns=2, rows=3, border_width=1)
if barstate.islast
table.cell(table_id=dash, column=1, row=2, text='Scalping DCA', bgcolor=orange)
table.cell(table_id=dash, column=1, row=0, text='Trade: ' + c_sinal)
table.cell(table_id=dash, column=1, row=1, text='Trend: ' + trend)
// END TABLE //
// SETTINGS STRATEGY //
exitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)
// OPEN ORDER
if (b_sinal)
strategy.order("Long", strategy.long , comment = "Entry: " + str.tostring(close, "#.####"))
// strategy.exit("EXIT", trail_points = 1000, trail_offset = 0, comment_trailing = "Close with Profit: " + str.tostring(close, "#.####"))
// strategy.entry("long", strategy.long)
if (s_sinal)
strategy.order("Short", strategy.short , comment = "Entry: " + str.tostring(close, "#.####"))
// strategy.exit("EXIT", trail_points = 1000, trail_offset = 0, comment_trailing = "Close with Profit: " + str.tostring(close, "#.####"))
// strategy.entry("short", strategy.short)
// TP/SL ORDERS
if strategy.position_size > 0
strategy.exit('Long_Close', 'Long',profit = TP , loss=SL, qty_percent=100, comment_profit = "Profit Long: " + str.tostring(exitPrice, "#.####"), comment_loss = "Stop Long: " + str.tostring(exitPrice, "#.####"))
//if strategy.position_size > 0
// strategy.exit("Long", "Long", stop = longSL, limit = longTP, comment_profit = "Profit Long: " + str.tostring(exitPrice, "#.####"), comment_loss = "Stop Long: " + str.tostring(exitPrice, "#.####"))
if strategy.position_size < 0
strategy.exit('Short_Close', 'Short',profit = TP, loss=SL, qty_percent=100, comment_profit = "Profit Short: " + str.tostring(exitPrice, "#.####"), comment_loss = "Stop Short: " + str.tostring(exitPrice, "#.####"))
//if strategy.position_size < 0
// strategy.exit("Short", "Short", stop = shortSL, limit = shortTP, comment_profit = "Profit Short: "+ str.tostring(exitPrice, "#.####"), comment_loss = "Stop Short: " + str.tostring(exitPrice, "#.####"))
// END SETTINGS STRATEGY //
// LOGS
// if strategy.opentrades > 10
// log.warning("{0} positions opened in the same direction in a row. Try adjusting `bracketTickSizeInput`", strategy.opentrades)
// last10Perc = strategy.initial_capital / 10 > strategy.equity
// if (last10Perc and not last10Perc[1])
// log.error("The strategy has lost 90% of the initial capital!")