Bonjour
ça fait déjà quelques jours que je me creuse la tête et j avoue que je ne suis pas assez calé pour résoudre ce probleme.
Je voudrai qu apres 3 pertes, mon robot arrete de trader pour la journée en cours et revienne le lendemain.
J ai bien sur la fonction “QUIT”, mais ça oblige a surveiller tous les jours le robot.
C est un trading intraday entre 08h00 et 21h50.
J ai essayé plusieurs façons de faire mais peut être que l un d entre vous à déjà fait ça, ou alors c est peut etre impossible !
Merci d avance
J’ai déplacé le sujet dans le forum ProOrder, puisqu’il s’agit de trading automatique.
C’est bien entendu possible, il suffirait de créer une condition autorisant ou non le trading et de la réinitialiser à la première barre chaque jour.
Comment les ordres de la stratégie sont-ils fermer ? Par un stoploss ou par le code lui même ? (pour savoir comment comptabiliser les orders perdants).
Avec le code de la stratégie ce sera bien plus rapide et efficace pour t’aider 😉
Voilà un exemple de procédure de fermeture des ordres, merci d avance
// Définition des paramètres du code
DEFPARAM CumulateOrders = False
defparam flatafter = 215500
defparam flatbefore = 080000
nblot = 1
mytp = nblot * 40
mysl = nblot * 20
// -------------------------------------- -----------------------
// ------------------------- ------------------------------------
// if positionperf (1) <0 et positionperf (2) <0 et
// positionperf (3) <0 puis
// quit
// endif
// ------------------------------ -------------------------------
// ----------------- --------------------------------------------
if intradaybarindex=0 then
once pose=1
endif
// -------------------------------------------- -----------------
// ------------------------------- ------------------------------
// si positionperf (1) <0 then
//
// if barindex-tradeindex (1 ) <15 alors
// pose = 0
// else
// pose = 1
// endif
// endif
// if positionperf (1) <0 et positionperf (2) <0 puis
//
// pose = 0
// else
// pose = 1
// endif
//
// ------------------------------------------ -------------------
// ----------------------------- --------------------------------
// ------------------------------------------------ -------------
// ----------------------------------- --------------------------
mm20 = moyenne [20]
mm50 = moyenne [50]
// ------------------------------------------------ -------------
// ----------------------------------- --------------------------
// Conditions pour ouvrir une position acheteuse
achat = mm20 croise sur mm50
vente = mm20 croise sous mm50
// ------------------------------------------ -------------------
// ----------------------------- --------------------------------
// ------------------------------------------------ -------------
// ----------------------------------- --------------------------
IF achat THEN
BUY nblot CONTRACT AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
IF vente THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
// ------------------------------------------------ -------------
// ----------------------------------- --------------------------
// ------------------------------------------------ -------------
// ----------------------------------- --------------------------
IF vente THEN
SELLSHORT nblot CONTRACT AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
IF achat THEN
EXITSHORT AT MARKET
ENDIF
// Stops et objectifs
set target $ profit mytp
set stop $ loss mysl
> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “insert PRT code” pour séparer la partie texte de la partie code, merci ! <<
Bon dans ce cas, je vais faire aussi un exemple, il faudra l’intégrer dans ton code.
if intradaybarindex=0 then
bartoday = barindex
endif
count = 0
for i = 1 to 3 do
if positionperf(i)<0 then
if tradeindex(i)>bartoday then
count=count+1
endif
endif
next
notrading = count>=3
if not notrading then
//insérer ici la stratégie
endif
Je n’ai pas testé, à vérifier merci.
Merci beaucoup
J avais pas pensé à utiliser tradeindex, en effet c est mieux comme ça 😉
Nicolas,
J’ai essayé de reprendre ce code. Je souhaitais l’adapter afin de pouvoir mettre un profit target a 1 point (au lieu de 50 admet on) aprè 2 trades perdants.
L’idée derriere est de pouvoir arreter une série de trades perdants (après 2, 3 ou x trade perdants) en mettant un taking profit au niveau du spread (1 dans mon cas moi qui utilise comme sous jacent le DAX).
Comme cela au lieu d’avoir une troisième perte d’affilé (dans le cas d’un changement de stop au bout de 2 trades perdants) j’ai un trade neutre. Je voulais également que le stop se remette à son niveau initial une fois un trade neutre/gagnant cloturé.
j’ai essayé pas mal de solutions mais aucune n’a fonctionné
je crois que cela bloque car les trades perdants ne sont pas forcement le meme jour; le plus important étant qu’au bout de 2, j’ai un trade qui soit neutre ou gagnant d1 point admettons pour couper la série de pertes en cours
@AlexMarlier
J’avoue avoir du mal à suivre, que faut-il faire premièrement ? Enlever la limitation de trade par jour ? Puis au bout de 2 ordres perdants changer la valeur du takeprofit ? On est très loin de la demande initiale de @goalgo 🙂
@AlexMarlier est ce que tu peux répéter la question ? 😉
je vous concede volontiers que l’explication de ce que je souhaite coder n’est pas clai !
je souhaite intégrer un code à certaines de mes stratégies:
-en cas de trade neutre ou gagnant: stop ploss de 50 points
-si il y a deux trades perdants de suite , le stop loss passe a 1 points (de sorte d’avoir le 3eme trade neutre afin de revenir sur le stop ploss de 50 pts)
petite precision: il peut y avoir plusieurs jours entre deux trades
je crois que c’est plus clair comme ca !
Merci
D’accord, les explications sont bien plus claires, merci !
On peut donc reprendre en partie le code de mon précédent message qui répondait à la question de @goalgo :
//on compte la quantité de trade perdants d'affilés
count = 0
for i = 1 to 3 do
if positionperf(i)<0 then
count=count+1
else
count=0
endif
next
//on définit la taille du stoploss en fonction
if count=2 then
mySL = 1
else
mySL = 50
endif
//*** PLACER ICI LA STRATEGIE ***
// placer le stoploss à la fin du code :
set stop ploss mySL
Pas testé, à vérifier merci.
une réponse claire pour une question claire 😉 merci nicolas