Bonjour,
je n’arrive pas à programmer la selection des jours ou je vais trader. En effet, j’essaye de programmer mes trades du mardi au jeudi mais je n’y arrive pas.
Merci pour votre aide.
Il faut créer un booléen qui comporte les testes des jours:
joursdetrading = dayofweek>=2 and dayofweek<=4
puis ajouter cette condition dans la chaîne conditionnelle qui provoque une prise de position :
if buycondition and joursdetrading then
buy at market
endif
Merci beaucoup, je vais mettre ça en place.
j’ai une autre question :
je suis en train de créer un trade automatique, est il possible d’y insérer une condition telle que par exemple “si gains du jour = 100”, le robot s’arrête pour la journée et redémarre le lendemain.
Par avance merci,
Le gain est il en monnaie ou en points ?
Il y a beaucoup d’exemples sur ce principe:
https://www.prorealcode.com/topic/arreter-le-systeme-jusquau-lendemain/#post-100341 (en points)
Pour limiter les gains en monnaie à 100 par jour:
// Definition of code parameters
DEFPARAM CumulateOrders = False // Cumulating positions deactivated
// ---parameters
MaxDailyProfit=100 //Max daily profit allowed (in money)
once tradeon=1
// reset the current state of the strateygprofit each new day
If intradaybarindex=0 then
MyProfit=STRATEGYPROFIT
tradeon = 1
endif
// test if the strategyprofit of the day is currently above the daily profit allowed of below the daily loss allowed
If StrategyProfit>=MyProfit+MaxDailyProfit then
tradeon = 0
endif
IF tradeon=1 and rsi[14]crosses over 50 THEN
BUY 1 contract AT MARKET
ENDIF
IF tradeon=1 and rsi[14]crosses under 50 THEN
SELLSHORT 1 contract AT MARKET
ENDIF
//graph strategyprofit
//graph MyProfit+MaxDailyProfit coloured("orange")
//graph tradeon
Le calcul se fait à chaque fermeture d’ordre.
Bonjour, j’ai du faire une erreur de codage dans mes heures d’ouverture.
En effet, normalement mon robot aurait s’arrêter à 22h00 et la position qui était ouverte ne c’est pas stoppée, j’ai du le faire manuellement.
Pourriez vous me corriger, par avance merci.
ci après la partie du code erronée :
//DAX STOCH RSI
DEFPARAM CumulateOrders = true//
tradestart = time > 090000
Tradeend= time < 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//dont trade Saturday and Sunday
Je ne vois pas dans ce code où sont utilisés les variables booléennes tradestart et tradeend.
Pour comprendre comment utiliser les conditions et les variables booléenes (vrai/faux ; 1/0), je te suggère de suivre la formation à la programmation ici : Premiers pas avec la programmation pour ProRealTime
ci joint le code complet et si je ne me trompe pas ta question relative aux “variables booléennes tradestart et tradeend” se trouvent à la fin du code mais je crois qu’il manque quelque chose.
//DAX STOCH RSI
DEFPARAM CumulateOrders = true//
tradestart = time > 090000
Tradeend= time < 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//dont trade Saturday and Sunday
TP =20
SL =40
STOCH = Stochastic[14,3](close)
indicator4 = Average[5](STOCH)
RSIind = RSI[14](close)
// Conditions to enter long positions
c2 = (STOCH - indicator4 >10)//Stochastic upward momentum
c3 = (RSIind > 45)//RSI upward momentum
c5 = (average[10](STOCH)<45)// Stochastic not yet overbought
//Conditions to enter short
d2 = (STOCH - indicator4 <-10)//Stochastic downward momentum
d3 = (RSIind < 55)//RSI downward momentum
d5 = (average[10](STOCH)>55)//Stochastic not yet oversold
IF c2 AND c3 AND c5 AND tradestart AND tradeend THEN
BUY 5 CONTRACT AT MARKET
Set target pprofit TP
SET STOP pLOSS SL
ENDIF
IF d2 AND d3 AND d5 AND tradestart AND tradeend THEN
SELLshort 5 CONTRACT AT MARKET
Set target pprofit TP
SET STOP pLOSS SL
ENDIF
Merci, selon moi c’est correct. Pour que le code puisse tester ces horaires, donc la stratégie doit être lancé pour que les bougies de 090000 et 220000 existent sur le graphique. Sur une unité de temps de 4 heures par exemple, le code sera lu à 4,8 et 12h00, donc bien après ta condition de démarrage à 9h. Idem pour la condition de 22h00 bien entendu.
Ok, donc sur une UT de 10mn pour quelle raison mon robot ne c’est pas arrêté à 22h00 et la position qui était ouverte ne c’est pas stoppée, j’ai du le faire manuellement à 23h00.
Selon votre horaire, aucun poste ne sera chronométré ou fermé. Seulement aucun nouveau poste n’est ouvert après 22h00.
Ok, peut on alors automatiser une fermeture automatique à 22h00 de toutes les positions qui sont encore ouvertes ouvertes ?
if onmarket and time=220000 then
sell at market
exitshort at market
endif
ou avec
defparam flatafter=220000
(fermeture des ordres au marché et en attente après 22h00)
Bonjour Nicolas,
merci beaucoup pour la réponse.
Comment peut on vérifier que le robot est bien inactif après 22h ?