Friday 20 January 2017

Simple Trading System Amibroker

Comment optimiser le système commercial REMARQUE: Il s'agit d'un sujet assez avancé. Veuillez lire d'abord les tutoriels précédents de l'AFL. L'idée derrière une optimisation est simple. D'abord vous devez avoir un système commercial, ceci peut être un croisement simple de la moyenne mobile par exemple. Dans presque tous les systèmes, il existe certains paramètres (comme période de moyenne) qui déterminent la façon dont le système donné se comporte (c'est-à-dire est bien adapté à long terme ou à court terme, comment réagit-on sur les stocks très volatils, etc.). L'optimisation est le processus de recherche de valeurs optimales de ces paramètres (donnant le meilleur profit du système) pour un symbole donné (ou un portefeuille de symboles). AmiBroker est l'un des rares programmes qui vous permettent d'optimiser votre système sur plusieurs symboles à la fois. Pour optimiser votre système, vous devez définir de un à dix paramètres à optimiser. Vous décidez de la valeur minimale et maximale admissible du paramètre et des incréments de cette valeur à mettre à jour. AmiBroker effectue alors plusieurs tests en arrière du système en utilisant TOUTES les combinaisons possibles de valeurs de paramètres. Lorsque ce processus est terminé, AmiBroker affiche la liste des résultats triés par résultat net. Vous pouvez voir les valeurs des paramètres d'optimisation qui donnent le meilleur résultat. Écriture de la formule AFL L'optimisation dans le testeur est prise en charge par une nouvelle fonction appelée optimiser. La syntaxe de cette fonction est la suivante: variable optimize (quot Description quot, default. Min. Max. Step) variable - est une variable AFL normale qui obtient la valeur renvoyée par la fonction optimize. Avec les modes normales de backtesting, de scanning, d'exploration et de commentaire, la fonction d'optimisation renvoie la valeur par défaut, de sorte que l'appel de fonction ci-dessus est équivalent à: variable default En optimisation, la fonction optimise retourne des valeurs successives de min à max (inclusivement) avec step step. Quot Descriptionquot est une chaîne utilisée pour identifier la variable d'optimisation et est affichée sous la forme d'un nom de colonne dans la liste des résultats d'optimisation. La valeur par défaut est une valeur par défaut qui optimise les retours de fonction dans les modes d'exploration, d'indicateur, de commentaire, de balayage et de test normal min est une valeur minimale de la variable à optimiser max est une valeur maximale de la variable à optimiser est un intervalle utilisé pour augmenter le Valeur de min à max AmiBroker prend en charge jusqu'à 64 appels pour optimiser la fonction (donc jusqu'à 64 variables d'optimisation), notez que si vous utilisez l'optimisation exhaustive, il est vraiment bon idée de limiter le nombre de variables d'optimisation à quelques-uns. Chaque appel pour optimiser des boucles d'optimisation de pas (max-min) et des appels multiples pour optimiser multiplie le nombre de runs nécessaires. Par exemple, l'optimisation de deux paramètres à l'aide de 10 étapes nécessitera 1010 100 boucles d'optimisation. Optimisation de la fonction uniquement ONCE par variable au début de votre formule car chaque appel génère une nouvelle boucle d'optimisation L'optimisation de plusieurs symboles est entièrement prise en charge par AmiBroker L'espace de recherche maximal est 2 64 (10 19 10,000,000,000,000,000,000) combinaisons 1. Optimisation de la variable unique: sigavg Optimize (Signal 12,26.) 1) Acheter Croix (MACD (12,26), Signal (12,26 sigavg)) Sell Cross (Signal (12,26 sigavg), MACD (12,26)) 2. Optimisation à deux variables (adapté à la cartographie 3D) par Optimisation (par 2. 5. 50. 1) Niveau Optimisation (niveau 2. 2. 150. 4) Achat Croix (CCI (per), - Level) 3. Optimisation de la variable multiple (3): mfast Optimize (MACD Fast. 12. 8. 16. 1) mslow Optimisation (MACD Lente 26. 17. 30. 1) sigavg Optimize (Signal (Mfast, mslow, sigavg), MACD (mfast, mslow).) Après la saisie du signal (mfast, mslow, sigavg) La formule suffit de cliquer sur le bouton Optimiser dans la fenêtre QuotAutomatic Analysisquot. AmiBroker commencera à tester toutes les combinaisons possibles de variables d'optimisation et rapportera les résultats dans la liste. Une fois l'optimisation effectuée, la liste des résultats est présentée triée par le bénéfice net. Comme vous pouvez trier les résultats par n'importe quelle colonne dans la liste des résultats, il est facile d'obtenir les valeurs optimales des paramètres pour le tirage le plus bas, le plus petit nombre de métiers, le plus grand facteur de profit, Les dernières colonnes de la liste des résultats présentent les valeurs des variables d'optimisation pour un test donné. Lorsque vous décidez de la combinaison de paramètres qui convient le mieux à vos besoins, il suffit de remplacer les valeurs par défaut pour optimiser les appels de fonction avec les valeurs optimales. A l'étape actuelle, vous devez les saisir manuellement dans la fenêtre d'édition de la formule (le deuxième paramètre d'optimisation de l'appel de fonction). Affichage des diagrammes d'optimisation animés 3D Pour afficher le diagramme d'optimisation 3D, vous devez d'abord exécuter l'optimisation à deux variables. Deux optimisation variable a besoin d'une formule qui a 2 appels de fonction Optimize (). Un exemple de formule d'optimisation à deux variables ressemble à ceci: par Optimiser (par 2. 5. 50. 1) Niveau Optimiser (niveau 2. 2. 150. 4) Acheter Croix (CCI (par), niveau) Sell Cross (Niveau, CCI (per)) Après avoir saisi la formule, vous devez cliquer sur le bouton quotOptimizequot. Une fois l'optimisation terminée, cliquez sur la flèche du bouton Optimiser et choisissez Afficher le graphique d'optimisation 3D. En quelques secondes, un tracé de surface tridimensionnel coloré apparaîtra dans une fenêtre de visualisation de graphiques en 3D. Un exemple de graphique 3D généré à l'aide de la formule ci-dessus est illustré ci-dessous. Par défaut, les graphiques 3D affichent les valeurs du bénéfice net par rapport aux variables d'optimisation. Vous pouvez cependant tracer le graphique de surface 3D pour n'importe quelle colonne dans la table de résultats d'optimisation. Il suffit de cliquer sur l'en-tête de colonne pour le trier (une flèche bleue apparaîtra indiquant que les résultats d'optimisation sont triés par colonne sélectionnée), puis de nouveau afficher le graphique d'optimisation 3D. En visualisant comment vos paramètres système affectent les performances de trading, vous pouvez décider plus facilement quelles valeurs de paramètres produisent quotfragilequot et qui produisent quotrobustquot performance du système. Les paramètres robustes sont des régions dans le graphique 3D qui montrent des changements progressifs plutôt que brusques dans le graphique de surface. Les diagrammes d'optimisation 3D sont un excellent outil pour empêcher l'ajustement des courbes. L'ajustement de la courbe (ou la sur-optimisation) survient lorsque le système est plus complexe qu'il ne l'a été, et toute cette complexité a été concentrée sur des conditions de marché qui peuvent ne jamais se reproduire. Les changements radicaux (ou pics) dans les diagrammes d'optimisation 3D montrent clairement des zones de sur-optimisation. Vous devriez choisir la région de paramètre qui produit un plateau large et large sur le diagramme 3D pour votre commerce de la vie réelle. Les jeux de paramètres générant des pointes de profit ne fonctionneront pas de manière fiable dans les transactions réelles. Commandes de visualisation de diagramme 3D AmiBrokers Afficheur de diagramme 3D offre des capacités de visualisation totale avec rotation de graphique complète et animation. Maintenant, vous pouvez afficher les résultats de votre système de toutes les perspectives imaginables. Vous pouvez contrôler la position et les autres paramètres du graphique à l'aide de la souris, de la barre d'outils et des raccourcis clavier, que vous trouviez plus facile pour vous. Vous trouverez ci-dessous la liste. - pour faire pivoter - maintenir enfoncé le bouton de souris GAUCHE et se déplacer dans les directions XY - pour zoomer, zoom arrière - maintenir enfoncé le bouton de la souris DROITE et déplacer dans les directions XY - déplacer (traduire) - maintenir enfoncé le bouton de la souris GAUCHE et la touche CTRL et Déplacer dans les directions XY - pour Animer - maintenez enfoncé le bouton de la souris GAUCHE, faites glisser rapidement et relâchez le bouton tout en faisant glisser ESPACE - animer (auto-rotation) TOUCHE GAUCHE - tourner vert. Gauche FLECHE DROITE - tourner vert. Right FLECHE ARRIÈRE - rotation horizontale. Up FLECHE BAS - rotation de l'horiz. NUMPAD 4 - déplacement vers la gauche NUMPAD 6 - déplacement vers la droite NUMPAD 8 - déplacement vers le haut NUMPAD 2 - déplacement vers le bas PAGE UP - niveau de l'eau vers le haut PAGE DOWN - réduction du niveau d'eau Amélioration intelligente (non exhaustive) AmiBroker offre désormais une optimisation intelligente (non exhaustive) en plus d'une recherche régulière et exhaustive. La recherche non exhaustive est utile si le nombre de toutes les combinaisons de paramètres d'un système commercial donné est simplement trop important pour être réalisable pour une recherche exhaustive. La recherche exhaustive est parfaitement fine tant qu'il est raisonnable de l'utiliser. Disons que vous avez 2 paramètres allant de 1 à 100 (étape 1). Thats 10000 combinaisons - parfaitement OK pour une recherche exhaustive. Maintenant, avec 3 paramètres vous avez obtenu 1 million de combinaisons - il est encore OK pour la recherche exhaustive (mais peut être long). Avec 4 paramètres vous avez 100 millions de combinaisons et avec 5 paramètres (1..100) vous avez 10 milliards de combinaisons. Dans ce cas, il serait trop long pour vérifier tous, et c'est le domaine où les méthodes non-exhaustive de recherche intelligente peut résoudre le problème qui n'est pas résoluble dans un délai raisonnable en utilisant la recherche exhaustive. Voici l'instruction la plus simple pour utiliser un nouvel optimiseur non exhaustif (dans ce cas CMA-ES). 1. Ouvrez votre formule dans l'Editeur de Formule 2. Ajoutez cette ligne unique en haut de votre formule: OptimizerSetEngine (quotcmaequot) vous pouvez également utiliser quotspsoquot ou quottribquot ici 3. (Facultatif) Sélectionnez votre cible d'optimisation dans Automatic Analysis, Settings, quotWalk - Page avant, zone cible Optimisation. Si vous omettez cette étape, elle s'améliorera pour le CARMDD (rendement annuel composé divisé par le retrait maximal). Maintenant, si vous exécutez l'optimisation à l'aide de cette formule, il utilisera de nouveaux évolutive (non exhaustive) CMA-ES optimiseur. Comment fonctionne-t-il L'optimisation est le processus de recherche de la fonction minimum (ou maximum) d'une fonction donnée. Tout système commercial peut être considéré comme une fonction de certain nombre d'arguments. Les entrées sont des paramètres et des données de cotation. La sortie est votre objectif d'optimisation (disons CARMDD). Et vous cherchez le maximum de la fonction donnée. Certains des algorithmes intelligents d'optimisation sont basés sur la nature (comportement animal) - Algorithme PSO, ou processus biologique - Algorithmes génétiques, et certains sont basés sur des concepts mathématiques dérivés par les humains - CMA-ES. Ces algorithmes sont utilisés dans de nombreux domaines différents, y compris la finance. Entrez quotPSO financequot ou quotCMA-ES financequot dans Google et vous trouverez beaucoup d'info. Des méthodes non exhaustives (ou quotsmartquot) trouveront global ou local optimal. L'objectif est bien sûr de trouver globale, mais si il ya un seul pic pointu dans des combinaisons de paramètres zillions, des méthodes non exhaustives peuvent échouer à trouver ce pic unique, mais en prenant forme commerçants perspecive, trouver un seul pic pointu est inutile pour Parce que ce résultat serait instable (trop fragile) et non réplicable dans le commerce réel. Dans le processus d'optimisation nous recherchons plutôt des régions de plateau avec des paramètres stables et c'est le secteur où les méthodes intelligentes brillent. En ce qui concerne l'algorithme utilisé par la recherche non exhaustive, il apparaît comme suit: a) l'optimiseur génère une population de départ (généralement aléatoire) des ensembles de paramètres b) le test de retour est effectué par AmiBroker pour chaque ensemble de paramètres de la population c) Évaluée selon la logique de l'algorithme et la nouvelle population est générée sur la base de l'évolution des résultats, d) si de nouvelles améliorations sont trouvées, sauvegardez-les et passez à l'étape b) jusqu'à ce que les critères d'arrêt soient satisfaits. Itérations maximales b) s'arrêter si la plage des meilleures valeurs objectives des dernières X générations est nulle c) s'arrêter si l'ajout d'un vecteur d'écart-type 0,1 dans n'importe quelle direction d'axe principal ne change pas la valeur de la valeur objective d) Exhaustif) dans AmiBroker, vous devez spécifier le moteur d'optimisation que vous souhaitez utiliser dans la formule AFL à l'aide de la fonction OptimizerSetEngine. La fonction sélectionne le moteur d'optimisation externe défini par son nom. AmiBroker est actuellement livré avec 3 moteurs: Standard Particle Swarm Optimizer (quotspsoquot), Tribus (quottribquot) et CMA-ES (quotcmaequot) - les noms dans les accolades doivent être utilisés dans les appels OptimizerSetEngine. En plus de sélectionner le moteur d'optimisation, vous pouvez définir certains de ses paramètres internes. Pour ce faire, utilisez la fonction OptimizerSetOption. Fonction OptimizerSetOption (quotnamequot, value) La fonction a défini des paramètres supplémentaires pour le moteur d'optimisation externe. Les paramètres dépendent du moteur. Les trois optimiseurs livrés avec AmiBroker (SPSO, Trib, CMAE) supportent deux paramètres: quotRunsquot (nombre d'exécutions) et quotMaxEvalquot (évaluations maximales (tests) par exécution unique). Le comportement de chaque paramètre dépend du moteur, de sorte que les mêmes valeurs peuvent et, habituellement, donneront des résultats différents avec différents moteurs utilisés. La différence entre Runs et MaxEval est la suivante. L'évaluation (ou le test) est un seul contre-test (ou une évaluation de la valeur de la fonction objective). RUN est une exécution complète de l'algorithme (recherche de la valeur optimale) - impliquant généralement de nombreux tests (évaluations). Chaque exécution simplement RESTARTS l'ensemble du processus d'optimisation à partir du nouveau début (nouvelle population aléatoire initiale). Par conséquent chaque exécution peut conduire à trouver différent local maxmin (si elle ne trouve pas globale). Ainsi, le paramètre Runs définit le nombre d'exécutions d'algorithmes ultérieures. MaxEval est le nombre maximum d'évaluations (bactests) dans une seule exécution. Si le problème est relativement simple et que 1000 tests sont suffisants pour trouver le max global, 5x1000 est plus susceptible de trouver le maximum global car il ya moins de chances d'être coincé dans le max local, Être délicat. Cela dépend du problème à tester, de sa complexité, etc. Toute méthode stochastique non exhaustive ne vous donne pas la garantie de trouver maxmin global, quel que soit le nombre de tests, s'il est plus petit que exhaustif. La réponse la plus facile est de. Spécifiez le nombre de tests qu'il est raisonnable de faire en termes de temps à remplir. Un autre conseil simple est de multiplier par 10 le nombre de tests en ajoutant une nouvelle dimension. Cela peut conduire à surestimer le nombre de tests requis, mais il est tout à fait sans danger. Les moteurs expédiés sont conçus pour être simples à utiliser, donc quotreasonablequot defaultautomatique valeurs sont utilisées afin que l'optimisation peut être généralement exécuté sans rien spécifier (acceptant par défaut). Il est important de comprendre que toutes les méthodes intelligentes d'optimisation fonctionnent le mieux dans des espaces de paramètres continus et des fonctions objectives relativement lisses. Si l'espace des paramètres est discret, les algorithmes évolutifs peuvent avoir du mal à trouver la valeur optimale. Il est particulièrement vrai pour les paramètres binaires (onoff) - ils ne sont pas adaptés à toute méthode de recherche qui utilise le gradient de changement de fonction objectif (comme le font la plupart des méthodes intelligentes). Si votre système d'échange contient de nombreux paramètres binaires, vous ne devriez pas utiliser l'optimiseur intelligent directement sur eux. Au lieu de cela, essayez d'optimiser uniquement les paramètres continus à l'aide de l'optimiseur intelligent et changez les paramètres binaires manuellement ou via un script externe. SPSO - Standard Particle Swarm Optimizer est basé sur SPSO2007 code qui est censé produire de bons résultats à condition que les paramètres corrects (c'est-à-Runs, MaxEval) sont fournis pour un problème particulier. Choisir les bonnes options pour l'optimiseur PSO peut être délicat, donc les résultats peuvent varier considérablement d'un cas à l'autre. SPSO. dll est fourni avec des codes sources complets dans le sous-dossier quotADKquot. OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) Optimiser (quotsquot, 26, 1, 100, 1) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotRunsquot, 1) (0, MACD (fa, sl)) TRIBES - Adaptive Parameter-less Optimiseur d'essaim de particules de particules Tribus est adaptatif (quotfquot, 12, 1, 100, 1) , Version sans paramètre de l'optimiseur non exhaustif de PSO (optimisation des essaims de particules). Pour des raisons scientifiques voir: particleswarm. infoTribes2006Cooren. pdf En théorie, il devrait performer mieux que le PSO régulier, car il peut ajuster automatiquement la taille des essaims et la stratégie algorithmique pour résoudre le problème. La pratique montre que sa performance est assez similaire à PSO. Le plugin Tribes. DLL implémente la variante quotTribes-Dquot (c'est-à-dire sans dimension). Basé sur clerc. maurice. free. frpsoTribesTRIBES-D. zip par Maurice Clerc. Les codes sources originaux utilisés avec l'autorisation de l'auteur Tribes. DLL sont fournis avec le code source complet (dans le dossier quotADKquot) Paramètres supportés: quotMaxEvalquot - nombre maximum d'évaluations (backtests) par run (par défaut 1000). Vous devez augmenter le nombre d'évaluations avec un nombre croissant de dimensions (nombre de paramètres d'optimisation). Le 1000 par défaut est bon pour 2 ou 3 dimensions maximum. QuotRunsquot - nombre de cycles (redémarrages). (Par défaut 5) Vous pouvez laisser le nombre d'exécutions à la valeur par défaut de 5. Par défaut, le nombre d'exécutions (ou de redémarrages) est défini sur 5. Pour utiliser l'optimiseur Tribes, il suffit d'ajouter une ligne à votre code: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 évaluations max CMA-ES - Covariance Matrix Adaptation Optimiseur de stratégie évolutionnaire CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) est avancé non exhaustive optimiseur. Pour des raisons scientifiques voir: bionik. tu-berlin. deusernikocmaesintro. html Selon des repères scientifiques surperforme neuf autres, les stratégies évolutives les plus populaires (comme PSO, évolution génétique et différentielle). Bionik. tu-berlin. deusernikocec2005.html Le plugin CMAE. DLL implémente quotGlobalquot variante de recherche avec plusieurs redémarrages avec la taille de la population croissante CMAE. DLL est livré avec le code source complet (dans le dossier quotADKquot) Par défaut le nombre de runs (ou redémarre) est défini À 5. Il est conseillé de laisser le nombre de redémarrages par défaut. Vous pouvez le varier en utilisant l'appel OptimizerSetOption (quotRunsquot, N), où N doit être dans la plage 1..10. La spécification de plus de 10 exécutions n'est pas recommandée, bien que possible. Notez que chaque exécution utilise TWICE la taille de la population de l'exécution précédente de sorte qu'il croît de façon exponentielle. Par conséquent, avec 10 courses, vous vous retrouvez avec la population 210 plus grande (1024 fois) que la première série. Il existe un autre paramètre quotMaxEvalquot. La valeur par défaut est ZERO, ce qui signifie que le plugin calcule automatiquement MaxEval requis. Il est conseillé de ne pas définir MaxEval par vous-même comme défaut fonctionne bien. L'algorithme est assez intelligent pour minimiser le nombre d'évaluations requises et il converge très rapidement au point de solution, si souvent il trouve des solutions plus rapidement que d'autres stratégies. Il est normal que le plugin saute quelques étapes d'évaluation, si elle détecte que la solution a été trouvée, donc vous ne devriez pas être surpris que la barre de progression d'optimisation peut se déplacer très rapidement à certains points. Le plugin a également la capacité d'augmenter le nombre d'étapes sur la valeur initialement estimée si elle est nécessaire pour trouver la solution. En raison de son caractère adaptatif, le temps quotestimated leftquot andor quotnumber de stepsquot affiché par le dialogue de progression est seulement quotbest devinez à l'timequot et peut varier pendant cours d'optimisation. Pour utiliser l'optimiseur CMA-ES, il vous suffit d'ajouter une ligne à votre code: Ceci exécutera l'optimisation avec des paramètres par défaut qui sont très bien pour la plupart des cas. Il convient de noter, comme c'est le cas avec de nombreux algorithmes de recherche d'espace continu, que la diminution du paramètre quotstepquot dans les appels de fonction Optimize () n'affecte pas de manière significative les temps d'optimisation. La seule chose qui importe est le problème quotdimension, c'est-à-dire le nombre de paramètres différents (nombre d'optimiser les appels de fonction). Le nombre de quotstepsquot par paramètre peut être défini sans affecter le temps d'optimisation, donc utilisez la meilleure résolution que vous voulez. En théorie, l'algorithme devrait être en mesure de trouver une solution dans au plus 900 (N3) (N3) backtests où quotNquot est la dimension. En pratique, il converge beaucoup plus rapidement. Par exemple, on peut trouver la solution en espace de paramètre dimensionnel 3 (N3) (par exemple 100100100 1 million d'étapes exhaustives) dans seulement 500-900 étapes CMA-ES. Optimisation individuelle multi-thread A partir de AmiBroker 5.70 en plus du multithreading multi-symbole. Vous pouvez effectuer l'optimisation à symbole unique multi-thread. Pour accéder à cette fonctionnalité, cliquez sur la flèche déroulante à côté du bouton quotOptimizequot dans la fenêtre Nouvelle analyse et sélectionnez quot. QuotIndividual Optimizequot utilisera tous les cœurs de processeur disponibles pour effectuer l'optimisation d'un seul symbole, ce qui le rend beaucoup plus rapide que l'optimisation régulière. Dans le mode quotCurrent symbolquot, il effectue l'optimisation sur un symbole. Dans tous les modes de symboles et quotFilterquot, il traitera tous les symboles de façon séquentielle, c'est-à-dire la première optimisation complète pour le premier symbole, puis l'optimisation sur le second symbole, etc. Limitations: 1. Le backtestter personnalisé n'est PAS supporté (encore) Seule l'optimisation EXHAUSTIVE fonctionne. Finalement, nous pouvons nous débarrasser de la limitation (1) - lorsque AmiBroker est modifié pour backtester personnalisé n'utilise plus OLE. Mais (2) est probablement ici pour rester pour long. 14 octobre 2011 Ajouté le 29 février 2012, des points supplémentaires à considérer: 1) Ce système dépend de l'obtention de remplissages précis au prix Open. Pour obtenir de tels remplissages, il faut un flux de données de qualité minimale et des compétences de programmation avancées pour mettre en œuvre l'automatisation du commerce. 2) Lors de la fixation du prix d'entrée légèrement en dessous du prix Open (essayer d'améliorer la performance), le système échoue misérablement. Même l'amélioration du prix d'un seul cent tue le système. Cela suggère que la plupart du profit provient des jours où le prix d'ouverture était égal au quotidien Low, c'est-à-dire le prix a augmenté de l'Open et n'a jamais chuté en dessous. Cela, bien sûr, est évident. Pour confirmer cela, j'ai ajouté cette condition d'essai (il regarde en avant) pour exclure les jours où Open Low: Acheter Acheter AND NOT O L Cela tue le système et prouve que la plupart du profit provient de jours où OL. Pour plus de confirmation, j'ai ajouté la condition inverse: Buy Buy AND O L Cela donne des bénéfices presque infinis et prouve que la plupart des profits proviennent de jours où le prix remonte immédiatement de l'Open et ne revient jamais en dessous. Essayer d'améliorer le prix d'entrée est une erreur que l'on devrait inscrire sur un Stop set 1-2 ct au-dessus du prix Ouvert, cela éliminera les jours où le prix baisse et ne se retourne jamais. Cela améliore considérablement les performances. 3) Ce système trades knee-jerk trader-responsespatterns. De tels motifs sont généralement noyés par le commerce de gros volume, donc ce système fonctionne beaucoup mieux lorsque vous sélectionnez des tickers avec des volumes entre 500 000 et 5 000 000 partsday. Cela améliore également les performances de manière significative. L'ajout des deux caractéristiques ci-dessus entraîne une courbe d'équité bien meilleure que celle présentée ci-dessous. Désolé, je n'ai pas le temps de documenter ce qui précède plus en détail. Bonne chance Ce message décrit une idée très simple de trading Long-only qui achète à un pourcentage donné ci-dessous hier8217s Low et sort au jour suivant8217s Open. Bien qu'il soit parfois difficile d'obtenir le prix exact d'Open, la rentabilité élevée de ce système en fait un bon candidat pour des expérimentations supplémentaires. Le système fonctionne bien avec des listes de surveillance comme le N100, SP500, SP1500, Russel 1000, etc Performances sur le Russel 1000, avec max. Les positions ouvertes définies à 1, pour la période 12102003 à 12102011, ressemblent à ceci: Certaines des autres listes de surveillance donnent moins d'exposition (bénéfices) mais cela vient avec des DD plus bas. Les commissions ont été fixées à 0,005 par action. Pas de marge utilisée. Pas de classement explicite est utilisé tickers sont négociés en fonction de leur ordre alphabétique dans la Watchlist. Cela peut sembler étrange, mais est important: inverser ce genre de système échoue. Cela peut signifier que, en raison de problèmes de numérisation en temps réel, les symboles figurant en haut de cette liste peuvent être échangés différemment de ceux répertoriés en bas. Prêtez attention à la liquidité (vous pourriez vouloir négocier plus d'un poste) et le glissement (l'entrée est plutôt sans risque, mais les sorties peuvent être problématiques). Les DD sont significatifs mais peuvent être compensés par des entrées et sorties améliorées en temps réel. Lors de la négociation automatique, il peut être possible de placer des ordres d'entrée OCA DAY-LMT pour tous les signaux et attendre juste et voir ce qui remplit. Puisque les sorties sont plus difficiles que les entrées, vous pouvez explorer d'autres stratégies de sortie. Les valeurs par défaut des paramètres viennent d'être retirées d'un chapeau. Presque certainement vous pouvez les optimiser ou les ajuster dynamiquement pour les tickers individuels. J'ai brièvement testé ce système en mode Walk-Forward et les résultats ont été rentables pour toutes les années testées. Sauf pour le nombre de stocks négociés paramètres ne semblent pas très critique. Sur-optimisation doesn8217t semblent un problème dans ce cas. Le code ci-dessous est très simple et nécessite peu d'explications. Cependant, il est important de comprendre que ce système bénéficie d'un petit avantage en négociant à l'Open, et en calculant le TrendMA en utilisant le même prix Open. Certains pourraient interpréter cela comme une fuite future, mais si vous échangez ce système en temps réel, il n'est pas. Beaucoup de gens ne réalisent pas que si vous opérez à l'Open, vous pouvez également utiliser ce prix dans vos calculs 8212 tant que vous les exécutez en temps réel 8212 c'est là où AmiBroker et la technologie peut vous donner un avantage. Si Ref () renvoie le TrendMA d'une barre, le système est encore très rentable, mais les DD augmentent pour certaines Watchlists. Si vous utilisez des placements fixes, la différence est négligeable. La procédure de négociation serait de commencer la numérisation avant que le marché s'ouvre et supprimer les téléscripteurs qui sont fixés un prix tellement distant qu'ils sont peu susceptibles de répondre à l'OpenThresh. Ainsi vous pouvez commencer à balayer 1000 symboles mais très rapidement le nombre balayé diminuera à juste une douzaine de tickers. Lorsque vous approchez de 9 h 30, votre analyse en temps réel sera très rapide et vous pourrez placer votre ordre LMT très près de l'Open 8211, vous pourrez peut-être même améliorer le prix Open. Même si quelques personnes ont regardé le code ci-dessous et n'ont trouvé rien de mal, les bénéfices semblent assez élevés pour un tel système simple. Veuillez signaler les erreurs que vous pouvez constater. Cette idée a été publiée (161332) sur la liste principale AmiBroker le 3 Juillet 2011. Il y avait de nombreux excellents commentaires sur La liste et si vous êtes intéressé à travailler sur ce système vous faites bien de les lire tous avant de commencer. Après l'affichage, j'ai trouvé un certain nombre de messages sur le web discuter de cette idée de négociation, certains ont prétendu être le commerce d'un système similaire avec succès. Je me suis référé à ce système 8220Gap Trading8221 système, mais cela peut être un peu d'un mauvais nom, 8220Mean reversion8221 pourrait être une meilleure classification. Googling pour elle vous obtiendra beaucoup plus de hits à des systèmes similaires. Voici quelques liens: Il semble être une idée de négociation assez largement discuté et je suggère you8217ll faire quelques Googling sur votre propre pour en apprendre plus tard. En tant qu'utilisateur Amibroker, vous avez de meilleurs outils que la plupart des commerçants et vous avez une meilleure chance que la plupart d'arriver à une variation qui fonctionne. Peut-être avec un peu moins de profits, et avec une quantité significative de code supplémentaire 8212, il won8217t être un 8220quicky8221 projet :-) Certaines personnes ont commenté que ce système ne fonctionnera pas dans le commerce réel, alors qu'ils peuvent être les autres dire des régimes comme ce travail. Je n'ai pas fini le système et je peux affirmer savoir s'il est négociable ou non. Le système achète à un certain pourcentage en dessous de hier, sur une commande LMT, et quitte le même jour à la fermeture. Filed by Herman à 18h53 sous Idées (Expérimental) Commentaires fermés sur une idée de négociation de EOD Gap longue-seulement J'utilise un petit critère de configuration pour analyser mes stocks. MACD par défaut, je cherche Histogramme 4 bars en bas et 1 barre d'augmentation pour acheter le signal (j'ai l'histogramme mis à rouge pour le bas et bleu pour le haut de sorte que je peux voir clairement). MACD au-dessus de Zero Line RSI au-dessus de 30 Ce système est basé sur le commerce de tendance. Achat sur retrait lorsque le marché continue sa tendance à la hausse. Pour rechercher les configurations MACD Trend: 1) Insérez la formule suivante dans un graphique. 2) Exécuter un scan en AA en utilisant SMACDTrend avec tous les symboles. N derniers jours. N 1 et Sync chart sur select comme paramètres. Les stocks qui répondent aux critères seront indiqués dans la liste des résultats. Remarque: Certaines variantes des règles d'installation peuvent définir des signaux qui sont assez rares et dans de petites bases de données il est possible qu'il n'y ait pas de configurations sur un jour donné (donc aucun stock ne sera signalé par l'analyse). 3) Cliquez sur n'importe quel symbole dans le volet Résultats pour afficher le graphique, pour ce symbole, en arrière-plan. Remarque: Dans cet exemple, une base de données d'entraînement, contenant uniquement des données allant jusqu'à 5112007, a été utilisée. Idée de trading par protraderinc. Commentaires et formule par le projet de loi 8211 WaveMechanic. Publié par brianz à 11:06 pm sous Idées (Expérimental) Comments Off sur MACD Trend System 14 octobre 2007 Classé par brianz à 22:43 sous Idées (Expérimental) Commentaires fermés sur 15 jours Performers Trading System 19 août 2007 Ceci est Le premier d'une série de KISS (keep it simple, stupid) idées de trading pour vous de jouer avec. Toutes les idées de système présentées ici sont non prouvées, inachevées et peuvent contenir des erreurs. Ils sont destinés à montrer les modèles possibles pour une exploration plus poussée. Comme toujours, vous êtes invités à faire des commentaires ou à ajouter vos propres idées à cette série. Je préfère les systèmes en temps réel qui fonctionnent rapidement, sont automatisés et sont dépourvus d'indicateurs traditionnels. De préférence, ils ne devraient pas avoir de paramètres optimisables, mais je ne peux pas toujours être en mesure de répondre à cet objectif. Tous les systèmes ne seront pas aussi simples qu'il y en aura qui utilisent des fonctions simples de calcul de la moyenne ou du type HHVLLV. Le premier système présenté ci-dessous est une copie du système de démonstration que j'utilise pour développer des routines de Trade-Automation ailleurs sur ce site. Gap-Trading en temps réel. Pour voir comment cela fonctionne, vous devez Backtest il sur des données de 1 minute avec une périodicité dans la plage de 5-60 minutes. Votre première impression peut être que ces bénéfices sont tout simplement due à un marché vers le haut, cependant, le fait que les bénéfices longs et courts sont à peu près égale suggère qu'il ya plus à elle. Parce que 98 de tous les métiers tombent entre 9h30 et 10h30, ce type de système est agréable si vous voulez juste échanger un court laps de temps chaque jour. Cela réduit les risques liés à l'exposition au marché et vous donne plus de temps pour profiter d'autres activités. Les résultats sont présentés ci-dessous pour la période du 1 MAR 2007 au 17 AOÛT 2007. Les noms de ticker sont omis pour garder le tableau compact le graphique montre simplement un bénéfice net Bar pour chaque ticker testé. L'exposition moyenne pour ce système est d'environ 15, donc, vous pouvez être en mesure de négocier des portefeuilles pour augmenter les bénéfices et lisser les courbes d'équité. Soyez averti que dans sa forme brute les tirages sont inacceptables et qu'il peut y avoir des restrictions de volume pour de nombreux tickers. Étant donné que ce système a une faible exposition, il peut être un candidat pour le marché de balayage et de négociation de portefeuille classé. RAR serait une indication des bénéfices maximaux absolus qui pourraient être obtenus si on réussissait à augmenter l'exposition à près de 100. Cependant, les mouvements de prix de différents tickers peuvent être corrélés, et les métiers de tickers différents peuvent se chevaucher. Si plusieurs tickers échangent en même temps, il serait difficile d'augmenter l'exposition au système. Vous êtes invité à soumettre des liens vers des idées de système dans les commentaires à ce poste. Gap Trading Strategies 8211 Stockcharts Moyenne mobile intraday Crossover avec la taille de position 8211 NeoTicker Volatilité-Breakout-Systems 8211 Traders Log Dix jours HighLow système 8211 StockWeblog Réversion Systems 8211 SeekingAlpha Systems Traders Club. Bulletins du Club Trader. 16 juillet 2007 Cette catégorie est réservée aux véritables systèmes de négociation, c'est-à-dire que vous avez négocié à un moment donné ou envisageriez de négocier. Étant donné que les critères de négociabilité varient d'une personne à l'autre et que les systèmes peuvent fonctionner ou non selon la façon dont ils sont échangés, il sera difficile de filtrer les contributions ici. En ce qui concerne ce qui est affiché ici, garder un esprit ouvert et considérer que l'affiche considère le système négociable. Vous pouvez contribuer en publiant votre nom d'auteur (obligatoire) ou dans un commentaire à cet article. Il s'agit de l'endroit où vous pouvez partager des systèmes de négociation qui sont marginalement rentables, c'est-à-dire ceux qui ne devraient pas être négociés comme ils le sont, mais qui montrent le potentiel. En règle générale, il s'agit d'un système de base qui est rentable, mais les expériences baisses de 50. Ces systèmes peuvent souvent être améliorés en ajoutant Stops, cibles, gestion de l'argent, les techniques de portefeuille, etc La réalité est que même si vous n'avez pas l'expertise pour faire Il travail quelqu'un d'autre peut. Presque chacun d'entre nous trouver des idées de système commercial dans les livres et les magazines que nous code alors en AFL pour l'évaluation. Certains de ces systèmes peuvent avoir été autour depuis de nombreuses années tandis que d'autres sont de nouvelles idées. Après les coder, presque toujours, nous sommes déçus et chuck dehors le système (travail). Au lieu de jeter votre travail, vous êtes invité à poster le système ici pour donner un autre développeur une chance de le corriger. Vous êtes invités à contribuer en tant qu'autor (nécessite un enregistrement) ou dans un commentaire à cet article. Filed by Herman à 11:04 sous Idées (expérimentales) Commentaires fermés sur l'introduction aux systèmes commerciaux 8211 Idées


No comments:

Post a Comment