
Стратегия движущейся средней торговли (Signal-to-Noise)
Эта стратегия позволяет осуществлять количественную торговлю, рассчитывая коэффициент сигнала-шум в течение определенного периода, а затем объединяя равнолинейные торговые сигналы. Основная идея заключается в следующем:
Основные преимущества этой стратегии:
Однако эта стратегия также несет в себе некоторые риски:
Решение риска:
Эта стратегия может быть оптимизирована в следующих аспектах:
Эта стратегия использует сигнал-шум, чтобы оценить рыночные риски и генерировать торговые сигналы, чтобы реализовать количественную торговлю. По сравнению с одним техническим показателем, эта стратегия объединяет свои преимущества в отношении сигнал-шум и SMA, повышая стабильность при одновременном контроле риска. Эта стратегия имеет большое место для улучшения с помощью параметрической оптимизации и машинного обучения.
/*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)