OFFSET NEGATIF
Forums › ProRealTime forum Français › Support ProOrder › OFFSET NEGATIF
- This topic has 3 replies, 2 voices, and was last updated 6 years ago by Nicolas.
-
-
05/23/2018 at 7:53 PM #71211
Bonsoir,
J’ai bien lu les différents posts au sujet des arrêts du système de TRADING dûs au OFFSETS négatifs.
Mais je ne sais comment débugger le programme, sur quel genre de calcul ou fonction cela s’applique-t-il ?
Il est dommage que lors du plantage il n’est pas indiqué où s’est produite l’erreur.
Voici mon code, si vous avez une idée d’où un zéro peut sortir !!Merci
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172// Définition des paramètres du codeDEFPARAM CumulateOrders = False // 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 = 070000////// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"//DEFPARAM FLATAFTER = 210000Taille1 = 1Taille2 = 1// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiésdaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0myMoyennedeHull = CALL "Moyenne de Hull"[9]Long1 = Close < average [23,0](close)Long2 = (close - open) > Taille1Long3 = close > myMoyennedeHullLong4 = (close[1] - open[1]) > Taille2IF Long1 and Long2 and Long3 and Long4 AND not daysForbiddenEntry and not ONMARKET THENBUY 1 CONTRACT AT MARKETTSL = 1 // Use TSL?SL = 8 // Initial SLEndIfTrailingDistance = 3 // Distance from close to TSLTrailingStep = 2 // Pips locked at start of TSLIF TSL = 1 THEN//reset the stoploss valueIF NOT ONMARKET THENnewSL = 0CAND = 0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL = 0 AND CLOSE - TRADEPRICE(1) >= TrailingDistance*PipSize THENnewSL = TRADEPRICE(1) + TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] >= HIGHEST[CAND](CLOSE) THENnewSL = CLOSE[1] - TrailingDistance*PipSizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL = 0 AND TRADEPRICE(1) - CLOSE[1] >= TrailingDistance*PipSize THENnewSL = TRADEPRICE(1) - TrailingStep*PipSizeENDIF//next movesCAND = BarIndex - TradeIndexIF newSL > 0 AND CLOSE[1] <= LOWEST[CAND](CLOSE) THENnewSL = CLOSE[1] + TrailingDistance*PipSizeENDIFENDIF//stop order to exit the positionsIF newSL > 0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFSET STOP pLOSS SL // ProtectionENDIF05/24/2018 at 7:39 AM #71224[CAND] vaut 0 ou est négatif.
Cela est dut à ton calcul fait aux lignes 45 et 58, sans doute lorsque l’ordre courant est très récent. Pour éviter un offset négatif, on peut assurer que la variable CAND vaut à minima 1 comme ceci:
1CAND = max(1,BarIndex - TradeIndex)CAND vaudra alors toujours la valeur la plus élevée entre 1 et “barindex-tradeindex”.
1 user thanked author for this post.
05/24/2018 at 2:23 PM #7125005/24/2018 at 2:24 PM #71251 -
AuthorPosts
Find exclusive trading pro-tools on