Stratégie de négociation de l'ordre cross-limit

Auteur:ChaoZhang est là., Date: 2023-11-03 17:11:34 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de trading qui utilise une moyenne mobile simple pour déterminer la direction de la tendance du marché et placer des ordres limites le long de la ligne de moyenne mobile pour suivre la tendance.

La logique de la stratégie

  1. Calculer la moyenne mobile simple (SMA) et la tendance de direction de la tendance.

  2. Si le filtre Anti-Saw est activé, la tendance haussière est identifiée lorsque les bas sont supérieurs à la SMA, la tendance baissière est identifiée lorsque les hauts sont inférieurs à la SMA. Si le filtre Anti-Saw est désactivé, la tendance haussière est identifiée lorsque la fermeture est supérieure à la SMA, la tendance baissière est identifiée lorsque la fermeture est inférieure à la SMA.

  3. Placer des ordres limites au prix SMA selon la tendance de direction de la tendance et les directions de négociation activées needlong et needshort:

    • Si une transaction longue est nécessaire (needlong est vrai) et en tendance haussière, passer un ordre limite long au prix SMA

    • Si vous avez besoin d'une transaction à découvert (needshort est vrai) et que la tendance est à la baisse, passez un ordre limite à découvert au prix SMA

  4. Définir la logique de stop loss pour les positions de sortie si la direction de la position ne correspond pas à la direction de la tendance.

  5. Ne négociez que dans une plage de dates spécifiée basée sur les paramètres de la plage de dates.

Analyse des avantages

  1. L'utilisation de la SMA pour déterminer la tendance peut filtrer efficacement le bruit du marché et bloquer la tendance à plus long terme.

  2. Placer des ordres limites au prix SMA peut obtenir de bons points d'entrée lorsque la tendance commence.

  3. Flexibilité pour aller long ou court en fonction de votre style de trading.

  4. Arrêter les pertes en place pour éviter une augmentation des pertes.

  5. Les délais de négociation sont fixés pour éviter la volatilité des événements majeurs.

Analyse des risques

  1. L'indicateur de tendance SMA a un effet de retard, peut manquer les points tournants de la tendance et entraîner des pertes.

  2. Les ordres limités manquent de souplesse, peuvent ne pas entrer en position en raison d'ajustements de tendance à court terme.

  3. Le paramètre de la période SMA doit être correctement configuré, des réglages incorrects conduisent à une mauvaise détermination de la tendance.

  4. Les paramètres de la session de négociation doivent être raisonnables afin d'éviter de manquer des opportunités ou de négocier dans des périodes à risque.

Directions d'optimisation

  1. Considérez l'ajout d'autres indicateurs pour la confirmation multi-indicateurs, en évitant les problèmes de retard SMA.

  2. Passez à la tracking des ordres de marché lorsque le prix dépasse la SMA, ce qui améliore la flexibilité de suivi.

  3. Optimiser dynamiquement la période SMA pour s'adapter aux différents cycles du marché.

  4. Réglez le stop loss à bas/haut plutôt que strictement au prix SMA pour des stops plus flexibles.

  5. Augmenter les éléments algorithmiques pour des sessions de négociation dynamiques plus intelligentes et éviter les événements à risque majeur.

Résumé

Dans l'ensemble, il s'agit d'une stratégie de suivi de tendance relativement simple, dont l'idée principale est de déterminer la direction de la tendance avec SMA et de placer des ordres limites au prix SMA pour suivre la tendance.


/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MA
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
    strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
    strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
    strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
    strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Plus de