Bonjour Sevice,
Une phrase de ta part m'interpelle :
Sevice a écrit :En fait je m'approche d'un algorithme génétique. Quand je dis que j'ai réalisé 1.3 millions de boucle, c'est en fait 1.3 million de backtest. La même stratégie calculée inlassablement dixième de point par dixième de point, limite par limite, etc pour obtenir le trade le plus parfait possible.
Si je comprends bien, tu fais plutot de l'optimisation de backtest, c'est à dire que tu cherches les meilleurs paramètres pas à pas pour le meilleur résultat.
Si c'est cela, je rejoins Benoist dans un ancien post où l'on discutait de l'intérêt des backtests : c'est voué a l'échec car les conditions de marché changent et les paramètres deviendront obsoletes dès qu'on les utilisera en réel.
Il me semble, de mémoire, qu'AWS propose des servive de bigData ou d'hyper calculateur, ce serait peut-être une autre piste pour à étudier pour faire le calcul sur des "bêtes" de courses, sans pour autant investir dans une nouvelle machines (c'est un peu ça l'essence même du "cloud")
Mais dans ce cas le trading manuel l'est également
Je vous tiendrai au courant de mes résultats, qu'ils soient bon ou mauvais
Et même si c'est un échec, ça sera une belle expérience
Oui j'y ai pensé falex, mais comme dis plus haut, mon ordinateur me suffit pour le moment
Après, si je dépense 50€ dans 8Gio de ram, ce n'est pas de l'argent perdu
Et encore pour bobbyO, oui les backtest ne valent pas grand chose car on travaille sur le passé. Mais je n'ai fais aucun travail, je n'ai pas travaillé sur le : comment éviter cette perte et celle la et celle la. Le travail, je l'ai fait en manuel sur du fonctionnel. Je ne cherche pas une stratégie, je la perfectionné.
Ensuite sur la question de l'obsolescence, j'ai décidé de remettre en question quotidiennement la valeur de mes tests. J'enregistrerai les cours et je ferai un backtest sur chaque stratégie, l'algo vérifiera si ses paramètres sont les plus adéquat. Si non-> il les modifie.
J'ai de nouveau amélioré la rapidité de mes backtests.
Depuis quelques versions, je monte les fichiers historiques en mémoire sous forme de tableau.
Dans ma dernière version, je ne monte en mémoire que 30mn d'historique suivant le seuil. Si mon tableau de trade n'est pas vide, je reprend 30mn, etc jusqu'à que mon tableau de trade soit vide. Ainsi de nouvelles économies, plus besoin de monter en mémoire un jour entier d'historique, je ne monte en mémoire que le minimum.
J'ai rajouté quelques modifications, petits réglages, je refais les mêmes gros backtest pour comparer les résultats. Je pense encore réduire le temps de calcul de 30%
J'ai fais quelques tests suivant le nombre de boucle, je remarque que mon logiciel n'est optimisé que pour un grand nombre de backtest, il est tellement lourd que pour un seul backtest, ça prend 70 secondes ! Pour 16 backtests, 133 secondes, 160 backtests = 100 secondes. Et plus le nombre de backtest est important plus le calcul de croisement de tableau est performant.
En parallèle, j'ai passé quelques trades en démo. : + 109€ cette semaine ( je n'ai pris que 1 lot en mini contrat à chaque trade ), mais ça ne reflète rien, il y avait des bugs, des trades n'ont pas été executés... Et même aujourd'hui je constate encore un bug, j'ai du boulot, je suis fatigué.
Je vais m'attaquer au dow la semaine prochaine et je vais commencer à multiplier les backtest.
Je vais avoir besoin de puissance de calcul, j'ai regardé sur ovh, leur location de serveur c'est 400€ht, ben autant m'acheter un nouveau pc à ce prix la ... Je me suis acheté 8Go de DDR3 pour voir si ça améliorera le temps de calcul, si oui j'en reprendrai 8.
Au pire je peux faire tourner 5 pc chez moi, mais si quelqu'un à d'autres idées ou solutions, je suis preneur
Sinon le trading manuel me manque, je vais réalimenter mon compte pour faire quelques trades en parallèle
Fait :
- Création algo complet Dow Jones, j'ai maintenant CAC + DAX + DOW
- Création fichier log qui m'informe de tout, seuil, variables, exit, limit, stop, entreetrade
- Correction dernier bug
- Fusion logiciel BBT et son analyse des trades en un seul logiciel, un tout petit bug a mis à l'eau 26 heures de calcul, le point positif c'est que j'ai divisé le temps de calcul par 2 grace également à la lecture fragmentée des fichiers historiques. 7.3 centièmes de seconde pour un backtest. Moyenne de 1.280.000 backtest sur 26 heures.
A faire :
- Multiplier les seuils, mais pour cela il me faut faire les backtest
- Créer alerte sonore
- Créer alerte mail
- Créer sécurité stop garanti -> Si stop garanti > X, désactivation du TAF.
Merci Benoist comme déjà dis c'est en partie grâce à toi.
Ce matin j'enclenche mes logiciels avant la sieste et au réveil 9 trades dont 8 positifs, tous sur le DAX ! +79 points = + 395€ toujours avec un lot en mini contrat.
Ce n'est que de la démo, je suis toujours en version beta, j'ai encore beaucoup de test à faire, mais ça me donne la pèche pour reprendre le code !!
Voici tout mes trades depuis le début, même avec des trades bugs.
trades.jpg (212.62 Kio) Vu 1180 fois
Edit : remarque intéressante, j'ai coupé mon logiciel à midi pour travailler l'après midi sur le code. J'avais déjà entendu parler de la matinée plus prolifique que l'après midi pour certain. Je comptais faire des backtests en ce sens. Je fini ce que j'ai entamé cette nuit ( du débug ) et je place ce backtest en priorité.
Des news de cette semaine de test, j'ai connu du 0 trade, du +19pts, du +79pts, du -5 et du -25.
J'ai volontairement débridé les logiciels afin qu'ils effectuent un maximummum de trade dans le but de découvrir les bugs.
J'en ai découvert un, auparavant je prenais le cours précédent afin de savoir si le marché est haussier ou baissier. Mais les ticks peuvent sauter le seuil et ainsi enfumer le logiciel et du coup il prend position inverse.
Du coup création d'un mini historique, je crée une moyenne des 20 derniers ticks et je sais ainsi si le marché est haussier ou baissier.
J'ai d'autre bugs à corriger, notamment quand le cours est à 10000.
Ensuite, j'ai passé le niveau supérieur sur les backtests. Je suis passé à 12Gio de ram et j'ai crée un saute mouton. C'est à dire que sur 1 million de backtest, il va couvrir une surface 2, 3, 4 .. fois plus grande. Ainsi je divise le nombre de backtest dans un premier temps pour voir quel est le point d'entrée optimal et je travaille dessus ensuite :
Pour ceux dont le code interèsse, voici le calcul :
Spoiler:
sautentree = c'est le saute mouton, si on veut sauter de 2 en 2, 3 en 3, etc
entree1 = c'est l'entrée par rapport au seuil
entrée2 = c'est le nombre d'entrée que l'on souhaite tester. +0.1 à l'origine à chaque test
Code : #
for x in range(entree1,(entree2+entree1)):
if x == 0:x = entree1
elif x != entree1:
x = (sautentree * (x - entree1)) + entree1 # PERMET D ALLER DE .. EN ..
Limite les 12Gio ne suffisent pas, je suis encore descendu à 6 centièmes / backtest
Spoiler:
conso.jpg (107.41 Kio) Vu 1222 fois
conso2.jpg (57.5 Kio) Vu 1222 fois
A faire :
- Multiplier les seuils, mais pour cela il me faut faire les backtest -> En cours
- Créer alerte sonore
- Créer alerte mail
- Créer sécurité stop garanti -> Si stop garanti > X, désactivation du TAF.
Pour ce qui est de la vitesse, as-tu essayé Cython, le gain de vitesse est d'environ 20-50% à l'exécution avec un code non modifié.
En l'intégrant dans ton code l'accélération peut être de 50 à 100 fois.
http://bioinfo-fr.net/cython-votre-programme-python-mais-100x-plus-vite
En plus tu peux toujours overclocker ton core i7 2600k, le mien est à 4,9 Ghz.
J'ai fouillé le net pour en apprendre d'avantage, le seul professeur que j'ai trouvé.
J'en ai entendu parlé mais pas encore utilisé.
Je n'utilise que le multiprocessing pour l'instant et du basique du style :
Spoiler:
Code : #
def f(name):
[...]
if __name__ == '__main__':
Nbproc = multiprocessing.cpu_count()
if Nbproc == 8 :
p = Process(target=f, args=(1,))
p2 = Process(target=f, args=(2,))
[...]
p.start()
p2.start()
[...]
p.join()
p2.join()
[...]
Je me souviens être déjà passé sur ton lien, mais maintenant que j'ai d'avantage d’expérience, je vais tenter de m'y replonger à nouveau, merci
Edit, j'ai une erreur unable to find vcvarsall.bat, il me faut visual studio 2008 qui est maintenant introuvable, il faut donc que je passe sur python 3.4, mais du coup je vais perdre des librairies, bref, je testerai sur mon pc fixe plus tard
Pour l'overclook, je suis pas très chaud
Concernant les horaires si je coupe les trades à 14h ~~ 15h, les résultats d'une série de backtest sont passés de 65% de ratio à 67%
Il reste Visual Studio Express Edition 2008 qui est gratuit et toujours disponible sur internet
http://www.01net.com/telecharger/windows/Programmation/creation/fiches/43597.html
une petite explication : http://www.mail-archive.com/[email protected]/msg07448.html
Pour ma part j'ai déjà avec un ami (lui qui codait) fait un algorithme sur http://www.quantopian.com qui est déconcertant de facilité (code python in-browser, accès au données sur simple ligne de code et mise en live également in-browser). C'est gratuit et ils ne détiennent pas la propriété de ton code.
Je me demandais si tu connaissais et surtout si tu avais de bons tutoriels sur lesquels tu t'es basé ? J'ai des notions en info, dû à ma formation d'ingénieur.
J'ai eu plusieurs formations avant de découvrir le python, formation en bash, perl, php ...
Bref j'avais déjà les bases, ensuite j'ai fait de l'ingénierie inverse, j'ai lu des livres et j'ai fouillé le net
Je pense que je fais fasse à un petit tournant de mon travail. Mes calculs m'éloignent du scalping, j'ai multiplié les seuils et presque à chaque fois lorsque je fais le tri par le gain de point décroissant, ce sont les stops et limits les plus hauts qui l'emportent.
J'ai maintenant une dizaine de point d'entrée sur le dax et la plupart s'éloigne du scalping, ce n'est pas vraiment du day trading non plus, bref je continue mes recherches sans trop savoir où cela va me mener.
J'ai commandé le raspberry pi 2 modèle B avec une carte sd de 64Gio. Je vais y mettre mon logiciel de récupération de cours + mon TAF. Il me trade de le recevoir. Dès que je l'ai je le branche sur ma livebox à 750Mb et je fais une pause
Grace à Beni, je vais pouvoir mettre en ligne mon raspberry, je change de nom pour mon projet, cela devient :
EPITAF
Ensuite je vais passer à la phase de test n°2 pour le module trading auto, fini les trades à gogo. Je bride le logiciel comme il devrait l'être et je passe de 1 point d'entrée à 4
Je continu les backtest pour perfectionner encore et toujours mes points d'entrées et je remarque que je continu à m'éloigner du scalping.
Beaucoup moins de trades exécutés du au bridage et à du dev, 3 trades en 2 jours, +51 points
resultat.jpg (50.97 Kio) Vu 1248 fois
.
16 heures de dev aujourd'hui et grosse remise en question, le résultat d'un calcul m'a retourné. J'ai backtesté une de mes entrées sur le mois de septembre 2015 jamais backtesté, et la patatra, résultat pourri, tout juste positif avec ratio W/L inférieur à 50% alors que sur l'année scolaire 2014/2015, c'était à 66%.
Je ne comprend pas, je retourne tout, je démonte tout, je fais les 100 pas ..
Et la je viens de m'apercevoir d'une petite erreur, je n'ai pas testé le mois de septembre 2015 mais le mois de juillet 2015, ça change tout ... gnéé
Je viens de tester le vrai mois de septembre 2015 et la miracle, 69% encore mieux que l'année dernière, fiu, je vais pouvoir dormir...
Résultat de la fatigue, il faut que je fasse une pause.
Salut Sevice,
Incroyable ce projet, pour être honnête, je n'y comprends absolument rien ! Je n'ai aucune notion de programmation.
Ce qui est sûr, c'est que niveau psycho, les robots sont sûrement meilleurs que nous, pas de peur, pas de cupidité, mémoire infinie, capacité à analyser froidement le marché. J'imagine que c'est ce qui fait leur force.
Je te souhaite tout le meilleur du monde !