Cahier des charges Ichimoku 1. Objectif C'est un robot qui a pour objectif de prendre des trades selon un certain nombre de conditions tirés de l'indicateur Ichimoku et du MACD, conditions qui doivent être validés sur plusieurs unités de temps différentes. 2. Paramètres utilisateurs I. Les conditions requises pour entrer et sortir de position Toutes les conditions d'entrée ou de sortie doivent être réglables en paramètre de trois manières différentes : "exclue", "optionnelle" ou "obligatoire". J'expliquerai ce que cela signifie dans la partie suivante (II). Aussi, le système Ichimoku comprend trois indicateurs spéciaux, qui sont projetés à 26 périodes en avant du prix (Senkou Span A, Senkou Span B), et 26 périodes en arrière du prix. Parfois, la comparaison avec un indicateur ou le prix se fera en prenant en compte la valeur de l’indicateur projeté en avant ou en arrière, et parfois on prendra la valeur au niveau du prix ou de l’indicateur avec lequel on compare ces indicateurs spéciaux. La temporalité à laquelle on se place (au niveau du prix, avant ou après) sera précisé entre parenthèses. A. Conditions pour ouvrir la position à l'achat : - Prix > Kijun -Prix > Tenkan - Prix > Senkou Span A (qui se trouve à son niveau) - Prix > Senkou Span B (qui se trouve à son niveau) - Chikou > Kijun (du passé = au dessus d'elle, au niveau de la Chikou, c’est-à-dire 26 périodes en arrière) - Chikou > Tenkan (du passé) - Chikou > Senkou Span A (du passé) - Chikou > Senkou Span B (du passé) - Chikou > Prix (du présent = actuel) - Chikou > Kijun (du présent=au niveau du prix) - Chikou > Tenkan (du présent) - Chikou > Senkou Span A (du présent) - Chikou > Senkou Span B (du présent) - Chikou > Prix (du présent) - Senkou Span A > Senkou Span B (pour les deux, nous sommes projetés 26 périodes en avant) - Tenkan > Kijun - Tenkan > Senkou Span A (qui se trouve à son niveau) - Tenkan > Senkou Span B (qui se trouve à son niveau) - Kijun > Senkou Span A (qui se trouve à son niveau) - Kijun > Senkou Span B (qui se trouve à son niveau) - MACD haussier (barres vertes de plus en plus hautes) - MACD positif (barres vertes) - Senkou Span A haussière - Senkou Span B haussière - Chikou haussière - Tenkan haussière - Kijun haussière - Prix haussier - Le prix doit être à un certain nombre de points au-dessus du nuage (= Senkou Span A, Senkou Span B), ce nombre doit être réglable à "nombre_de_points_au_dessus_du_nuage". B. Conditions pour sortir de position à la vente : - MACD baissier - MACD négatif - Prix < Kijun -Prix < Tenkan - Prix < Senkou Span A (qui se trouve à son niveau) - Prix < Senkou Span B (qui se trouve à son niveau) - Chikou < Kijun (du passé) - Chikou < Tenkan (du passé) - Chikou < Senkou Span A (du passé) - Chikou < Senkou Span B (du passé) - Chikou < Prix (du passé) - Chikou < Kijun (du présent) - Chikou < Tenkan (du présent) - Chikou < Senkou Span A (du présent) - Chikou < Senkou Span B (du présent) - Chikou < Prix (du présent) - Senkou Span A < Senkou Span B (projeté 26 périodes en avant) - Tenkan < Kijun - Tenkan < Senkou Span A (qui se trouve à son niveau) - Tenkan < Senkou Span B (qui se trouve à son niveau) - Kijun < Senkou Span A (qui se trouve à son niveau) - Kijun < Senkou Span B (qui se trouve à son niveau) - Senkou Span A baissière (26 périodes en avant) - Senkou Span B baissière (26 périodes en avant) - Chikou baissière ( = par rapport à la dernière bougie) - Tenkan baissière - Kijun baissière - Prix baissier C. Conditions pour entrer en position à la vente : - MACD baissier - MACD négatif - Prix < Kijun -Prix < Tenkan - Prix < Senkou Span A (à son niveau) - Prix < Senkou Span B (à son niveau) - Chikou < Kijun (du passé) - Chikou < Tenkan (du passé) - Chikou < Senkou Span A (du passé) - Chikou < Senkou Span B (du passé) - Chikou < Prix (du passé) - Chikou < Kijun (du présent) - Chikou < Tenkan (du présent) - Chikou < Senkou Span A (du présent) - Chikou < Senkou Span B (du présent) - Chikou < Prix (du présent) - Senkou Span A < Senkou Span B (projeté 26 périodes en avant) - Tenkan < Kijun - Tenkan < Senkou Span A (à son niveau) - Tenkan < Senkou Span B (à son niveau) - Kijun < Senkou Span A (à son niveau) - Kijun < Senkou Span B (à son niveau) - Senkou Span A baissière (projeté 26 périodes en avant) - Senkou Span B baissière (projeté 26 périodes en avant) - Chikou baissière - Tenkan baissière - Kijun baissière - Prix baissier - Le prix doit être à un certain nombre de points en dessous du nuage (=Senkou Span A, Senkou Span B =au niveau du prix). Ce nombre doit être réglable à nombre_de_points_en_dessous_du_nuage". D. Conditions pour sortir de position à la vente : - Prix > Kijun -Prix > Tenkan - Prix > Senkou Span A (à son niveau) - Prix > Senkou Span B (à son niveau) - Chikou > Kijun (du passé) - Chikou > Tenkan (du passé) - Chikou > Senkou Span A (du passé) - Chikou > Senkou Span B (du passé) - Chikou > Prix (du passé) - Chikou > Kijun (du présent) - Chikou > Tenkan (du présent) - Chikou > Senkou Span A (du présent) - Chikou > Senkou Span B (du présent) - Chikou > Prix (du présent) - Senkou Span A > Senkou Span B (projeté 26 périodes en avant) - Tenkan > Kijun - Tenkan > Senkou Span A (à son niveau) - Tenkan > Senkou Span B (à son niveau) - Kijun > Senkou Span A (à son niveau) - Kijun > Senkou Span B (à son niveau) - MACD haussier - MACD positif - Senkou Span A haussière - Senkou Span B haussière - Chikou haussière - Tenkan baissière - Kijun haussière - Prix haussier II. Les différentes unités de temps et conditions prises en compte Les conditions d'entrée et de sortie doivent être respecté dans différentes unités de temps. Il y aura 10 unités de temps "supérieures" et 10 unités de temps "inférieures" ("unité_de_temps_supérieure_1", "unité_de_temps_supérieure_2", etc... ; "unité de temps inférieure_1", unité de temps inférieure_2", etc...). Le fait que les conditions doivent être vérifiée dans une autre unité de temps que la "principale" doit être réglable en true or false. Il sera donc possible de désactiver la prise en compte d'une unité de temps, de choisir lesquelles on veut prendre en compte. Il sera possible de fixer les différentes unités de temps à n’importe quelle durée (M5, M15, …,H1, H2…, D1…). Chaque condition d'entrée et de sortie doit être réglable en "exclue", "optionnelle" ou "obligatoire" pour chaque unité de temps, différente (principale comprise). Le nombre de conditions requises pour entrer en position ou en sortir doit également être réglable dans les paramètres, et ce pour chaque unité de temps. ex. je pourrai régler le nombre de conditions de l' "unité_de_temps_supérieure_1" à 5, et ainsi le robot ne pourra rentrer en position que si au moins 5 de toutes les conditions sont remplies. Mais une condition "exclue" ou "obligatoire" ne comptera pas. Pour rentrer en position, il faudra alors dans le cas de l'exemple, que 5 conditions "optionnelle" soient remplies, plus toutes les conditions "obligatoires". Si une condition "obligatoire" n'est pas remplie, le robot n'entrera pas en position même si 5 conditions "optionnelle" sont remplies. Pour chaque unité de temps, le fait que la bougie doit être terminé avant de donner un signal positif doit être réglable (qu'une condition soit considérée comme validée), et ce pour chaque unité de temps différente. On peut, par exemple, choisir pour une unité de temps précise que la bougie en cours peut envoyer n’a pas besoin d’être achevé pour envoyer un signal positif. III. Autres paramètres à prendre en compte A/ Une fois que le robot aura pris une position (à l'achat comme à la vente), et que celle-ci sera clôturé, il ne pourra plus reprendre position tant que le prix ne sera pas revenu dans le Cloud (cette condition doit être réglable en True ou False, pour toutes les unités de temps). Cloud = espace entre la Senkou Span A et B B/ Placer le stoploss à "nombre_de_points_stoploss" réglable dans les paramètres. Il variera donc selon le nombre de points choisi. C/ Le robot doit être testable en backtest à "prix d'ouverture seulement" et doit afficher des résultats similaires à "chaque tick". D/ Le robot ne doit pas entrer en position s’il y a trop de positions déjà ouverte sur le compte. Il doit y avoir un paramètre "nombre_de_positions_autorisées". Si il est réglé à trois par exemple, le robot ne pourra pas entrer en position si trois positions sont déjà ouvertes. E/ Une option "break_even" doit être activable. Une fois activé, le stoploss se déplacera au prix d'ouverture si une bougie entière dépasse ce prix après l'entrée en position. Si ce paramètre est activé, il faudra en remplir un autre : le "nombre_de_bougies". Par exemple, si "nombre_de_bougies" est à 3, le "break_even" ne pourra s'activer qu'après la clôture des trois premières bougies (dès que le prix aura dépassé le prix d'ouverture évidemment,, on ne tient compte que des bougies de l'unité de temps principale). F/ Il y a deux autres options réglables en paramètre : "clôture_des_positions_avant_heure_de_fermeture", et "clôture_des_positions_avant_le_weekend". Si la première est activée, il faudra renseigner le nombre de bougie (de l'unité de temps principale) avant l'heure de fermeture du marché sur lequel trade le robot (si c'est possible), et le robot clôturera sa position lorsque cette bougie sera atteinte. Par exemple, si le marché ferme à 19h, que l'option est activée, que le nombre de bougies choisies est 3, et que le robot trade sur une unité de temps 5 minutes, alors le robot clôturera sa position s'il en a une 15min avant la fermeture du marché. Si le paramètre "clôture_des_positions_avant_le_weekend" est activée, le robot clôturera ses positions le vendredi soir à 23H00 si le marché est encore ouvert, ou 15min avant la fermeture du marché le vendredi soir si celui-ci ferme avant 23h00. Je tiens à signaler que ce n’est pas grave si ce n’est pas faisable. G/ Il faut pouvoir paramétrer des jours et horaires de trading : une option avec trading 24/24, et une avec le choix des jours et des horaires de trading. H/ EA Comment (pour faciliter l'identification de l'EA qui a passé un ordre) I/ sens du robot (achat uniquement, vente uniquement, achat et vente) J/ On doit pouvoir régler les valeurs du MACD et du système Ichimoku. IV. Money Management Le nombre de lots fixe par positions doit être réglable ("taille_de_lots_fixe"). On doit aussi pouvoir désactiver cette fonction. Lorsqu'elle est désactivée, le nombre de lots n'est plus fixe. Il y a l'option dans les paramètres "lots_variables". Lorsqu'elle est activée en true, le nombre de lots varie en fonction du capital. Le paramètre "nombre_de_%_du_capital" permet de choisir le % de notre capital que l'on souhaite mettre dans chaque trade. Si l'on a mis "lots_variables" en true, et après avoir compléte "nombre_de_%_du_capital", on peut choisir d'activer en plus une autre action. C'est le "nombre_de_lots_en_fonction_des_trades". Lorqu'elle est activée en true, le nombre de lots varie selon "nombre_de_%_du_capital". Lors du premier trade, c'est cette variable qu'elle prend en compte. Mais la particularité est qu'elle ne s'actualise pas après qu'un trade soit perdant, le lot reste fixe et ne bouge pas par rapport au dernier trade. En revanche, si le trade est "bien_gagnant", le nombre de lots s'actualise en fonction de "nombre_de_%_du_capital". Un trade est "bien_gagnant" à partir d'un certain nombre de points qu'il sera possible de régler en paramètre. Il y a une dernière option activable en true ou false, c'est "prise_en_compte_du_compte". Dès que cette option est activée, la variable "nombre_de_lots_en_fonction_des_trades" ne prend plus en compte uniquement les "trade_bien_gagnant" effectué avec ce robot sur le symble sur lequel il est placé, mais tous les trades du compte. Dès qu'un trade dans le compte sur n'importe quel symbole avec n'importe quel robot est "bien_gagnant" (donc correspond au nombre de points minimum inscrit dans la variables "trade_bien_gagnant"), le robot actualisera son nombre de lots par position en fonction de "nombre_de_%_du_capital". 3. Commentaires - si les fonds nécessaires pour l'achat de lots sont insuffisants ("Not Enought Money"), le robot calcul et achète en utilisant toute la marge disponible. - si il n'y a pas assez de fonds disponibles, ou qu'une erreur se produit, l'EA doit continuer de fonctionner pour les prochains ordres. - l'EA peut fonctionner sur des grandes unités de temps, et peut être amené à être fermé (redémarrage ordinateur etc). Il faut donc qu'il vérifie ce qu'il s'est passé auparavant lors d'une clôture de bougie, et pas qu'il travaille en attendant à rencontrer toutes les étapes en étant ouvert. - je ne suis pas programmeur, si des choses peuvent être faites différemment, je suis ouvert à la discussion.