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

PRT grid RR2 sans moyennage et avec pyramidage

par koub » 17 févr. 2015 19: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 : #

// 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évr. 2015 19:14

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

+ :D

Re: Grid RR2 sans moyennage

par Greg31600 » 18 févr. 2015 21: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évr. 2015 12:13

C'est du MT4?

Re: Grid RR2 sans moyennage

par koub » 20 févr. 2015 19: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évr. 2015 13:26

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

Code : #

// 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 Amarantine » 22 févr. 2015 14:22

Spoiler:
HS:Dès que je vois une histoire de codage, j'accours, et "il" est là.
b_wink.gif
b_wink.gif (593 Octets) Vu 1309 fois

Re: Grid RR2 sans moyennage

par koub » 22 févr. 2015 17:39

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

Code modifié avec un pyramidage façon GRID sans incrémentation de lots:

Code : #

// 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évr. 2015 18: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 : #

// 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évr. 2015 19: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 : #

// 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:
(401.06 Kio) Téléchargé 414 fois

Sujets similaires
Grid Sight Index (GSI)
par Simeou » 11 mai 2020 18:27 (2 Réponses)
Grid Trading sur NDX
Fichier(s) joint(s) par vankyle » 03 sept. 2021 08:44 (18 Réponses)
Le moyennage
Fichier(s) joint(s) par kapistar » 29 avr. 2014 12:38 (12 Réponses)
Nikkei, moyennage et CF"K"
Fichier(s) joint(s) par kapistar » 15 mai 2014 11:14 (28 Réponses)
Fin du trading ou fin du moyennage ?
par Guillaume » 12 nov. 2015 16:59 (29 Réponses)
Moyennage arc en ciel pour DINO
Fichier(s) joint(s) par fxbravo » 15 sept. 2018 02:17 (32 Réponses)
L'Art du Moyennage
Fichier(s) joint(s) par JFLB » 06 mars 2020 12:56 (8 Réponses)
pyramidage
par phph59 » 05 janv. 2013 15:37 (7 Réponses)
Pyramidage, à la VinceMan
Fichier(s) joint(s) par ladefense92800 » 12 juin 2013 23:53 (49 Réponses)