mise a niveau breakeven, probleme de fermeture immediate de l’ordre !
Forums › ProRealTime forum Français › Support ProOrder › mise a niveau breakeven, probleme de fermeture immediate de l’ordre !
- This topic has 11 replies, 3 voices, and was last updated 3 years ago by Yvan63.
-
-
06/09/2021 at 8:23 PM #171502
Bonjour,
Je rencontre un problème pour le moins curieux, j’ai codé une petite stratégie pour faire des essais, hier encore elle fonctionnait (les ordres s’exécutaient correctement), aujourd’hui
elle ne fonctionne plus du tout !!
Explication: le code ci-dessous place un STOP LOSS temporaire puis l’ajuste une fois le TRIDEPRICE connu, ensuite un BE est placé au niveau du TRIDEPRICE+1.4 , cela ne fonctionne plus, pas
un seul ordre de vente STOP n’est respecté, de plus le programme vend à présent systématiquement à la bougie suivant l’achat, comme si le SELL AT PRIX STOP n’était pas respecté.Une idée ?
Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107/////////////////////////////////////////////////////////////////////////////////DEFPARAM 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 = 080000////////// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"DEFPARAM FLATAFTER = 200000DEFPARAM Preloadbars = 1000ONCE LongHH = 1ONCE MEMSTOPPRICE = 0ONCE MEMOSTOP = 0MM30H = Average[30,7](Close)If not Onmarket Thenstep = 0MemoIndex = 0Endifgraph STEP COLOURED(50,50,75)// CAPITAL //CapitalInitial = 1000 // Capital initialCapitalReinvest = CapitalInitial+Strategyprofit// nombre de contratTailleContrat = 1 // Nbr lot (minimum 0.5)// réinvestissement des gainsReinvestActif = 1 // activé ?If ReinvestActif = 0 thennblot = TailleContratendifIf ReinvestActif = 1 thennblot = (CapitalReinvest/CapitalInitial)*TailleContratEndifIf nblot < 0.5 thennblot = 0.5Endif//-+------------------------------------------------------------------+-//// | Heikin Ashi | ////-+------------------------------------------------------------------+-//if barindex>1 thenhaclose=(open+close+low+high)/4haopen=(haopen[1]+haclose[1])/2//xHigh = Max(haOpen, haClose)xLow = Min(haOpen, haClose)//hahigh = Max(High,xHigh)halow = Min(Low,xLow)endif//-+------------------------------------------------------------------+-////Calcul BB inférieure et supérieurePeriodBB = 500dev = 2.3 // Ecart typeBollInf = Average[PeriodBB](close)-dev*std[PeriodBB](close)If LongHH then // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++b1 = RSI[7](close) < 20 or RSI[7](close[1]) < 20 or RSI[7](close[2]) < 20b2 = haclose < BollInfb3 = 1b4 = haclose > haopen // bougie verteb5 = 1b6 = 1b7 = 1Btotal = b1 and b2 and b3 and b4 and b5 and b6 and b7 and Not OnMarketIF btotal THENBUY nblot CONTRACT AT MARKETSet Target pprofit 0SET STOP LOSS 9 // TemporaireMEMSTOPPRICE = DonchianChannelDown[100]-3 // à l'instant T pour calcul ultérieur du STOPLOSSENDIFEndIf // LongHH // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// Ajustement du STOPLOSS une fois le prix d'ouverture de la bougie d'ordre connueIF Longonmarket and BarIndex = TradeIndex(1) and step = 0 thenMEMOSTOP = Tradeprice(1)-MEMSTOPPRICE // STOPLOSS en Nbr de pointSET STOP LOSS MEMOSTOPBuyN1 = Tradeprice(1)MemBE = BuyN1+1.4step = 1Endif////STOP remonté à BE dés que possibleIf Longonmarket and step = 1 ThenSELL AT MemBE STOPstep = 2EndIf06/09/2021 at 9:45 PM #171514Qu’entend-on par ci-dessous qui sont en pointillés ici et là dans le code… par exemple la ligne 42 et la ligne 49 ?
< and >
J’ai réussi à faire fonctionner votre code en remplaçant < avec < et > avec >, mais je me trompe peut-être ?? 🙂
06/09/2021 at 9:56 PM #171515< and > ont été créés lors du copier/coller du code. Effectivement il faut les remplacer par les signes < et >
Le problème n’est pas là, si vous avez pu faire fonctionner le code, arrivez-vous à placer l’ordre “sell AT stop” correctement ?
Car chez moi il est exécuté immédiatement après l’achat, ce qui n’est pas normal.
Information: il faut faire fonctionner ce code en timeframe 5 secondes
06/09/2021 at 10:12 PM #171517Voici le code sans le problème de coller:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110/////////////////////////////////////////////////////////////////////////////////DEFPARAM 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 = 080000////////// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"DEFPARAM FLATAFTER = 200000DEFPARAM Preloadbars = 1000ONCE LongHH = 1ONCE MEMSTOPPRICE = 0ONCE MEMOSTOP = 0MM30H = Average[30,7](Close)If not Onmarket Thenstep = 0MemoIndex = 0Endifgraph STEP COLOURED(50,50,75)// CAPITAL //CapitalInitial = 1000 // Capital initialCapitalReinvest = CapitalInitial+Strategyprofit// nombre de contratTailleContrat = 1 // Nbr lot (minimum 0.5)// réinvestissement des gainsReinvestActif = 1 // activé ?If ReinvestActif = 0 thennblot = TailleContratendifIf ReinvestActif = 1 thennblot = (CapitalReinvest/CapitalInitial)*TailleContratEndifIf nblot < 0.5 thennblot = 0.5Endif//-+------------------------------------------------------------------+-//// | Heikin Ashi | ////-+------------------------------------------------------------------+-//if barindex>1 thenhaclose=(open+close+low+high)/4haopen=(haopen[1]+haclose[1])/2//xHigh = Max(haOpen, haClose)xLow = Min(haOpen, haClose)//hahigh = Max(High,xHigh)halow = Min(Low,xLow)endif//-+------------------------------------------------------------------+-////Calcul BB inférieure et supérieurePeriodBB = 500dev = 2.3 // Ecart typeBollInf = Average[PeriodBB](close)-dev*std[PeriodBB](close)If LongHH then // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++b1 = RSI[7](close) < 20 or RSI[7](close[1]) < 20 or RSI[7](close[2]) < 20b2 = haclose < BollInfb3 = 1b4 = haclose > haopen // bougie verteb5 = 1b6 = 1b7 = 1Btotal = b1 and b2 and b3 and b4 and b5 and b6 and b7 and Not OnMarketIF btotal THENBUY nblot CONTRACT AT MARKETSet Target pprofit 0SET STOP LOSS 9 // TemporaireMEMSTOPPRICE = DonchianChannelDown[100]-3 // à l'instant T pour calcul ultérieur du STOPLOSSENDIFEndIf // LongHH // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// Ajustement du STOPLOSS une fois le prix d'ouverture de la bougie d'ordre connueIF Longonmarket and BarIndex = TradeIndex(1) and step = 0 thenMEMOSTOP = Tradeprice(1)-MEMSTOPPRICE // STOPLOSS en Nbr de pointSET STOP LOSS MEMOSTOPBuyN1 = Tradeprice(1)MemBE = BuyN1+1.4step = 1graph MemBE coloured (100,100,100) as "BE1"Endif////STOP remonté à BE dés que possibleIf Longonmarket and step = 1 ThenSELL AT MemBE STOPgraph MemBE coloured (50,100,100) as "BE2"step = 2EndIf06/09/2021 at 10:14 PM #17151806/09/2021 at 10:17 PM #17152006/09/2021 at 10:40 PM #17152206/09/2021 at 10:47 PM #17152506/10/2021 at 8:10 AM #171539Je l’ai fait pour plus d’une barre comme ci-joint en changeant les lignes 84, 85 et 99 comme indiqué dans le fichier .itf ci-joint.
Je ne comprends pas le code (ni le français ! 🙂 ) donc je ne peux pas faire grand chose de plus, mais peut-être que mes modifications vous aideront à vous remettre sur la bonne voie ?
1 user thanked author for this post.
06/10/2021 at 8:24 AM #171542Hello,
I’ll try it in English.
The problem with this code is that the STOP at BREAKEVEN does not work, the SELL AT (PRICE) STOP order is not executed at the right price!
In the code I provide, the SELL order is executed immediately after the buy order, this is not normal.
When the price exceeds the entry price + 1.4 points, a STOP sell order is placed, but it is not respected.06/10/2021 at 9:07 AM #171548Il n’y a pas de bug, dans ton code, dés que la première bougie se ferme, tu calcules un niveau de breakeven (+1.4), que tu enregistres, mais à aucun comment tu testes si ce niveau se situe bien en dessous du prix actuel ! donc dés que tu places ton ordre STOP à un niveau situé au dessus du prix, le système ferme ton ordre ! (voir image)
Pour les prochains sujets, il faudrait écrire un titre en raccord avec le problème, sinon on va vite avoir X dizaines de messages : “PRT BUG!” , je change le titre.
1 user thanked author for this post.
06/10/2021 at 9:42 AM #171554 -
AuthorPosts