Stratégie de marche aléatoire


Date de création: 2023-10-09 16:10:24 Dernière modification: 2023-10-09 16:10:24
Copier: 0 Nombre de clics: 707
1
Suivre
1617
Abonnés

Aperçu

La stratégie de dérivation aléatoire est une stratégie de trading automatique basée sur la génération de nombres aléatoires. La stratégie utilise un générateur d’équilibre linéaire pour générer des nombres aléatoires de graines en fonction des paramètres, des nombres supérieurs à la plus-value en cas de dépréciation et inférieurs à la moins-value en cas de dépréciation, permettant l’entrée aléatoire dans des positions de plus-value en cas de dépréciation.

Principe de stratégie

La stratégie consiste principalement à réaliser des transactions aléatoires par le biais des éléments suivants:

  1. Les paramètres a, c et m, générés par un nombre aléatoire, ainsi que la semence initiale sont définis.

  2. Définition de la fonction de génération de nombres aléatoires GetRandom, qui génère des nombres aléatoires entre 0 et m à l’aide d’un algorithme linéaire isocratique.

  3. Pour chaque ligne K, le nombre aléatoire généré est plus petit que m/2, sinon vide.

  4. Définir les conditions de stop loss et de stop loss en pourcentage.

  5. Réglez la période de retour par période de temps.

Grâce aux étapes ci-dessus, la stratégie permet d’effectuer des opérations de multiplication et de blanchiment complètement aléatoires. Lorsque le nombre aléatoire est supérieur à m/2, les ordres sont ouverts, sinon les ordres sont ouverts, puis le stop loss est réglé pour quitter la position.

Analyse des avantages

  • La logique de la stratégie est simple, claire et facile à comprendre.

  • Les transactions aléatoires permettent d’éviter l’influence des émotions et de réduire les erreurs subjectives.

  • Les paramètres de l’algorithme de génération de nombres aléatoires peuvent être personnalisés pour ajuster le caractère aléatoire.

  • Il est possible de régler de manière flexible les conditions d’arrêt des pertes et de contrôler les pertes individuelles.

  • Prise en charge de l’optimisation des paramètres de rétro-mesure pour tester l’impact des différents paramètres sur le rendement global.

Analyse des risques

  • Les transactions aléatoires peuvent avoir une tendance incertaine à long terme, avec des rendements incertains.

  • Il n’est pas possible de modifier sa position en fonction de la situation du marché et de rater une opportunité de tendance.

  • Les bénéfices individuels sont limités et le risque de retrait élevé.

  • Il est nécessaire de définir un ratio de stop-loss raisonnable pour éviter des pertes excessives.

  • Le hasard peut entraîner des positions de plus en plus courtes et des frais de transaction plus élevés.

  • Les paramètres de validation doivent être entièrement testés pour vérifier la rationalité de la configuration et ne doivent pas être utilisés à l’aveugle.

Il est possible de réduire le risque en ajoutant des fonctions telles que le jugement de la tendance, la réduction du nombre de positions ouvertes au hasard, l’optimisation du mécanisme d’arrêt des pertes et le contrôle strict des pertes individuelles.

Direction d’optimisation

  • Il y a aussi des gens qui ne sont pas d’accord avec le fait qu’il y ait une différence de prix entre les deux.

  • Adhérer à la gestion de position et ajuster la taille de la position en fonction de la variation des fonds.

  • Optimiser les algorithmes de génération de nombres aléatoires pour améliorer la randomisation.

  • La dynamique d’ajustement de la marge de freinage est la suivante:

  • Ajout d’une limite de fréquence d’ouverture des positions.

  • La rétroanalyse de combinaison de plusieurs paramètres pour trouver le paramètre optimal.

Résumer

La stratégie de randomisation permet d’effectuer des transactions mécaniques par le biais d’un contrôle aléatoire des nombres. La stratégie est fortement aléatoire, sans influence sur les émotions personnelles, et évite le risque d’erreurs subjectives. Mais l’ouverture de positions aléatoires peut également manquer des opportunités de tendance, des gains individuels limités, nécessitant un mécanisme de contrôle du risque optimisé.

Code source de la stratégie
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

a = 16
c = 10
m = 1000
GetRandom(prev) =>
    GetRandom = (a * prev + c) % m

seed = input(200, minval = 2, maxval = m)
stopLoss = input(30, title = "Stop loss percentage(0.1%)")
takeProfit = input(30, title = "Take profit percentage(0.1%)")


curRandom = na
curRandom := nz(curRandom[1]) == 0 ? seed : GetRandom(curRandom[1])
if (strategy.position_size == 0)
    if (curRandom >= m / 2)
        strategy.entry("Enter", strategy.long)
    else
        strategy.entry("Enter", strategy.short)
        
    strategy.exit("Exit", "Enter", loss = close * stopLoss / 1000 / syminfo.mintick, profit = close * takeProfit / 1000 / syminfo.mintick)            

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()