SELLSHORT ne semble pas fonctioner
Forums › ProRealTime forum Français › Support ProOrder › SELLSHORT ne semble pas fonctioner
- This topic has 8 replies, 2 voices, and was last updated 4 years ago by Headcrusher.
-
-
05/01/2020 at 11:15 AM #129182
Bonjour,
tout d’abord, merci pour ce super outils qu’est prorealtime, et la simplicité de son utilisation (même si ça parait pas très user friendly au début :D). Je code un bot (Ahah, je vous vois vous marrer), qui fonctionne très bien en positon longue pour l’instant, et j’essaye de lui adjoindre son inverse histoire de profiter des deux directions de marché.
Donc j’ajoute une boucle de SELLSHORT tel que ce qui suit :
Boucle de vente à découvert12345678IF timeok AND Not OnMarket AND C2 THENSELLSHORT NbShare SHARE AT MARKET//SET STOP pLOSS StoplossminiSELLSHORTSELL = SELLSHORTSELL + 1Graph SELLSHORTSELL AS "SELLCOMMAND"BullFlag15 = 0BearFlag15 = 0ENDIFLe graph de la variable SELLSHORTSELL montre bien que je rentre dans la boucle, et s’incrémente régulièrement (59 positions, enfin peu importe), mais dans le carnet d’ordre aucune trace des ventes courtes…
Je bug depuis 1 heure sur ce morceau de code sans comprendre. Est ce que vous voyez un truc que j’ai loupé?
05/01/2020 at 1:23 PM #12920505/01/2020 at 1:26 PM #12920605/01/2020 at 1:38 PM #129211Merci pour ces réponses. Passer de Cumulate Order de True à False n’a rien changé.
Je Graph C2 maintenant pour detecter les triggers. On les voit bien passer de 1 à 0. Mais pas d’ordre correspondant. Et il n’y a pas de position en cours, je vais faire une passe en intégrant un “NOT ONMARKET” dans ma condition C2. Ca me rend fou! 😀
Je vous livre le code complet :
FractalFlagAndLossMgt123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163// DAX// 1 Minute ticksDEFPARAM CumulateOrders = True//DEFPARAM PRELOADBARS = 1000BrokerStop = 0Stoplossmini = 10NbShare = 1// Noloss Parameter Place le Stop à PositionPrice+Margin Si Close > Positionprice + NolossGapNoLoss = 1NoLossBroker = aNolossGap = 10Margin = NolossGap - 5timeframe(10 minute)timeok = (time >090000 AND time <200000 )// BULL DETECTORF115 = high[2] < high[1]F215 = high[1] < highF315 = high[2] < high[3]F415 = high[3] < high[4]FBull15 = F115 AND F215 AND F315 AND F415IF FBull15 THENBullFlag15 = 1Lastsummit15 = high[2]BearFlag15 = 0ENDIFF1b15 = low[2] > low[1]F2b15 = low[1] > lowF3b15 = low[2] > low[3]F4b15 = low[3] > low[4]FBear15 = F1b15 AND F2b15 AND F3b15 AND F4b15//Graph BullFlag15 As "BullFlagh"//Graph BearFlag15 As "BearFlag"IF FBear15 THENBearFlag15 = 1LastBottom15 = low[2]BullFlag15 = 0//Lastbottom15 = low[2]ENDIFtimeframe(10 minute)//====== Enter market - start =====// LONG side//MMOKBull = Average[a](close) > Average[a](close[1])C1 = Close > Close[1] AND Close[1] CROSSES OVER Lastsummit15 AND BearFlag15 AND timeok// Conditions pour ouvrir une position acheteuseIF NOT LongOnMarket AND C1 THENBUY NbShare CONTRACTS AT MARKETIF BrokerStop = 1 THENSET STOP pLOSS StoplossminiENDIFENDIF// SHORT side//MMOKBear = Average[a](close) < Average[a](close[1])CrossesUnderLastBottom = Close < Close[1] AND Close[1] CROSSES UNDER Lastbottom15C2 = BullFlag15 AND CrossesUnderLastBottom AND TimeOK//Graph Lastbottom15 as "LastBottom"Graph C2 AS "C2"//Graph BullFlag15 as "BullFlag15"//Graph CrossesUnderLastBottom as "CrossesUnderLastBottom"// Conditions pour ouvrir une position en vente à découvertIF C2 THENSELLSHORT 1 CONTRACTS AT MARKETIF BrokerStop = 1 THENSET STOP pLOSS StoplossminiENDIFENDIF//====== Enter market - end =====//############ GESTION DE LA POSITION ###################### //timeframe(2 minute)// Detection de Fractale haussieresF1 = high[2] < high[1]F2 = high[1] < highF3 = high[2] < high[3]F4 = high[3] < high[4]FBull = F1 AND F2 AND F3 AND F4IF FBull THENBOTTOMClose = Close[2]ENDIF// Detection de Fractale baissiereFbe1 = low[2] > low[1]Fbe2 = low[1] > lowFbe3 = low[2] > low[3]Fbe4 = low[3] > low[4]FBear = Fbe1 AND Fbe2 AND Fbe3 AND Fbe4IF FBear THENSummitClose = Close[2]ENDIF//--> NOLOSSIF NoLoss = 1 AND Close > PositionPrice + NolossGap THENIF NoLossBroker = 1 THENSET STOP pLOSS MarginENDIFLongNoLossPrice = PositionPrice + MarginENDIFIF LongonMarket AND NoLoss = 1 AND Close CROSSES Under LongNoLossPrice THENSELL AT MARKETENDIFIF NoLoss = 1 AND Close < PositionPrice - NolossGap THENIF NoLossBroker = 1 THENSET STOP pLOSS MarginENDIFShortNoLossPrice = PositionPrice - MarginENDIFIF LongonMarket AND NoLoss = 1 AND Close CROSSES Under ShortNoLossPrice THENEXITSHORT AT MARKETENDIF//--> Trailling stopIF Close > BOTTOMclose THENstoploss1 = BOTTOMcloseENDIFIF LongonMarket AND Close < stoploss1 OR Close < PositionPrice - StopLossMini THENSELL AT MARKETstoploss1 = 0ENDIFIF Close < SummitClose THENstoploss2 = SummitCloseENDIFIF ShortOnMarket AND Close > stoploss2 OR Close > PositionPrice + StopLossMini THENEXITSHORT AT MARKETstoploss2 = 0ENDIF//--> Fermeture des positions en fin de journéeIF ShortOnMarket AND Not TimeOk THENEXITSHORT AT MARKETstoploss2 = 0ENDIFIF LongOnMarket AND Not TimeOk THENSELL AT MARKETstoploss2 = 0ENDIF//<-- Fin de fermeture des positions en fin de jorunée05/01/2020 at 1:45 PM #129213Et ici, on voit les Trigger, mais pas d’ordre..
05/01/2020 at 2:11 PM #129218Je viens de tester sur mon compte démo, même résultat.
05/01/2020 at 2:35 PM #129227Et quand je remplace SELLSHORT par BUY, les ordres d’achat sont bien effectués.
05/01/2020 at 4:46 PM #129270Le problème vient du fait que tu évalues le timeframe 10 minutes à chaque clôture du TF le plus petit (fonctionnement normal quand on utilise pas “updateonclose”). Tes instructions de prises de positions sont situées dans le TF 10 minutes, mais aucun ordre ne sera passé puisque quand ta condition est bonne on ne se situe pas à la fermeture de la bougie 10-minutes.
Il faut donc déplacer tes commandes de lancement de positions dans le timeframe le plus petit.
05/01/2020 at 4:50 PM #129273Le code à sacrément évolué, j’ai laissé tomber cette histoire de SELLSHORT.
Dans la derniere version, il est dans le timeframe 1 minute.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197// DAX// 1 Minute ticksDEFPARAM CumulateOrders = FalseDEFPARAM PRELOADBARS = 200//DEFPARAM PRELOADBARS = 1000BrokerStop = 0Stoplossmini = (BollingerUp - BollingerDown)/2NbShare = 1// Rocket Traill - Colllage du Stoploss au prix si croissance fusée!RocketTrailActivation = 1QuickEjectRatio = 13// Noloss Parameter Place le Stop à PositionPrice+Margin Si Close > Positionprice + NolossGapNoLoss = 1NoLossBroker = 0NolossGap = 7Margin = NolossGap - 2timeframe(10 minute)timeok = (time >090000 AND time <200000 )// ############ FLAG le marché Début// BULL DETECTORF115 = high[2] < high[1]F215 = high[1] < highF315 = high[2] < high[3]F415 = high[3] < high[4]FBull15 = F115 AND F215 AND F315 AND F415IF FBull15 THENBullFlag15 = 1Lastsummit15 = high[2]BearFlag15 = 0ENDIFF1b15 = low[2] > low[1]F2b15 = low[1] > lowF3b15 = low[2] > low[3]F4b15 = low[3] > low[4]FBear15 = F1b15 AND F2b15 AND F3b15 AND F4b15//Graph BullFlag15 As "BullFlagh"//Graph BearFlag15 As "BearFlag"IF FBear15 THENBearFlag15 = 1LastBottom15 = low[2]BullFlag15 = 0//Lastbottom15 = low[2]ENDIFC1 = Close > Close[1] AND Close[1] CROSSES OVER Lastsummit15 AND BearFlag15 AND timeok AND NOT ONMARKETC2 = BullFlag15 AND TimeOK AND NOT ONMARKET AND Close < Close[1] AND Close[1] CROSSES UNDER Lastbottom15IF LongOnMarket THENBullFlag15 = 0ENDIFIF ShortOnMarket THENBearFlag15 = 0ENDIFTimeframe(1 minutes)// ############# FLAG LE MARCHé Fin//====== Enter market - start =====// LONG side// Conditions pour ouvrir une position acheteuseIF NOT LongOnMarket AND C1 THENBUY NbShare CONTRACTS AT MARKETIF BrokerStop = 1 THENSET STOP pLOSS StoplossminiENDIFENDIF// SHORT side//Graph Lastbottom15 as "LastBottom"//Graph BullFlag15 as "BullFlag15"//Graph CrossesUnderLastBottom as "CrossesUnderLastBottom"// Conditions pour ouvrir une position en vente à découvertIF C2 THENSELLSHORT NbShare SHARES AT MARKETIF BrokerStop = 1 THENSET STOP pLOSS StoplossminiENDIFENDIF//Graph C2 AS "C2"//====== Enter market - end =====//############ GESTION DE LA POSITION ###################### //timeframe(2 minute)// Detection de Fractale haussieresF1 = high[2] < high[1]F2 = high[1] < highF3 = high[2] < high[3]F4 = high[3] < high[4]FBull = F1 AND F2 AND F3 AND F4IF FBull THENBOTTOMClose = Close[2]ENDIF// Detection de Fractale baissiereFbe1 = low[2] > low[1]Fbe2 = low[1] > lowFbe3 = low[2] > low[3]Fbe4 = low[3] > low[4]FBear = Fbe1 AND Fbe2 AND Fbe3 AND Fbe4IF FBear THENSummitClose = Close[2]ENDIFtimeframe(1 minute)//--> NOLOSSIF NoLoss = 1 AND Close > PositionPrice + NolossGap THENIF NoLossBroker = 1 THENSET STOP pLOSS MarginENDIFLongNoLossPrice = PositionPrice + MarginENDIFIF LongonMarket AND NoLoss = 1 AND Close CROSSES Under LongNoLossPrice THENSELL AT MARKETENDIFIF NoLoss = 1 AND Close < PositionPrice - NolossGap THENIF NoLossBroker = 1 THENSET STOP pLOSS MarginENDIFShortNoLossPrice = PositionPrice - MarginENDIFIF LongonMarket AND NoLoss = 1 AND Close CROSSES Under ShortNoLossPrice THENEXITSHORT AT MARKETENDIF//--> Fractal Trailling stopIF Close > BOTTOMclose THENstoploss1 = BOTTOMcloseENDIFIF LongonMarket AND Close < stoploss1 OR Close < PositionPrice - StopLossMini THENSELL AT MARKETstoploss1 = 0ENDIFIF Close < SummitClose THENstoploss2 = SummitCloseENDIFIF ShortOnMarket AND Close > stoploss2 OR Close > PositionPrice + StopLossMini THENEXITSHORT AT MARKETstoploss2 = 0ENDIF//--> Rocket Trail LongIf NOT OnMarket THENEject = 0ENDIFIF OnMarket AND RocketTrailActivation = 1 THENIF Close - open > QuickEjectRatio AND Close[1] - Open[1] > QuickEjectRatio THENQuickEjectInitiated = 1ENDIFENDIFGraph QuickEjectInitiated As "QuickEjectInitiated"IF QuickEjectInitiated = 1 THENIf Close < (High - Low)*0.3 OR Close < OPEN THENEject = 1QuickEjectInitiated = 0ENDIFENDIF//--> Fermeture des positions en fin de journéeIF ShortOnMarket AND Not TimeOk THENEXITSHORT AT MARKETstoploss2 = 0ENDIFIF LongOnMarket AND Not TimeOk THENSELL AT MARKETstoploss1 = 0ENDIF// EJECT!!!!IF LongOnMarket AND Eject = 1 THENSELL AT MARKETENDIFGraph Eject+2 As "Eject" -
AuthorPosts
Find exclusive trading pro-tools on