Stop Donchian et TP trailer
Forums › ProRealTime forum Français › Support ProOrder › Stop Donchian et TP trailer
- This topic has 10 replies, 3 voices, and was last updated 6 years ago by FREDNC.
-
-
02/13/2018 at 1:39 AM #62512
Bonjour, je cherche a mettre en place une stratégie basé sur le canal de Donchian pour le Stop en remplacement du SL classic.
A la suite, quand le trade se passe bien on enclenche un Stop trailler (en sortie de canal opposé au stop) en position de breakeven et on traille serré jusqu’à ce que le court se retourne et sortir en gain. j’ai trouvez plusieurs exemples de prog sur le site et j’ai associer un stop Dochiant avec un stop trailler. Ca marche très bien en backtest. Par contre, quand on veut mettre en place le robot (via IG en réel) j’ai le message suivant qui me dis que ce n’est pas possible car mon système peut engendrer une clôture partiel de position…. franchement je vois pas ça dans mon code ??? quelqu’un pourrait-il m’aider? Par avance merci
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566POSITIONSIZE=1Conditions d'achat diversBUY POSITIONSIZE CONTRACT AT MARKET+ le stop et le trailler ci-dessous//stop loss DonchianDC=70/CDH=Highest[DC](high)CDB=Lowest[DC](low)if longonmarket thensell POSITIONSIZE perpoint at cDB[1] stop //laststop = cDB[1]endifif shortonmarket thenexitshort POSITIONSIZE perpoint at cDH[1] stoplaststop = cDH[1]endifif onmarket thensell at laststop stop//laststopexitshort at laststop stop//laststopendif//tailing stop function basé surDonchiantrailingstart = (CDH[1])//10 trailing will start @trailinstart points profittrailingstartV = (CDB[1])//10 trailing will start @trailinstart points profittrailingstep = (CDH[1])-((CDB[1])/2) //trailing step to move the "stoploss"trailingstepV = (CDB[1])-((CDH[1])/2) //trailing step to move the "stoploss"//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstartV*pipsize THENnewSL = tradeprice(1)-trailingstepV*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstepV*pipsize THENnewSL = newSL-trailingstepV*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF02/13/2018 at 9:53 AM #62531Bonjour, merci de respecter les consignes du petit cadre fond jaune notamment d’utiliser le bouton “insert PRT code” normalement situé à droite de la première ligne d’icones dans l’éditeur de message. Je réédite le message pour vous cette fois-ci pour changer le format, afin que les autres membres notamment ceux qui savent lire le code très vite grâce au format de code PRT puisse mieux vous aider au lieu de zapper votre message. Merci de penser à l’avenir à l’usage du bon format.
02/13/2018 at 10:07 AM #6253702/13/2018 at 11:38 AM #6255402/13/2018 at 2:50 PM #62606Merci Nicolas pour ta réponse.
J’ai déjà tester en supprimant POSITIONSIZE de tout le programme, mais ça ne marche toujours pas. j’ai essaye de mettre juste sale et saleshort sans aucun Chiffre mais dans ce cas la le code est en erreur…. je suis un peu perdu, ça dépasse me compétence. Je pense que ce qui géne pro-Order c’est qu’on face référence à une taille de position et non la position en entier mais j’aurais besoin d’aide pour modifier le code. ci dessous le nouveau code qui ne fonction toujours pas même les dernières modification. Merci de voir ce que vous pouvez faire.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121//-------------------------------------------------------------------------// Code principal : EurUsdM5 ICT 76% 2.33% 3/13//-------------------------------------------------------------------------// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiéenoEntryBeforeTime = 085500//080000timeEnterBefore = time >= noEntryBeforeTime// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiéenoEntryAfterTime = 182500//200000timeEnterAfter = time < noEntryAfterTime// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiésdaysForbiddenEntry = OpenDayOfWeek = 1 OR OpenDayOfWeek = 6 //0 ou 6 et 0// Conditions pour ouvrir une position acheteuseindicator1 = Stochastic[170,4](close) // 127,4 ou [128,8]c1 = (indicator1 > 60)//58indicator2 = (DHigh(1) + DLow(1) + DClose(1))/3c2 = (close > indicator2)indicator3 = RSI[3](close)//5 7c3 = (indicator3 CROSSES OVER 18)//30IF (c1 AND c2) AND c3 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THENBUY 1 CONTRACT AT MARKETENDIF// Conditions pour fermer une position acheteuseindicator4 = RSI[7](close)//7 n'apporte rienc4 = (indicator4 CROSSES UNDER 70)//70 n'apporte rienIF c4 THENSELL AT MARKETENDIF// Conditions pour ouvrir une position en vente à découvertindicator6 = (DHigh(1) + DLow(1) + DClose(1))/3c4 = (close < indicator6)indicator6b = Stochastic[130,10](close) // 111,8 138,8c5 = (indicator6b < 28)// 35 50indicator7 = RSI[12](close)//7c6 = (indicator7 CROSSES UNDER 60)//72IF c4 AND c5 AND c6 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THENSELLSHORT 1 CONTRACT AT MARKETENDIF// Conditions pour fermer une position en vente à découvertindicator8 = RSI[12](close)//7c8 = (indicator8 CROSSES OVER 30)//30 n'apporte rienIF c8 THENEXITSHORT AT MARKETENDIF//stop loss DonchianDC=70//80CDH=Highest[DC](high)CDB=Lowest[DC](low)if longonmarket thensell 1 perpoint at cDB[1] stop //laststop = cDB[1]endifif shortonmarket thenexitshort 1 perpoint at cDH[1] stoplaststop = cDH[1]endifif onmarket thensell at laststop stop//laststopexitshort at laststop stop//laststopendif//tailing stop function Donchian basetrailingstart = (CDH[1])//10 trailing will start @trailinstart points profittrailingstartV = (CDB[1])//10 trailing will start @trailinstart points profittrailingstep = (CDH[1])-((CDB[1])/2) //trailing step to move the "stoploss"trailingstepV = (CDB[1])-((CDH[1])/2) //trailing step to move the "stoploss"//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstartV*pipsize THENnewSL = tradeprice(1)-trailingstepV*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstepV*pipsize THENnewSL = newSL-trailingstepV*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//************************************************************************// Stops et objectifs//SET STOP pLOSS 80//SET TARGET pPROFIT 10002/13/2018 at 3:00 PM #62609J’ai fait une erreur en écrivant mon post ci-dessus.” sale et saleshort” . En faite j’ai testé en ligne 65 et 69 Sell et exitshort avec “1” j’ai le même code d’erreur. Sans chiffre ou variables c’est le code qui est en en erreur. le ‘perpoint at’ s’affiche en rouge…
02/13/2018 at 5:21 PM #6262302/13/2018 at 9:25 PM #62660j’ai essayer “contrats” mais il se met en rouge sans une variable ou un chiffre devant. j’ai chercher dans la liste des fonctions et j’ai trouver “lots” mais on doit aussi donné une valeur. “COUNTOFPOSITION ” me paraissait prometteur mais dans ce cas là c’est le “at” qui se met en rouge. “All contracts” serais logique mais “All” n’existe pas en tant que fonction et ça nous créer une variable qui du coup deviens un nombre aussi…. Je tourne en rond. j’ai pas mal de stratégies beaucoup plus élaborées en matière de qualité d’entrée en position et gain pur mais j’aime bien le coté sécuritaire de celle-ci. Le conflit de cette stratégie est bien isolé dans ces deux lignes comme tu le disait plus haut. Aurais-tu d’autre suggestion ? Serait-il possible de contourner le problème en changeant la conception même du stop sur sortie Donchian ? Une pirouette de programmeur ?
02/19/2018 at 10:13 AM #63113La syntaxe des lignes utilisant “perpoint” devrait être remplacé de cette façon : (à adapter selon la ligne à remplacer bien entendu)
1sell at cDB[1] stopPuisque l’on ne peut pas fermer de position partiellement, cette instruction fermera l’ensemble des positions d’achat en une seule fois à l’aide d’un ordre conditionnel au prix de la variable cDB, tel qu’il était 1 période en arrière.
02/19/2018 at 4:49 PM #6318902/19/2018 at 5:03 PM #63192J’ai modifier comme si dessous, j’ai aussi rajouté un SL à 100 Pips pour fixer une limite basse en plus. Ca fonction bien, vois -tu des modifications ou améliorations à y apporter ?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162//stop loss DonchianDC=80//80//POSITIONSIZE=1CDH= Highest[DC](high)CDB=Lowest[DC](low)if longonmarket then//sell positionsize perpoint at cDB[1] stoplaststop = cDB[1]endifif shortonmarket then//exitshort positionsize perpoint at cDH[1] stoplaststop = cDH[1]endifif onmarket thensell at laststop stopexitshort at laststop stopendif//tailing stop function Donchian basetrailingstart = (CDH[1])//10 trailing will start @trailinstart points profittrailingstartV = (CDB[1])//10 trailing will start @trailinstart points profittrailingstep = (CDH[1])-((CDB[1])/2) //trailing step to move the "stoploss"trailingstepV = (CDB[1])-((CDH[1])/2) //trailing step to move the "stoploss"//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstartV*pipsize THENnewSL = tradeprice(1)-trailingstepV*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstepV*pipsize THENnewSL = newSL-trailingstepV*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//************************************************************************// Stops et objectifsSET STOP pLOSS 100 -
AuthorPosts
Find exclusive trading pro-tools on