Prise de position différée avec ou sans martingale

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #235058 quote
    lannoogeoffrey
    Participant
    Average

    Bonjour à toutes et tous.

    J’essai de coder un système qui regarde les “x” dernières positions d’achat/vente théorique d’un système (exemple ici avec le croisement du supertrend) pour entrer en position.

    Exemple : les 5 dernières positions acheteuses et vendeuses confonduent lors de la cassure du supertrend en clôture avec un tp et un sl défini auraient donné une perte (ces positions n’ayant pas été prise en réalité). J’aimerais que sur le sixième signal par exemple, il y ai une entrée en position. Et que si jamais cette position est perdante, sur la suivante, on est une martingale par exemple. Et qui dès que la position est gagnante, on attend de nouveau un cycle de 5 signaux perdant avant d’entrer en position sur le sixième.

    Voici le code envisagé, mais comme les positions ne sont pas prises réellement avant, je pense qu’il n’entre jamais en position du coup, mais je ne trouve pas comment corriger ce problème :

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = True // Cumul des positions désactivé
    // Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d’ordre avant l’heure “FLATBEFORE”.
    DEFPARAM FLATBEFORE = 152900
    // Annule tous les ordres en attente et ferme toutes les positions à l’heure “FLATAFTER”
    DEFPARAM FLATAFTER = 220000

    // Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0

    CA = close crosses over supertrend[2,100]
    CV = close crosses under supertrend[2,100]

    once mylot = 0.2

    if positionperf(5)<0 and positionperf(4)<0 and positionperf(3)<0 and positionperf(2)<0 and positionperf(1)<0 then

    if CA then
    BUY mylot CONTRACTS AT MARKET
    endif
    if CV then
    SELLSHORT mylot CONTRACTS AT MARKET
    endif

    endif

    if positionperf(6)<0 and positionperf(5)<0 and positionperf(4)<0 and positionperf(3)<0 and positionperf(2)<0 then

    if positionperf(1)<0 and CA then
    mylot = mylot*2
    BUY mylot CONTRACTS AT MARKET
    change=change+1
    endif
    if positionperf(1)<0 and CV then
    mylot = mylot*2
    SELLSHORT mylot CONTRACTS AT MARKET
    change=0
    endif
    endif

    set target pprofit 15
    set stop ploss 15

    //graph change

    #235068 quote
    JS
    Participant
    Senior

    Donc, vous ne regardez que les six dernières positions, et quand ces six positions sont toutes déficitaires, vous doublez le nombre de contrats… ?

    #235070 quote
    lannoogeoffrey
    Participant
    Average
    Non à ce moment là j’entre en position pour la première fois avec 1 seul lot. Si jamais cette première entrée est perdante, à ce moment là je commence une martingale.
    #235072 quote
    JS
    Participant
    Senior

    Peut-être pouvez-vous utiliser le code suivant comme point de départ…

    DefParam CumulateOrders=False // Cumulating positions disabled
    DefParam FlatBefore=152900
    DefParam FlatAfter=220000
    
    DaysForbiddenEntry=OpenDayOfWeek=6 OR OpenDayOfWeek=0
    
    CA = Close Crosses Over SuperTrend[2,100]
    CV = Close Crosses Under SuperTrend[2,100]
    
    myLot=1
    WinTrades=0
    LossTrades=0
    
    For i=1 to 6
    If PositionPerf(i)>0 then
    WinTrades=WinTrades+1
    ElsIf PositionPerf(i)<0 then
    LossTrades=LossTrades+1
    EndIf
    Next
    
    If LossTrades<6 then
    If CA Then
    Buy myLot contract at Market
    ElsIf CV then
    SellShort myLot contract at Market
    EndIf
    EndIf
    
    If LossTrades=6 then
    If CA then
    myLot = myLot*2
    Buy myLot contract at Market
    ElsIf CV then
    SellShort myLot contract at Market
    EndIf
    EndIf
    
    //Set Target pProfit TP
    //Set Stop pLoss SL
    
    Graph WinTrades as "WinTrades"
    Graph LossTrades as "LossTrades"
    Iván González thanked this post
    #235085 quote
    lannoogeoffrey
    Participant
    Average
    Merci, les trades sont pris.   Par contre, il prend position durant les 5 premiers setups qui sont perdant. J’aimerais qu’il n’y ai pas de position prise durant ces 5 setups. Je ne sais pas si une mise en mémoire des setups perdant peut être faite (sans qu’ils n soient pris en réel) et que seulement lorsqu’on atteint les 5 setups perdant, on entre en position sur le 6 ème et si le 6ème est une perte alors on commence la martinguale. Je n’arrive pas à trouver comment faire cette partie.
    #235094 quote
    JS
    Participant
    Senior
    #235102 quote
    lannoogeoffrey
    Participant
    Average
    Merci je vaisl ire ça attentivement 😉
    JS thanked this post
Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

Prise de position différée avec ou sans martingale


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by lannoogeoffrey
1 year, 6 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 07/11/2024
Status: Active
Attachments: 1 files
Logo Logo
Loading...