
Cette stratégie permet d’effectuer des transactions arbitraires entre différents marchés en calculant des moyennes mobiles de régulation adaptative. La stratégie présente des caractéristiques telles que l’arbitrage entre les marchés, l’ajustement des paramètres dynamiques et la maîtrise des risques.
La stratégie définit d’abord une fonction scaleMinimax, utilisée pour normaliser la séquence temporelle à une plage spécifiée. Ensuite, elle définit une fonction rema de moyenne mobile régularisée adaptative, qui calcule la ligne de signal après lissage sig. La ligne de signal est calculée de la manière suivante:
Après avoir obtenu le signal, la stratégie décide de l’espace libre en jugant le signal par rapport au prix. En particulier:
En outre, la stratégie a ajouté le facteur de lissage smooth et la ligne de signal show_line comme paramètres réglables, ce qui améliore la flexibilité de la stratégie.
La stratégie présente les avantages suivants par rapport à la stratégie traditionnelle de la moyenne mobile:
Cette stratégie comporte aussi des risques:
La solution est d’ajuster correctement les paramètres de lissage et d’éviter les vibrations de la ligne de signal.
L’arbitrage intermarché doit s’assurer que les deux marchés sont liés par les prix et que les tendances sont cohérentes. La solution consiste à choisir un marché hautement pertinent pour l’arbitrage.
L’optimisation des paramètres nécessite l’accumulation de suffisamment de données historiques pour effectuer des retours. La solution consiste à ajuster les paramètres avec soin dans les transactions réelles.
La stratégie peut également être optimisée dans les domaines suivants:
Pour la sélection des paramètres, il est possible d’introduire des algorithmes d’apprentissage automatique pour optimiser les combinaisons de paramètres.
Dans la génération de signaux, il est possible d’introduire plus d’indicateurs pour les combiner et construire un signal de transaction plus stable.
Sur le contrôle des risques, un stop loss peut être défini pour contrôler les pertes individuelles.
L’arbitrage intermarché peut être étendu à d’autres types de transactions plus pertinents.
Cette stratégie permet d’effectuer des transactions arbitraires entre les marchés en calculant automatiquement des moyennes mobiles. Par rapport aux stratégies traditionnelles de moyennes mobiles, elle présente des avantages tels que l’auto-adaptation des paramètres, le traitement en douceur et l’arbitrage entre les marchés. La prochaine étape consiste à optimiser davantage la stratégie grâce à l’apprentissage automatique, aux signaux combinés et à la gestion des risques.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Crossover82%", overlay=true)
//
// Functions
//
scaleMinimax(X, p, min, max) =>
hi = highest(X, p), lo = lowest(X, p)
(max - min) * (X - lo)/(hi - lo) + min
rema(ts, p) => // regularized ma
rm = 0.0, lambda = .5, a = 2 / (p + 1)
rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1)
rm
//
// Inputs
//
X = input(close, title="Data source")
smooth = input(2, title="REMA smooth factor")
show_line = input(true, title="Show signal line")
//
// Main
//
p = 5
sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth)
plot(show_line ? sig : na, linewidth=1)
plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50)
longCondition = crossover(sig, X)
if (longCondition)
strategy.entry("LE", strategy.long)
shortCondition = crossunder(sig, X)
if (shortCondition)
strategy.entry("SE", strategy.short)