PYRAMIDE en difficulté

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #60592 quote
    4801
    Participant
    Junior

    Bonjour à tous

    Je trade sur EUR/AUD par exemple, avec des bougies de 4 heures. Je voudrais créer une pyramide de 3 lots dans le même sens qu’ une moyenne mobile. Les 3 lots  à la suite, tous les 20 pips. Une fois la pyramide constituée avec ces 3 lots, on ferme ces 3 positions si la clôture atteint 60 pips de variation dans le sens du trade par rapport au prix d’ entrée du 1° lot. Un stop loss est fixé à 100 pips.

    PROBLEME : MON CODE OUVRE LES 3 LOTS AU MEME PRIX ?  SI DANS LA BOUGIE INITIALE ON OUVRE SEULEMENT 1 OU 2 LOTS LE 3°lot NE VIENT JAMAIS ?  ET POUR FINIR : LE SOMMET DE 60 PIPS ETANT ATTEINT, LE CODE NE FAIT RIEN IL NE CLOTURE PAS ?

    J’ AI 2 GRAPHES prorealtime  POUR ILLUSTRER mes ennuis. HELP et MERCI d’ AVANCE.

    DEFPARAM CUMULATEORDERS = TRUE
    Mlongue = WeightedAverage[70](close)
    REM la  moyenne est haussière dans la derniére bougie
    a1 = Mlongue[1]< Mlongue
    REM la  moyenne est baissière dans la derniére bougie
    b1 = Mlongue[1]> Mlongue
    
    REM PYRAMIDE LONGUE:quand la  moyenne est haussiére
    //Le prix d' entrée du premier lot de la pyramide est défini ainsi que la bougie d'ouverture de la pyramide.
    // Puis achats succesifs jusqu' à 3 lots, avec vente des lots de la pyramide si elle atteint son sommet à 60 pips du 1° lot. Le pas de la pyramide est de 20 pips
    IF a1 and not longonmarket THEN
    BUY 1 SHARES AT MARKET // 1° lot
    entreelongue = tradeprice // valeur du 1° lot
    bougieinitiale = tradeindex // bougie d' achat du 1° lot
    BUY 1 SHARES at (entreelongue +0.0020) STOP// achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 and CLOSE >(entreelongue + 0.0060) THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots
    ENDIF
    // Après la bougie d' achat du 1° lot et lui seul: on continue la pyramide pour les 2 autres lots.
    IF barindex > bougieinitiale and  COUNTOFLONGSHARES = 1  THEN
    BUY 1 SHARES at (entreelongue +0.0020) STOP // achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 and CLOSE > (entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    //Si on a 2 lots achetés, on continue la pyramide:
    IF  barindex > bougieinitiale and  COUNTOFLONGSHARES = 2  THEN
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 AND CLOSE > (entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    // La pyramide est complète avec 3 lots :
    IF COUNTOFLONGSHARES= 3 AND CLOSE >(entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    
    REM PYRAMIDE SHORT; Mêmes principes que pour les trades longs.
    REM la moyenne MM doit être baissière.
    IF  b1 and not shortonmarket THEN
    SELLSHORT 1 SHARES AT MARKET
    entreeshort = tradeprice
    bougieinitiale = tradeindex
    SELLSHORT 1 SHARES at (entreeshort -0.0020) STOP
    SELLSHORT 1 SHARES at (entreeshort-0.0040) STOP
    ELSIF COUNTOFLONGSHARES = 3 AND CLOSE < (entreeshort - 0.0060)THEN
    EXITSHORT AT MARKET NEXTBAROPEN
    ENDIF
    IF barindex > bougieinitiale and COUNTOFSHORTSHARES = 1 THEN
    SELLSHORT 1 SHARES at (entreeshort-0.0020) STOP
    SELLSHORT 1 SHARES at (entreeshort-0.0040) STOP
    ELSIF COUNTOFLONGSHARES = 3 AND CLOSE < (entreeshort - 0.0060)THEN
    EXITSHORT AT MARKET NEXTBAROPEN
    ENDIF
    IF  barindex > bougieinitiale and COUNTOFSHORTSHARES = 2  THEN
    SELLSHORT 1 SHARES at (entreeshort-0.0040) STOP
    ELSIF COUNTOFLONGSHARES = 3 AND CLOSE < (entreeshort - 0.0060)THEN
    EXITSHORT AT MARKET NEXTBAROPEN
    ENDIF
    IF COUNTOFLONGSHARES = 3  AND CLOSE <(entreeshort - 0.0060)THEN
    EXITSHORT AT MARKET NEXTBAROPEN
    ENDIF
    
    SET STOP LOSS 0.0100
    
    #60599 quote
    noisette
    Participant
    Veteran

    Je pense que le problème viens au moins en partie du TRADEPRICE: je pense que tel que le code est écrit sa valeur correspond au trade précédent, elle n’est connue qu’à la bougie suivante.

    #60622 quote
    Nicolas
    Keymaster
    Master

    En effet, Noisette a raison, si je prends la même logique que ton code, je le verrai plutôt ainsi :

    entreelongue = close // valeur du 1° lot
    bougieinitiale = barindex // bougie d' achat du 1° lot
    BUY 1 SHARES at (entreelongue +0.0020) STOP// achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot

    Il ne faut pas oublier en sus, que les ordres STOP ne sont valables qu’une seule barre et qu’il faut les reposer à chaque nouvelle période.

    #60680 quote
    4801
    Participant
    Junior

    Merci Noisette et Nicolas

    Pour simplifier, j’ ai limité le code aux trades longs uniquement.

    J’ ai suivi votre conseil en utilisant:

    entreelongue = close // valeur du 1° lot
    bougieinitiale = barindex // bougie d' achat du 1° lot

     

    Mais c’ est encore pire, le code ne fait plus rien. Aucune fermeture de position alors que l’ objectif  de 60 pips est OK.

    Et la Pyramide de3 lots n’ étant pas réalisée, le code n’ achète plus rien alors que les prix le permettent.

    J’ ai illustrer par la copie d’ écran ci- dessous.

    DEFPARAM CUMULATEORDERS = TRUE
    Mlongue = WeightedAverage[70](close)
    REM la moyenne est haussière dans la derniére bougie
    a1 = Mlongue[1]< Mlongue
    REM PYRAMIDE LONGUE:quand la moyenne est haussiére
    //Le prix d' entrée du premier lot de la pyramide est défini ainsi que la bougie d'ouverture de la pyramide.
    // Puis achats succesifs jusqu' à 3 lots, avec vente des lots de la pyramide si elle atteint son sommet à 60 pips du 1° lot. Le pas de la pyramide est de 20 pips
    IF a1 and not longonmarket THEN
    BUY 1 SHARES AT MARKET // 1° lot
    entreelongue = close // valeur du 1° lot
    bougieinitiale = barindex // bougie d' achat du 1° lot
    BUY 1 SHARES at (entreelongue +0.0020) STOP// achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 and CLOSE >(entreelongue + 0.0060) THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots
    ENDIF
    // Après la bougie d' achat du 1° lot et lui seul: on continue la pyramide pour les 2 autres lots.
    IF barindex > bougieinitiale and COUNTOFLONGSHARES = 1 THEN
    BUY 1 SHARES at (entreelongue +0.0020) STOP // achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 and CLOSE > (entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    //Si on a 2 lots achetés, on continue la pyramide:
    IF barindex > bougieinitiale and COUNTOFLONGSHARES = 2 THEN
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 AND CLOSE > (entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    // La pyramide est complète avec 3 lots :
    IF COUNTOFLONGSHARES= 3 AND CLOSE >(entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    SET STOP LOSS 0.0100

     

    Je continue à chercher, si je solutionne, je vous envoie le résultat.
    Bon week end à tous.

    #60684 quote
    4801
    Participant
    Junior

    Désolé j’ ai cru utilisé  <> et la transmission était bizarre. Je recommence.

    DEFPARAM CUMULATEORDERS = TRUE
    Mlongue = WeightedAverage[70](close)
    REM la  moyenne est haussière dans la derniére bougie
    a1 = Mlongue[1]< Mlongue
    REM PYRAMIDE LONGUE:quand la  moyenne est haussiére
    //Le prix d' entrée du premier lot de la pyramide est défini ainsi que la bougie d'ouverture de la pyramide.
    // Puis achats succesifs jusqu' à 3 lots, avec vente des lots de la pyramide si elle atteint son sommet à 60 pips du 1° lot. Le pas de la pyramide est de 20 pips
    IF a1 and not longonmarket THEN
    BUY 1 SHARES AT MARKET // 1° lot
    entreelongue = close // valeur du 1° lot
    bougieinitiale = barindex // bougie d' achat du 1° lot
    BUY 1 SHARES at (entreelongue +0.0020) STOP// achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 and CLOSE >(entreelongue + 0.0060) THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots
    ENDIF
    // Après la bougie d' achat du 1° lot et lui seul: on continue la pyramide pour les 2 autres lots.
    IF barindex > bougieinitiale and  COUNTOFLONGSHARES = 1  THEN
    BUY 1 SHARES at (entreelongue +0.0020) STOP // achat 2° lot
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 and CLOSE > (entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    //Si on a 2 lots achetés, on continue la pyramide:
    IF  barindex > bougieinitiale and  COUNTOFLONGSHARES = 2  THEN
    BUY 1 SHARES at (entreelongue +0.0040) STOP // achat 3° lot
    ELSIF COUNTOFLONGSHARES = 3 AND CLOSE > (entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    // La pyramide est complète avec 3 lots :
    IF COUNTOFLONGSHARES= 3 AND CLOSE >(entreelongue + 0.0060)THEN
    SELL AT MARKET NEXTBAROPEN // cloture des 3 lots de la pyramide.
    ENDIF
    SET STOP LOSS 0.0100
    #60789 quote
    noisette
    Participant
    Veteran

    Le code dit de clôturer que si 3 positions sont ouvertes et j’ai l’impression que sur l’image il n’y en a qu’une.

    #60951 quote
    4801
    Participant
    Junior

    En effet, seul 2 lots sont achetés dans la bougie initiale, puis le 3° lot qui devrait être acheté après 40 pips au dessus du 1° lots n’ est jamais acheté. Aussi,

    J’ ai donc montré un autre graphe ou le code achète bien 3 lots au prix de : 1° lot à 1.5034      2° lot à 1.5056    et 3° lot à 1.5076 ;  ayant bien 3 lots, la clôture des

    3 positions doit se faire  quand le prix augmente de 60 pips à partir du 1° lot , soit:    1.5034 + 0.0060 = 1.5094 et là on a bien les 3 lots avec un prix qui dépasse

    largement 1.5094 sans que le code ferme les 3 lots à l’ open de la bougie qui suit le franchissement des 1.5094   ????

    Je cherche ce qui cloche, sans succès pour l’ instant.

    Bonne journée et merci.

    #61144 quote
    noisette
    Participant
    Veteran

    Le prix a bien dépassé la valeur mais le code dit que c’est le prix de clôture qui compte. Et là on ne voit pas si c’est le cas. Juste pour tester change peut-être close par high.

    #61173 quote
    Nicolas
    Keymaster
    Master

    Si ça peut aider, dans la documentation j’y ai mis un petit code de pyramidage, bien sûr à adapter selon le cas présent, ici : https://www.prorealcode.com/documentation/tradeprice/

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.

PYRAMIDE en difficulté


Support ProOrder

New Reply
Author
author-avatar
4801 @4801 Participant
Summary

This topic contains 8 replies,
has 3 voices, and was last updated by Nicolas
7 years, 11 months ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 01/26/2018
Status: Active
Attachments: 4 files
Logo Logo
Loading...