
Strategi perdagangan rata-rata bergerak sinyal-ke-kebisingan
Strategi ini memungkinkan perdagangan kuantitatif dengan menghitung rasio bising sinyal dalam periode tertentu, kemudian menggabungkan sinyal perdagangan linier. Ide dasarnya adalah:
Strategi ini memiliki beberapa keuntungan utama:
Strategi ini juga memiliki beberapa risiko:
Solusi Risiko:
Strategi ini dapat dioptimalkan dengan:
Strategi ini menilai risiko volatilitas pasar melalui rasio sinyal-kebisingan, dan menggunakan garis rata untuk menghasilkan sinyal perdagangan, untuk mencapai perdagangan kuantitatif. Strategi ini mengintegrasikan rasio sinyal-kebisingan dan SMA masing-masing keunggulan dibandingkan dengan indikator teknis tunggal, meningkatkan stabilitas sambil mengendalikan risiko. Dengan cara pengoptimalan parameter dan pembelajaran mesin, strategi ini memiliki banyak ruang untuk perbaikan, merupakan strategi perdagangan kuantitatif yang andal dan efektif.
/*backtest
start: 2023-12-25 00:00:00
end: 2023-12-29 10:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter 05/01/2021
// The signal-to-noise (S/N) ratio.
// And Simple Moving Average.
// Thank you for idea BlockchainYahoo
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
SignalToNoise(length) =>
StN = 0.0
for i = 1 to length-1
StN := StN + (1/close[i])/length
StN := -10*log(StN)
strategy(title="Backtest Signal To Noise ", shorttitle="StoN", overlay=false)
length = input(title="Days", type=input.integer, defval=21, minval=2)
Smooth = input(title="Smooth", type=input.integer, defval=7, minval=2)
reverse = input(false, title="Trade reverse")
StN = SignalToNoise(length)
SMAStN = sma(StN, Smooth)
pos = iff(SMAStN[1] > StN[1] , -1,
iff(SMAStN[1] < StN[1], 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 )
plot(StN, title='StN' )
plot(SMAStN, title='Smooth', color=#00ff00)