// Navigator Trading System based on ProRealTime 10.3
// The algo based on the statistical advantage of the TDOM (trading day of the month) idea around the turn of the month
// Version 1
// Instrument: DAX mini 1 EUR, 4H, 9-17 CET, 1 point spread, account size 10.000 Euro
// ProOrder code parameter
DEFPARAM CUMULATEORDERS = true // cumulate orders
// define TDOM days
ONCE tradingDaySell = 1
ONCE tradingDayBuy = 8
// define intraday trading window
ONCE timeSell = 90000
ONCE timeBuy = 170000
// define position and money management parameter
ONCE positionSize = 1
ONCE maxPositionSizeLong = 10
ONCE maxPositionSizeShort = 10
ONCE minSizeLong = 1
ONCE midSizeLong = 5
ONCE maxSizeLong = 10
ONCE maxSizeShort = -10
ONCE stopLossLong = 8.5 // in %
ONCE takeProfitLong = 3 // in %
ONCE stopLossShort = 3.75 // in %
ONCE takeProfitShort = 1 // in %
// define position multiplier for each month (>0 - long / <0 - short / 0 - no trade)
ONCE longJanuary = 0
ONCE shortJanuary = maxSizeShort
ONCE longFebruary = 0
ONCE shortFebruary = maxSizeShort
ONCE longMarch = maxSizeLong
ONCE shortMarch = 0
ONCE longApril = minSizeLong
ONCE shortApril = 0
ONCE longMay = minSizeLong
ONCE shortMay = maxSizeShort
ONCE longJune = minSizeLong
ONCE shortJune = 0
ONCE longJuly = midSizeLong
ONCE shortJuly = maxSizeShort
ONCE longAugust = 0
ONCE shortAugust = maxSizeShort
ONCE longSeptember = 0
ONCE shortSeptember = maxSizeShort
ONCE longOctober = midSizeLong
ONCE shortOctober = maxSizeShort
ONCE longNovember = midSizeLong
ONCE shortNovember = maxSizeShort
ONCE longDecember = midSizeLong
ONCE shortDecember = maxSizeShort
// calculate TDOM
IF Month <> Month[1] THEN
tradingDay = 0
ENDIF
IF Time = 90000 THEN
IF CurrentDayOfWeek > 0 AND CurrentDayOfWeek < 6 THEN
tradingDay = tradingDay + 1
ENDIF
ENDIF
// set montly multiplier
IF CurrentMonth = 1 THEN
monthlyMultiplierLong = longJanuary
monthlyMultiplierShort = shortJanuary
ELSIF CurrentMonth = 2 THEN
monthlyMultiplierLong = longFebruary
monthlyMultiplierShort = shortFebruary
ELSIF CurrentMonth = 3 THEN
monthlyMultiplierLong = longMarch
monthlyMultiplierShort = shortMarch
ELSIF CurrentMonth = 4 THEN
monthlyMultiplierLong = longApril
monthlyMultiplierShort = shortApril
ELSIF CurrentMonth = 5 THEN
monthlyMultiplierLong = longMay
monthlyMultiplierShort = shortMay
ELSIF CurrentMonth = 6 THEN
monthlyMultiplierLong = longJune
monthlyMultiplierShort = shortJune
ELSIF CurrentMonth = 7 THEN
monthlyMultiplierLong = longJuly
monthlyMultiplierShort = shortJuly
ELSIF CurrentMonth = 8 THEN
monthlyMultiplierLong = longAugust
monthlyMultiplierShort = shortAugust
ELSIF CurrentMonth = 9 THEN
monthlyMultiplierLong = longSeptember
monthlyMultiplierShort = shortSeptember
ELSIF CurrentMonth = 10 THEN
monthlyMultiplierLong = longOctober
monthlyMultiplierShort = shortOctober
ELSIF CurrentMonth = 11 THEN
monthlyMultiplierLong = longNovember
monthlyMultiplierShort = shortNovember
ELSIF CurrentMonth = 12 THEN
monthlyMultiplierLong = longDecember
monthlyMultiplierShort = shortDecember
ENDIF
// all in if buy day is Monday or Thuesday
IF tradingDay = tradingDayBuy AND ( CurrentDayOfWeek = 1 OR CurrentDayOfWeek = 2 ) THEN
monthlyMultiplierLong = maxSizeLong
ENDIF
// caculate current position profit
posProfit = (((close - positionprice) * pointvalue) * countofposition) / pipsize
// open long position with order cumulation
l1 = tradingDay = tradingDayBuy
l2 = tradingDay > tradingDayBuy AND posProfit < 0
IF ( (l1 OR l2) AND Time = timeBuy) THEN
// check monthly setup and max position size
IF monthlyMultiplierLong > 0 THEN
IF (COUNTOFPOSITION + (positionSize * monthlyMultiplierLong)) <= maxPositionSizeLong THEN
BUY positionSize * monthlyMultiplierLong CONTRACT AT MARKET
ENDIF
ELSIF monthlyMultiplierLong <> 0 THEN
IF (COUNTOFPOSITION + positionSize) <= maxPositionSizeLong THEN
BUY positionSize CONTRACT AT MARKET
ENDIF
ENDIF
stopLoss = stopLossLong
takeProfit = takeProfitLong
ENDIF
// sell short if valid month or close position only
s1 = tradingDay = tradingDaySell
IF ( s1 AND Time = timeSell ) THEN
// check monthly setup and max position size
IF monthlyMultiplierShort < 0 THEN
IF (COUNTOFPOSITION + (positionSize * ABS(monthlyMultiplierShort))) <= maxPositionSizeShort THEN
SELLSHORT positionSize * ABS(monthlyMultiplierShort) CONTRACT AT MARKET
ENDIF
ELSIF monthlyMultiplierShort <> 0 THEN
IF (COUNTOFPOSITION + positionSize) <= maxPositionSizeShort THEN
SELLSHORT positionSize CONTRACT AT MARKET
ENDIF
ELSIF monthlyMultiplierShort = 0 THEN
SELL AT MARKET
ENDIF
stopLoss = stopLossShort
takeProfit = takeProfitShort
ENDIF
// stop and profit management
SET STOP %LOSS stopLoss
SET TARGET %PROFIT takeProfit
a=close-(close*(stopLoss/100))
b=close+(close*(takeProfit/100))
graph a as "stopLoss"
graph b as "takeProfit"
graph countofposition
ci dessus le code du navigator . c est un code de backtest , et ce que j aimerais faire c est de sortir les varibles
stopLoss takeProfit grace a la fonction graph et de l afficher dans une fenetre afin
de suivre et de controler la position visuellement . comme vous pouvez le voir j ai fait une tentative mais cela ne fonctionne pas . si quelqu un a une idee …
en plus clair j aimerais avoir
deux indicateurs
un qui renvoit :
SET STOP %LOSS stopLoss
et un autre qui renvoit :
SET TARGET %PROFIT takeProfit
@ nicolas , peut tu supprimer le deuxieme message . Merci .
bon je suis passe par le formulaire de pro real time pour demander de l aide sur ce petit soucis .
Malheureusement cela n a pas abouti
Nous avons récemment reçu de très nombreuses sollicitations pour ce service gratuit de programmation.
En conséquence nous ne sommes momentanément plus en mesure de prendre en charge de nouvelles demandes d’aide à la programmation.
Afin d’obtenir une assistance à la programmation, je vous suggère de re-soumettre votre demande en passant par l’une des deux solutions proposées ci-dessous :
– Contactez notre partenaire ProRealCode.com qui propose un service d’aide à la programmation personnalisé – En savoir plus
– Demandez de l’aide à la communauté : notre partenaire ProRealCode.com propose un forum d’entraide dédié à la programmation via lequel vous pourrez bénéficier de l’aide d’autres utilisateurs de ProRealTime – Accéder au Forum
Cordialement,
bon la je ne sait plus quoi faire …..
Pour clarifier le langage et être sûr de comprendre, quand tu dis que tu veux 2 indicateurs, je suppose que tu ne parles pas d’indicateurs de pro-builder mais que tu veux bien dire que tu veux juste voir 2 variables stoploss et takeprofit dans la fenêtre réservée aux variables visionnées par graph?
Je vais supposer que oui, et si c’est bien ça, les lignes 167 et 168 devraient afficher ces valeurs en les modifiant comme suit:
graph stopLoss as "stopLoss"
graph takeProfit as "takeProfit"
Reste une ambiguité en l’absence de copie écran du backtest, quand tu dis “ça ne fonctionne pas”, tu veux dire que c’est le backtest qui ne fonctionne pas car aucune fenêtre graph n’apparait? Ou bien que c’est ton affichage de a et b qui fonctionne mais ne donne pas ce que tu attendais et que tu cherches soit à débuguer a et b soit à afficher autre chose tel que ci-dessus?
Pour clarifier le langage et être sûr de comprendre, quand tu dis que tu veux 2 indicateurs, je suppose que tu ne parles pas d’indicateurs de pro-builder mais que tu veux bien dire que tu veux juste voir 2 variables stoploss et takeprofit dans la fenêtre réservée aux variables visionnées par graph?
oui oui oui
Reste une ambiguité en l’absence de copie écran du backtest, quand tu dis “ça ne fonctionne pas”, tu veux dire que c’est le backtest qui ne fonctionne pas car aucune fenêtre graph n’apparait? Ou bien que c’est ton affichage de a et b qui fonctionne mais ne donne pas ce que tu attendais et que tu cherches soit à débuguer a et b soit à afficher autre chose tel que ci-dessus?
si si le backtest fontionne parfaitement . la fenetre supplementaire apparait bien et j ai pu y afficher d autres variables que celles voulues .
la on est davantage sur comment est calculé le stop et le take profit que sur un bug technique , ou comment l afficher .
je voudrait en somme avoir par la , une espece de monitoring en temps reel ( 4 heures ) du stop et take profit .
j ai un peu cherché sur le site et en dehors et rien trouve , surtout que la fonction graph est plutot recente .
je reste en ligne jusqua minuit …
Ok, alors j’ai pas testé le code, mais s’il s’agit de débugguer le calcul de a et b des lignes 163 et 164, je l’aurais pas fait avec “close”, qui va changer à chaque fois qu’on change de bougie, mais (là c’est juste pour info parce que ça va pas aller) mais avec “tradeprice” pour avoir le niveau fixe du dernier in si le cumul des ordres était désactivé:
https://www.prorealcode.com/documentation/tradeprice/
mais comme le cumul est activé (ligne 7), il vaut sans doute mieux passer par positionprice qui tiendra compte de l’accumulation de positions de même sens:
https://www.prorealcode.com/documentation/positionprice/
D’autre part puisque le code semble aussi bien acheter que shorter, le calcul de a sera différent selon qu’on est call (stop dessous positionprice) ou selon qu’on est short (stop au-dessus de positionprice), l’inverse pour b
Peut-être que Nicolas a déjà répondu à ce genre de question, je n’ai pas cherché avec l’outil de recherche si ce topic a déjà été vu pour gapher plus vite ce que tu veux avoir.
Je déconnecte pour aujourd’hui, à demain.
ok merci pour ta reponse .
Je vais voir ce qu tu proposes .
abonne toi , au cas ou ça marcherait pas .
Je vais peut etre envoyer un mail a nicolas , je voulais pas l embeter pour si peu .
a+