Nouvelle martingale.
Forums › ProRealTime forum Français › Support ProOrder › Nouvelle martingale.
- This topic has 10 replies, 2 voices, and was last updated 7 years ago by arcane.
-
-
02/05/2017 at 3:48 PM #23987
Bonjour,
J’ai besoin d’aide pour coder une martingale.
J’utilise le code suivant.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546IF c1 THENIF PositionPerf(1) < 0 THENOrderSize = OrderSize-2if ordersize<1 thenordersize=1ENDIFELSIF PositionPerf(1) > 0 THENOrderSize = OrderSize +2endifif ordersize<1 thenordersize=1ENDIFbuy ordersize shares at marketendifIF c2 THENiF PositionPerf(1) < 0 THENOrderSize = OrderSize-2if ordersize<1 thenordersize=1ENDIFELSIF PositionPerf(1) > 0 THENOrderSize = OrderSize +2ENDIFif ordersize<1 thenordersize=1ENDIFsellshort ordersize shares at marketendifMais je voudrais ajouter une condition.
Après 3 gains consécutifs, je voudrais que la position revienne à 1.
Merci de votre aide.
J’ai essayé de m’inspirer du guide PRT mais cela ne fonctionne pas.
La Piquemouche
La Piquemouche est une autre variante de la martingale classique. En cas de perte, on augmente la taille de
la position par 1 si on a moins de 3 pertes consécutives. Si on a plus de 3 pertes consécutives, on double la
taille de la position. Un gain réinitialise la position à 1 unité. Ce système de gestion des positions est moins
dangereux que les deux précédents, car on n’augmente pas la taille de la position de manière exponentielle
avant 3 pertes successives. Il est nécessaire d’intégrer vos conditions d’entrée et de sortie au code suivant :123456789101112131415161718192021222324252627282930313233//***********Code à insérer au début du système**********//ONCE ExitIndex = -2ONCE OrderSize = 1// On commence avec une position de 1ONCE BadTrades = 0// On initialise le compteur du nombre de trades perdants successifs//*********************////*****Code à insérer juste après les instructions liquidant une position*****//ExitIndex = BarIndex//***********Code à insérer en fin de système**********//IF Barindex = ExitIndex + 1 THENExitIndex = 0IF PositionPerf(1) < 0 THENBadTrades = BadTrades + 1IF BadTrades < 3 THEN// Si le dernier trade était perdant et que l’on est à moins de 3 pertes// successives, alors on incrémente d’une unité la taille de laprochaine position.OrderSize = OrderSize + 1ELSIF BadTrades MOD 3 = 0 THEN// Si le dernier trade était perdant et que l’on est à plus de 3 pertes// successives, on double la taille de la prochaine position.OrderSize = OrderSize * 2ENDIFELSIF PositionPerf(1) >= 0 THEN// Si le dernier trade était gagnant, alors on revient à une position de taille 1.OrderSize = 1BadTrades = 0ENDIFENDIF//*********************//REM La taille de la position doit être déterminée par la variable OrderSize pourl'intégralité du code02/05/2017 at 4:26 PM #23991J’ai essayé cela mais cela ne marche pas à toutes les lignes.
12345678910111213141516171819IF PositionPerf(1) < 0 THENOrderSize = OrderSize=1if ordersize<1 thenordersize=1ENDIFELSIF PositionPerf(1) > 0 THENOrderSize = OrderSize +1endifif PositionPerf(1) > 0 and PositionPerf(2) > 0 and PositionPerf(3) > 0 thenordersize=1ENDIFbuy ordersize shares at marketendif02/06/2017 at 7:21 PM #24145Bonjour,
Personne n’a une idée pour revoir la position de la martingale après 3 positions.
Mon code fonctionne mais ne multiplie plus les positions après 3 gains.
Si on a une série de 6 gains.
Je voudrais qu’il recommence à multiplier la 2 série.
1 contrat = gain
2 contrats= gain
4 contrats= gain
1 contrats= gain
2 contrats= gain au lieu de 1 contrats
4 contrats= gain au lieu de 1 contrats.
Merci de votre aide.
02/06/2017 at 8:01 PM #24153Bon, je n’ai pas lu tout ton code, mais uniquement la demande initiale. Soit pour revenir à l’ordersize du début si 3 gains consécutifs:
1234567891011121314ordersize = 1if tradingcondition thenif positionperf(1)<0 thenchange = change+1if change<3 thenmylot = mylot+1elsif positionperf(1)>=0 OR change=3mylot = ordersizechange = 0endifendifBUY mylot CONTRACTS AT MARKETendifDésolé si je n’ai pas repris ton code, mais ce sera ma dernière contribution pour ce soir 🙂
(je n’ai pas testé ..)
02/07/2017 at 5:09 PM #24238Bonjour Nicolas,
Bon boulot mais le code ne déclenche aucun ordres.
J’ai retravaille votre code.Cela fonctionne mieux mais ne donne pas encore le bon résultat.
si gagnant, j’ai bien les 3 premiers ordres qui augmentent mais si perdant l’ordre ne revient pas à 1.
Je mets le code en copie si vous pouvez tester.
Merci d’avoir répondu à mon message.
1234567891011121314151617181920212223242526272829once mylot = 1if conditions thenif positionperf(1)>0 thenchange = change+1if change<4 thenmylot = mylot+2elsif positionperf(1)<0 OR change=4 thenmylot=mylot=1change = 0endifendifBUY mylot CONTRACTS AT MARKETendifif conditions thenif positionperf(1)>0 thenchange = change+1if change<4 thenmylot = mylot+2elsif positionperf(1)< 0 OR change=4 thenmylot=mylot=1change = 0endifendifsellshort mylot CONTRACTS AT MARKETendif02/07/2017 at 5:27 PM #24243J’ai corrigé je pense, il y avait des conditions imbriquées qui ne devaient pas l’être… bref.
Ci-dessous le code côté achat uniquement d’une dummy stratégie:
1234567891011121314151617181920212223242526defparam cumulateorders=falseconditions = close crosses over supertrend[3,10]once mylot = 1if conditions thenif positionperf(1)>0 thenchange = change+1if change<4 thenmylot = mylot+2endifelsif positionperf(1)<0 OR change=4 thenmylot=1change = 0endifBUY mylot CONTRACTS AT MARKETendifset target pprofit 10set stop ploss 10graph changeEn fait, c’est une anti-martingale, les lots augmentent quand on gagne et reste au lot d’origine quand on perd.
02/07/2017 at 6:55 PM #24257Super c’est presque que cela.
Une anti martingale.
Juste un dernier souci.
Une fois qu’on a fait 3 gains, il ne repart pas de zéro.
Il garde le nombre de contrats identiques jusque la prochaine perte.
Pas évident mais merci quand même.
02/07/2017 at 7:26 PM #24260oui en effet, ci-dessous la correction:
1234567891011121314151617181920212223242526272829defparam cumulateorders=falseconditions = close crosses over supertrend[3,10]once mylot = 1if conditions thenif positionperf(1)>0 thenchange = change+1if change<3 thenmylot = mylot+2endifif change=3 thenmylot = 1endifelsif positionperf(1)<0 OR change=3 thenmylot=1change = 0endifBUY mylot CONTRACTS AT MARKETendifset target pprofit 10set stop ploss 10graph change02/08/2017 at 1:31 PM #24324Encore merci pour le travail Nicolas.
A la lecture, le code est correct pour moi mais cela ne fonctionne pas.
Après 3 gains, il revient bien à un contrat. Mais après il ne multiplie plus les positions.
1 gain = 1 contrat
2 gain = 3 contrats
3 gain= 5 contrats
4 gain = 1 contrat
5 gain= 1 contrat au lieu de 3 contrats attendus.
La série ne redémarre pas après les 3 gains successifs.
Seule une perte relance la martingale dans le bon sens.
02/08/2017 at 1:46 PM #2432702/08/2017 at 3:05 PM #24355 -
AuthorPosts
Find exclusive trading pro-tools on