Le code qui pourrait amélioré votre Stratégie

Forums ProRealTime forum Français Support ProOrder Le code qui pourrait amélioré votre Stratégie

Viewing 15 posts - 1 through 15 (of 33 total)
  • #66657

    Bonjour,

    j’ai développé un Robot qui intègre lui même 3 sous robots (disons conditions pour faire moins pompeux ). Donc, ce code génère des positions  de 3 manières différentes et indépendante. (Ichi, RSI et Stoch ).  Actuellement le choix des conditions à utilisé ce fait en fonction de la volatilité à l’instant T. Çà fonction plutôt bien.

    J’aimerai optimiser ce système avec la création d’un code qui permette de tester  mes 3 conditions dans le passé.

    Sur la base d’une moyenne de positions gagnées fictives (+ réel si existantes ) détermine quelle conditions utilisé pour la position à venir et mettre les autres conditions sur off.  Il faudrait que cet sorte de test soit permanent et glissant dans le temps.

    Par exemple:

    Si simulation dans le passé donne le résulta suivant: condition1 = gain 3, perte 0 / condition2 = gain 1, perte 2  / condition3= gain 2,perte=1

    Dans ce cas, les conditions à retenir pour  la prochaine prise de position sera le N°1 le reste sur off.

    Le teste étant glissant le résultat changera au fur et à mesure du temps.

    Mais si que tout les robots testés on des résultats inférieur à 75 % de taux de réussite ils passeraient tous en off en attendant un retour de conditions favorable.

    Voilà l’idée.

    Que l’on utilise une ou trois conditions d’achats, je pense que cela pourrait apporter une nette amélioration de toutes les stratégies  , mais comment coder cela ???

    Je compte sur les plus créatif et qualifiés d’entre nous. j’espère qu’on arrivera  à avancer tous ensemble.

    En attendant vous pouvez commencer à poster vos idées et ébauche de code.

    Je compte bien entendu sur ta collaboration @Nicolas 🙂

    Merci.

    #66658

    “en fonction de la volatilité”, cela suppose qu’il faudrait tester ces 3 types de trade fictifs confronter à plusieurs critères déterminant cette volatilité (je n’ai pas d’idée de comment tu la testes), de les comparer, de les classer, puis d’indiquer un résultat. Désolé, mais cela implique la création de tableaux de données dynamiques et multi dimensionnelles, puisqu’on ne peut pas connaître à l’avance la quantité de variables nécessaires et puisqu’il faudrait également faire des boucles entre des variables dynamiques, bref.. on ne peut pas le coder sous la forme actuelle du langage de programmation.

    Je sais que PRT travaille à l’idée d’incorporer des tableaux de données (arrays), mais ça n’est pas pour tout de suite.

    Une idée simple, c’est de séparer ces 3 stratégies en stratégie individuelle, de tester les résultats en “fonction de la volatilité” avec l’optimiseur de variables, de constater le bon compromis, puis d’introduire ces paramétries dans le robot global en configurant un switch en fonction de celles-ci pour activer ou non telle ou telle stratégie. J’espère avoir été clair.

    #66661

    L’optimisation des progs par rapport a un niveau de volatilité c’est exactement ce que je fais actuellement et ça fonctionne correctement. j’ai simplement déterminé quel prog  à utilisé en fonction d’un fourchette volatilité (ex: if vola>=10 AND vola<20 then  Prog 1 =1 )

    Ce que je voudrait, c’est oublier la volatilité pour sélectionner les bonnes conditions.

    j’aimerai trouver une autre manière de sélectionner mes sous programes.

    j’aimerai faire cela en fonction des résultats passé (fictif ou existant).

    Remarque  je suis ouvert à d’autres solution mais mon idée me parait prometteuse même si elle demande certainement pas mal de codage

     

    #66662

     

    #66688

    @Nicolas

    Pour faire plus simple:

    On vas oublié la volatilité car ça complique vraiment la tache. On vas resté uniquement sur des positions réel du passé.

    Je pense qu’il est possible de créer une boucles  dans lequel tourne un de mes programmes.  Si pendant la duré de la boucle,  le nombre de positions gagnantes représente 75 %  de réussite alors la condition est valide. Donc si valide 1=on else 0= off

    Sachant que mon robot tourne en M1 et j’aimerai qu’il soit tester sur un semaine il faudrait que la boucle fasse 7 j  x 24 h x 60 min =10 080 bougies de M1

    time = 0
    while time <10080 do
    time=time
    wend
    Pour commencer, je pense que ma boucle est certainement fausse. De plus, il me semble qu’on sera limité à une journée soit 24h x 60= 1440  et non 10 080
    Après, comment je peux insérer le teste de mon robot dans cette boucle et comment je peux déterminer sont taux de réussite et en fonction du résultat rendre la condition valide ou pas.
    Dans ce cas faut-il aussi créer un des tableaux de données?
    Arriverais-tu à écrire un code différent mais qui pourrait remplir la fonction décrite plus haut ?
    #66692

    Une boucle de 10.000 bougies me semble trop importante pour ProBacktest/ProOrder. Une solution plus viable serait d’utiliser une boucle dans les ordres, au lieu du temps (bougies) et de l’arrêter lorsque l’on trouver que le barindex de l’ordre date d’il y a une semaine, un code vite fait, à tester:

     

    La variable ratio devrait donner la valeur en 1/100 de réussite.

    #66695

    Super Nicolas, merci.

    j’ai 2 hypothèses:

    j’intègre ton code directement dans le mon pro-order

    ou

    Je transforme mon robot + ton code en indicateur (sans la boucle mais en gardant la limitation de une semaine)

     

    Ça devrais me données des positions de références fictives et me permettre de démarrer mon pro-Order avec un historique existant

    Dans mon Pro-order j’utilise la fonction:

    quand pense tu ?

     

    #66696

     

    #66698

    l’option de l’indicateur permet entre autre de remettre le Pro-order  en route quand les conditions de gain sont de nouveaux réuni

    #66706

    Les instructions utilisées dans le code que j’ai fourni ne sont compatibles qu’avec ProBacktest, impossible de l’utiliser en indicateur et de l’appeler en CALL.

    Par ailleurs, le code donne un ratio et non un pourcentage, donc lire 0.75 plutôt que 75.

    #66717

    bonjour,

    Existe t’il un indicateur sonore avec l’indicateur Ichimoku qui me signale la cloture de la bougie  sous ou sur la kijun ?

    Merci pour votre aide

    #66718

    j’ai testé ton code sur une stratégie simpliste au possible et ça ne fonctionne pas. J’ai beau chercher dans ma stratégie et ton code je ne vois pas d’ou cela peut venir.

    Si dessous une stratégie faite à la volé sur Eur/Usd M1. Que tu mette 10% ou 90% tu as toujours le même nombre de positions et aucun stop de la stratégie. j’ai essayé de ré-initialisé la variable “ratio” mais sans succès non plus. Pourrais-tu jeter un œil STP

     

    #66719

    je n’avais pas vu ton post concernant le retour de la variable en ratio et non en pourcentage. j’ai modifié et ça fonctionne. je suis en train de vérifier quelques détails et je post le résultat. Je précise que cette stratégie avait pour but de tester le code stop en cas de période défavorable. En aucun cas il s’agissait de faire une stratégie rentable.

    #66721

    voilà ça fonctionne très bien. Encore merci @Nicolat.

    ça vas me permette de mettre en route des stratégies et ne pas être obligé de les surveiller tous les jours comme le lait sur le feu. Je vais bien sur optimiser la durée de la boucle en fonction et le taux de perte acceptable, mais ça ouvre pas mal de possibilité.

    Par contre comment faire pour remettre en route(automatiquement) quand les conditions de marché re-deviennent favorable ?

     

     

    #66743

    Je voulais vérifier ma théorie qui consiste à dire que si on démarre une stratégie basique (même médiocre) et qu’on l’arrête quand les variable ne sont plus en phase avec le marché actuel (soit gains sont inférieur à 75 %) on arrive à générer du profil.

    Dans le screen ci dessous, la première courbe de gain est la stratégie de base, la deuxième c’est le même code avec l’ajout du stop codé par @nicolas. Pour la  troisième courbe de gain, j’ai donc imaginé un ré-démarrage très basique (code ci-dessous) basé sur un croisement à la hausse d’une moyenne mobile. La stratégie qui au départ était médiocre devient rentable et inintéressante.

    Maintenant, comment faire pour améliorer l’option de ré-démarrage de la stratégie ?

    Des idées ?

Viewing 15 posts - 1 through 15 (of 33 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login