ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

PRT grid RR2 sans moyennage et avec pyramidage

par koub » 17 Fév 2015 20:58

Plop la team, on continue dans les codes farfelus, un petit grid sans moyennage sur le Dax avec un Reward Ratio supérieur ou égal à 2.

Entrée quasi aléatoire car le robot compare le Close de la bougie fraîchement clôturée avec le DayClose du jour précédent...

Par principe et pour éviter les problèmes de sur-optimisation, les variables des tests ci-dessous ne sont pas optimisées, libre à vous d'effectuer des tests complémentaires...

Les codes ci-dessous sont à titre expérimental, je vous déconseille fortement de les utiliser en réel (pour info: les trailing stop présents ne sont pas digérés par le ProOrder actuel)


Code: Tout sélectionner
// Déclaration des variables de traitement et configuration robot
DEFPARAM FlatBefore = 080000
DEFPARAM FlatAfter = 173000

PointBas = ROUND(Open[1]/50) * 50
PointHaut = PointBas + 50

// Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[2]<PointBas AND Close[1]>PointBas AND Close[1]>DClose(1) THEN
BUY 1 CONTRACTS AT MARKET
SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[2]<PointHaut AND Close[1]>PointHaut AND Close[1]>DClose(1) THEN
BUY 1 CONTRACTS AT MARKET
SET STOP pLOSS 25 pTRAILING 50
ENDIF

// Conditions pour ouvrir une position en vente à découvert
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[2]>PointBas AND Close[1]<PointBas AND Close[1]<DClose(1) THEN
SELLSHORT 1 CONTRACTS AT MARKET
SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[2]>PointHaut AND Close[1]<PointHaut AND Close[1]<DClose(1) THEN
SELLSHORT 1 CONTRACTS AT MARKET
SET STOP pLOSS 25 pTRAILING 50
ENDIF


Non optimisé, il sort flat sur un test ce jour sur le Dax en UT1min...

Axe de réflexion: filtrage supplémentaire (vision MTF UT sup) + pyramidage perso ??? impossible de coder ça correctement sur PRT...

A votre écoute, koub. :D
Fichiers joints

Re: Grid RR2 sans moyennage

par koub » 18 Fév 2015 20:14

Forcé de constater que ce post n'inspire pas grand monde...

+ :D

Re: Grid RR2 sans moyennage

par Greg31600 » 18 Fév 2015 22:39

Je ne l'avais pas vu ;)

Je regarde çà & tu sais pourquoi ???
Spoiler:
Juste parce que tu partages et cela j'apprécies tout particulièrement


Merci

Re: Grid RR2 sans moyennage

par artes88 » 20 Fév 2015 13:13

C'est du MT4?

Re: Grid RR2 sans moyennage

par koub » 20 Fév 2015 20:12

non PRT... MT4 ne sert à rien avec IG, le spread est abérant...

Spoiler:
je dirai même titanesque...

Re: Grid RR2 sans moyennage

par koub » 22 Fév 2015 14:26

Plop, pb sur le code original, ci-dessous la version corrigée:

Code: Tout sélectionner
// Déclaration des variables de traitement et configuration robot
DEFPARAM FlatBefore = 080000
DEFPARAM FlatAfter = 173000

// Calcul des points haut et bas
PointBas = ROUND(Open[1]/50) * 50
PointHaut = PointBas + 50

// Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointBas AND Close>PointBas AND Close>DClose(1) THEN
             BUY 1 CONTRACTS AT MARKET
             SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND Close>DClose(1) THEN
             BUY 1 CONTRACTS AT MARKET
             SET STOP pLOSS 25 pTRAILING 50
ENDIF

// Conditions pour ouvrir une position en vente à découvert
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointBas AND Close<PointBas AND Close<DClose(1) THEN
             SELLSHORT 1 CONTRACTS AT MARKET
             SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND Close<DClose(1) THEN
             SELLSHORT 1 CONTRACTS AT MARKET
             SET STOP pLOSS 25 pTRAILING 50
ENDIF
Fichiers joints

Re: Grid RR2 sans moyennage

par Eversa » 22 Fév 2015 15:22

Spoiler:
HS:Dès que je vois une histoire de codage, j'accours, et "il" est là.

Re: Grid RR2 sans moyennage

par koub » 22 Fév 2015 18:39

LoL Eversa, oui ça bricole le dimanche... :)

Code modifié avec un pyramidage façon GRID sans incrémentation de lots:
Code: Tout sélectionner
// Déclaration des variables de traitement et configuration robot
DEFPARAM CumulateOrders = True
DEFPARAM FlatBefore = 080000
DEFPARAM FlatAfter = 173000
ONCE LastPricePosition = 0

// Calcul des points haut et bas
PointBas = ROUND(Open[1]/50) * 50
PointHaut = PointBas + 50

// Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointBas AND Close>PointBas AND Close>DClose(1) THEN
        BUY 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND Close>DClose(1) THEN
        BUY 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF LongOnMarket AND Close[1]<PointBas AND Close>PointBas AND Close>DClose(1) AND (Close-LastPricePosition)>=50 THEN
        BUY 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF LongOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND Close>DClose(1) AND (Close-LastPricePosition)>=50 THEN
        BUY 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF

// Conditions pour ouvrir une position en vente à découvert
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointBas AND Close<PointBas AND Close<DClose(1) THEN
        SELLSHORT 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND Close<DClose(1) THEN
        SELLSHORT 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF ShortOnMarket AND Close[1]>PointBas AND Close<PointBas AND Close<DClose(1) AND (LastPricePosition-Close)>=50 THEN
        SELLSHORT 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF ShortOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND Close<DClose(1) AND (LastPricePosition-Close)>=50 THEN
        SELLSHORT 1 CONTRACTS AT MARKET
        LastPricePosition = Close
        SET STOP pLOSS 25 pTRAILING 50
ENDIF
Fichiers joints

Re: Grid RR2 sans moyennage

par koub » 22 Fév 2015 19:13

Code modifié avec un pyramidage à incrémentation de lots: 1 1 2 4 8 16 32 etc.

Le compte explose en plein vol... :lol:

Code: Tout sélectionner
// Déclaration des variables de traitement et configuration robot
DEFPARAM CumulateOrders = True
DEFPARAM FlatBefore = 080000
DEFPARAM FlatAfter = 173000
ONCE LastPricePosition = 0
ONCE x = 0

// Calcul des points haut et bas
PointBas = ROUND(Open[1]/50) * 50
PointHaut = PointBas + 50


// Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointBas AND Close>PointBas AND Close>DClose(1) THEN
         BUY 1 CONTRACTS AT MARKET
         LastPricePosition = Close
         x = 0
         SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND Close>DClose(1) THEN
         BUY 1 CONTRACTS AT MARKET
         LastPricePosition = Close
         x = 0
         SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF LongOnMarket AND Close[1]<PointBas AND Close>PointBas AND Close>DClose(1) AND (Close-LastPricePosition)>=50 THEN
         IF x = 0 THEN
                  x = 1
         ENDIF
         IF x > 0 THEN
                  x = x * 2
         ENDIF
         BUY x CONTRACTS AT MARKET
         LastPricePosition = Close
         SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF LongOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND Close>DClose(1) AND (Close-LastPricePosition)>=50 THEN
         IF x = 0 THEN
                  x = 1
         ENDIF
         IF x > 0 THEN
                  x = x * 2
         ENDIF
         BUY x CONTRACTS AT MARKET
         LastPricePosition = Close
         SET STOP pLOSS 25 pTRAILING 50
ENDIF


// Conditions pour ouvrir une position en vente à découvert
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointBas AND Close<PointBas AND Close<DClose(1) THEN
         SELLSHORT 1 CONTRACTS AT MARKET
         LastPricePosition = Close
         x = 0
         SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND Close<DClose(1) THEN
         SELLSHORT 1 CONTRACTS AT MARKET
         LastPricePosition = Close
         x = 0
         SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF ShortOnMarket AND Close[1]>PointBas AND Close<PointBas AND Close<DClose(1) AND (LastPricePosition-Close)>=50 THEN
         IF x = 0 THEN
                  x = 1
         ENDIF
         IF x > 0 THEN
                  x = x * 2
         ENDIF
         SELLSHORT x CONTRACTS AT MARKET
         LastPricePosition = Close
         SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF ShortOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND Close<DClose(1) AND (LastPricePosition-Close)>=50 THEN
         IF x = 0 THEN
                  x = 1
         ENDIF
         IF x > 0 THEN
                  x = x * 2
         ENDIF
         SELLSHORT x CONTRACTS AT MARKET
         LastPricePosition = Close
         SET STOP pLOSS 25 pTRAILING 50
ENDIF


A votre écoute... :musique:
Fichiers joints

Re: Grid RR2 sans moyennage

par koub » 22 Fév 2015 20:18

Code modifié au niveau de l'entrée: comparaison de moyennes mobiles de période 1 et 100 (prix clôture bougie)

On garde le pyramidage à incrémentation de lots du dernier test...
Code: Tout sélectionner
// Déclaration des variables de traitement et configuration robot
DEFPARAM CumulateOrders = True
DEFPARAM FlatBefore = 080000
DEFPARAM FlatAfter = 173000
ONCE LastPricePosition = 0
ONCE x = 0

// Calcul des points haut et bas
PointBas = ROUND(Open[1]/50) * 50
PointHaut = PointBas + 50

// Indicateurs MM
MM100 = Average[100](Close)
MM1 = Average[1](Close)

// Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointBas AND Close>PointBas AND MM1>MM100 THEN
          BUY 1 CONTRACTS AT MARKET
          LastPricePosition = Close
          x = 0
          SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT LongOnMarket AND NOT ShortOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND MM1>MM100 THEN
          BUY 1 CONTRACTS AT MARKET
          LastPricePosition = Close
          x = 0
          SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF LongOnMarket AND Close[1]<PointBas AND Close>PointBas AND MM1>MM100 AND (Close-LastPricePosition)>=50 THEN
          IF x = 0 THEN
                    x = 1
          ENDIF
          IF x > 0 THEN
                    x = x * 2
          ENDIF
          BUY x CONTRACTS AT MARKET
          LastPricePosition = Close
          SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF LongOnMarket AND Close[1]<PointHaut AND Close>PointHaut AND MM1>MM100 AND (Close-LastPricePosition)>=50 THEN
          IF x = 0 THEN
                    x = 1
          ENDIF
          IF x > 0 THEN
                    x = x * 2
          ENDIF
          BUY x CONTRACTS AT MARKET
          LastPricePosition = Close
          SET STOP pLOSS 25 pTRAILING 50
ENDIF


// Conditions pour ouvrir une position en vente à découvert
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointBas AND Close<PointBas AND MM1<MM100 THEN
          SELLSHORT 1 CONTRACTS AT MARKET
          LastPricePosition = Close
          x = 0
          SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF NOT ShortOnMarket AND NOT LongOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND MM1<MM100 THEN
          SELLSHORT 1 CONTRACTS AT MARKET
          LastPricePosition = Close
          x = 0
          SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF ShortOnMarket AND Close[1]>PointBas AND Close<PointBas AND MM1<MM100 AND (LastPricePosition-Close)>=50 THEN
          IF x = 0 THEN
                    x = 1
          ENDIF
          IF x > 0 THEN
                    x = x * 2
          ENDIF
          SELLSHORT x CONTRACTS AT MARKET
          LastPricePosition = Close
          SET STOP pLOSS 25 pTRAILING 50
ENDIF
IF ShortOnMarket AND Close[1]>PointHaut AND Close<PointHaut AND MM1<MM100 AND (LastPricePosition-Close)>=50 THEN
          IF x = 0 THEN
                    x = 1
          ENDIF
          IF x > 0 THEN
                    x = x * 2
          ENDIF
          SELLSHORT x CONTRACTS AT MARKET
          LastPricePosition = Close
          SET STOP pLOSS 25 pTRAILING 50
ENDIF


On aura beau dire, comme quoi l'entrée n'est pas le principal d'un système... Ces différents tests prouvent un peu le contraire, on peut se dépatouiller à gérer un trade issu d'une entrée aléatoire mais une entrée un peu + structurée (aussi simple soit-elle) change clairement la donne...

Je m’arrête là sur le sujet mais ce que l'on pourra constaté avec ce dernier test:
- La performance est sur des positions à la vente, donc plutôt sur de la consolidation.
- Étonnant car la tendance en UT supérieure est clairement à l'achat.
- HS mais il mériterait un filtrage supplémentaire
- Un robot contrarien, s'il pouvait faire de même en suivi de tendance... :lol:

N'hésitez pas à laisser vos commentaires, koub. :roll:
Fichiers joints
Rapport.pdf
Rapport complet de ce BT:

Articles en relation
Création d'un EA sans programmation.
par Gil79 » 14 Déc 2016 00:51 (6 Réponses)
Programme avec différentes UT
par Topitop » 28 Fév 2017 22:13 (16 Réponses)
Sorties partielles avec ProOrder
par Benoist » 02 Déc 2016 14:26 (1 Réponses)
Programmer en UT1' avec des signaux UT15'
par Apo-71 » 19 Avr 2017 08:15 (5 Réponses)
Plateforme de trading auto avec IG
Fichier(s) joint(s) par Alex44 » 27 Mai 2017 15:21 (28 Réponses)
quelles infos accessibles avec la clé de démo ?
par Lysan » 14 Jan 2017 12:50 (2 Réponses)

ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé