Bonjour,
Je sais que cette question est régulièrement posée, mais je n’ai pas trouvé la solution dans les liens postés par Nicolas sur d’autres topics, d’autant que certains liens retournent une Erreur 404.
Pouvez vous svp m’aider en me proposant des lignes de code à rajouter au code ci-dessous afin de limiter le nombre de position par jour à 1 ?
Merci d’avance
// Définition des paramètres du code
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 = 093000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 103000
// 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
// Conditions pour ouvrir une position acheteuse
indicator1 = ExponentialAverage[20](close)
indicator2 = ExponentialAverage[50](close)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 AND not daysForbiddenEntry THEN
BUY 0.5 CONTRACT AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
indicator3 = ExponentialAverage[20](close)
indicator4 = ExponentialAverage[50](close)
c2 = (indicator3 CROSSES UNDER indicator4)
IF c2 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
indicator5 = ExponentialAverage[20](close)
indicator6 = ExponentialAverage[50](close)
c3 = (indicator5 CROSSES UNDER indicator6)
IF c3 AND not daysForbiddenEntry THEN
SELLSHORT 0.5 CONTRACT AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
indicator7 = ExponentialAverage[20](close)
indicator8 = ExponentialAverage[50](close)
c4 = (indicator7 CROSSES OVER indicator8)
IF c4 THEN
EXITSHORT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 80
SET TARGET pPROFIT 120
// Définition des paramètres du code
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 = 093000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 103000
if currentdayofweek[1]<>currentdayofweek then
trade=0
endif
// 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
// Conditions pour ouvrir une position acheteuse
indicator1 = ExponentialAverage[20](close)
indicator2 = ExponentialAverage[50](close)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 AND not daysForbiddenEntry and trade=0 THEN
BUY 0.5 CONTRACT AT MARKET
trade=1
ENDIF
// Conditions pour fermer une position acheteuse
indicator3 = ExponentialAverage[20](close)
indicator4 = ExponentialAverage[50](close)
c2 = (indicator3 CROSSES UNDER indicator4)
IF c2 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
indicator5 = ExponentialAverage[20](close)
indicator6 = ExponentialAverage[50](close)
c3 = (indicator5 CROSSES UNDER indicator6)
IF c3 AND not daysForbiddenEntry and trade=0 THEN
SELLSHORT 0.5 CONTRACT AT MARKET
trade=1
ENDIF
// Conditions pour fermer une position en vente à découvert
indicator7 = ExponentialAverage[20](close)
indicator8 = ExponentialAverage[50](close)
c4 = (indicator7 CROSSES OVER indicator8)
IF c4 THEN
EXITSHORT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 80
SET TARGET pPROFIT 120
bonsoir,
si je ne me suis pas trompé ,ça devrait marcher
Bonsoir,
Merci pour votre aide, mais ca ne fonctionne pas. En lançant le code en backtest, le système ne trouve aucune position
Voila ce que j’obtiens, aucune position prise en UT 1min, alors que les conditions du système pour ouvrir une position sur cette UT sont réunies quasiment tous les jours.
J’obtiens quelques positions si je passe en UT 5min ou 15min mais qui ne correspondent pas aux conditions du système
Je précise que les horaires de fonctionnement du système sont basées sur le fuseau horaire UTC-5
en remplacent currentdayoffweek par day
J’obtiens toujours le même résultat malheureusement, à savoir pas de position ..
tout les jours la valeur trade est remis a zero et quand il y a un trade short ou long il met 1 a trade et il n’y a plus d’autre position de la journée.
je ne vois pas le probleme
Update :
J’ai trouvé la solution dans le code d’un autre système :
Rajouter au début du code :
OTD = Barindex - TradeIndex(1) > IntradayBarIndex // limits the (opening) trades till 1 per day (OTD One Trade per Day)
Puis dans les conditions d’achat et de vente :
AND OTD
PS : remplacer TradeIndex(1) par TradeIndex(3) pour autoriser 2 positions max par jour et remplacer TradeIndex(1) par TradeIndex(5) pour autoriser 3 positions max par jour etc.