Mon approche. Le noyau est le moteur. - page 128
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Merde, mec, tu ne comprends vraiment pas ce qui se passe ou tu essaies de faire des économies de cette manière ?
Dans tout panneau, la chose fondamentale et la plus compliquée est l'affichage de la cohérence. Si un ordre est ouvert - il doit être affiché, s'il n'est pas dans l'onglet de transaction, il ne doit pas être dans le panneau non plus. C'est élémentaire et "très simple" sur le plan conceptuel. Mais pour que cela soit "très simple", le panel doit être basé sur un modèle d'état. Vous n'avez rien de tel, mais une base de données locale de courbes non cohérentes sur des chaînes de caractères insérées dans des objets utilisateur :
Et maintenant, vous essayez de nous prouver qu'il n'y a pas de problème, que tout est parti de rien. Les commandes non affichables dans votre tableau sont correctes.. Que les commandes qui se trouvent sur votre table, mais qui sont en fait clôturées depuis longtemps - c'est aussi normal. Et en général, tout est si normal et bon, sauf que le nombre de postes est limité à 20.
Vous comprenez que le problème est la mise en œuvre de la fixation de l'ouverture/fermeture de la commande par des moyens internes. Cela ne fait pas partie du mécanisme de la table elle-même. C'est un mécanisme de l'UTILISATEUR !
Au lieu de critiquer le moteur et l'implémentation de la table, vous feriez mieux d'écrire un mécanisme approprié pour réparer l'ouverture et la fermeture de l'ordre.
Et tout fonctionnera bien !
4. Si vous écrivez correctement ces cycles de commande, le tableau fonctionnera correctement.....
J'ai juste oublié....
Mais cela ne signifie pas que le tableau dynamique lui-même ne fonctionne pas.
L'utilisateur doit être familier avec la documentation. Sait-il quoi mettre dans quel tableau et comment mettre tout cela à jour ? Je vous ai demandé d'écrire une démonstration entièrement fonctionnelle, qui serait à partir de votre code pour comprendre comment et ce qui est fait et où et ce qui est inséré, mais vous avez effacé mon TOR et me l'avez rendu sous la forme d'une table tordue !
Je ressens juste un gros tas de négligence en vous, dans votre code et toutes les choses que vous faites, en quelque sorte pour les gens, mais quand on en vient aux détails, les conneries commencent. Faites une chose qui est petite mais bonne et de haute qualité. Vous dites que tout est simple à résoudre, élémentaire. Mais pour une raison quelconque, vous avez trouvé une solution, dans laquelle il n'y a rien. Qu'est-ce qui vous a empêché de faire tous ces simples jetons en quinze jours ?
Désolé pour la négativité. C'est juste que tu m'as déçu. J'espérais voir plus et mieux. Veuillez corriger votre démo. Faites en sorte qu'il soit bon, de haute qualité, conforme à la demande et sans ces mots : "Oui, c'est élémentaire, mais il faut l'ajuster ici". Proposez une solution originale, qui pourrait être contestée.
Vasiliy, ne sois pas émotif. Je n'ai jamais eu de manque de respect. Je n'ai tout simplement pas travaillé avec des commandes pendant longtemps et j'ai oublié comment le faire. Mais c'est une tâche d'utilisateur.
Mais je le ferai quand même. Puisque vous trouvez ça si difficile...
Vasily, il n'y a pas besoin d'émotion. Je n'ai eu aucun manque de respect. Je n'ai pas travaillé avec des commandes pendant longtemps et j'ai oublié comment le faire. Mais c'est une tâche d'utilisateur.
Mais je le ferai quand même. Si vous pensez que c'est si compliqué...
Alors, faites-le. Je ne trouve pas cela si compliqué, mais je le répète, il n'y a pas de documentation pour votre moteur, et je ne sais pas quel tableau mettre à jour avec quels paramètres. Ce dont j'ai besoin, c'est d'une démonstration sous la forme d'une solution complète. C'est le seul moyen de comprendre ce que vous faites et comment cela fonctionne. C'est exactement ce que j'attendais de toi. Lorsque vous le créerez, nous discuterons des solutions techniques. Et en général, prenez les critiques externes, même celles des experts, comme des critiques positives, car les retours négatifs ont généralement plus de valeur que les retours positifs.
Je vais vous expliquer comment fonctionne un tableau dynamique :
1. Lorsque l'on clique sur les boutons d'achat ou de vente, le signal est envoyé au fichier de connexion externe dans le bloc de cas du bouton lui-même.
Vous devez savoir qu'une nouvelle ligne est ouverte automatiquement si un nouveau ticket est envoyé à la fonctionE_Main_form_1__Price(ticket, OrderOpenPrice()) ;.
Si le ticket existe déjà, la ligne souhaitée est sélectionnée AUTOMATIQUEMENT et la nouvelle valeur y est définie.
Pour fermer une ligne dans la table , appelez la fonction E_Main_form_1_CLOSE_ROW___Orders_table(ticket) ;
Le ticket signifie le ticket de la rangée.
Je vais vous expliquer comment fonctionne un tableau dynamique :
1. Lorsque l'on clique sur les boutons d'achat ou de vente, le signal est envoyé au fichier de connexion externe dans le bloc de cas du bouton lui-même.
Vous devez savoir qu'une nouvelle ligne est ouverte automatiquement si un nouveau ticket est envoyé à la fonctionE_Main_form_1__Price(ticket, OrderOpenPrice()) ;.
Si le ticket existe déjà, la ligne souhaitée est sélectionnée AUTOMATIQUEMENT et la nouvelle valeur y est définie.
Pour fermer une ligne dans la table , appelez la fonction E_Main_form_1_CLOSE_ROW___Orders_table(ticket) ;
Billet signifie billet de rangée.
Peter, faites une boucle for dans le timer qui passerait par les ordres ouverts et enverrait les changements dans la liste des ordres à votre table. Veillez également à ce que le bénéfice de l'ordre dans votre tableau change également de manière dynamique.
Je vais vous expliquer comment fonctionne un tableau dynamique :
1. Lorsque l'on clique sur les boutons d'achat ou de vente, le signal est envoyé au fichier de connexion externe dans le bloc de cas du bouton lui-même.
Vous devez savoir qu'une nouvelle ligne est ouverte automatiquement si un nouveau ticket est envoyé à la fonctionE_Main_form_1__Price(ticket, OrderOpenPrice()) ;.
Si le ticket existe déjà, la ligne souhaitée est sélectionnée AUTOMATIQUEMENT et la nouvelle valeur y est définie.
Pour fermer une ligne dans la table , appelez la fonction E_Main_form_1_CLOSE_ROW___Orders_table(ticket) ;
Billet signifie billet de rangée.
C'est une mise en œuvre tordue, et voici la réponse :
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Mon approche. Core - Moteur.
Vasiliy Sokolov, 2019.01.09 13:33
Peter, désolé, mais votre travail n'est pas accepté, car ce que vous avez envoyé est un rare travail de pirate. Désolé mais il semble que je sois le seul à avoir analysé ce que vous avez envoyé, et personne d'autre que moi ne fera l'expertise.
Donc, dans l'ordre, la mission était la suivante :
Ce que je vois à la place :
Tout d'abord, les transactions ne peuvent être ouvertes dans votre panel qu'en cliquant sur le bouton acheter/vendre. Si la position est ouverte par la fenêtre standard, la transaction n'apparaît pas.
....
Supposons que nous ayons plusieurs tables dynamiques.
Le fichier des propriétés de connexion imprimera automatiquement des fonctions wrapper pour travailler avec ces tables.
Voici un exemple illustratif. Nous avons dessiné une table dynamiqueOrders_table.
Ce sont les fonctions enveloppantes que nous avons :
Remarque : chaque wrapper a un nom de colonne dyn.table à la fin de son nom.
L'élément spécifique n'est pas spécifié, seulementla ligne magique.
En d'autres termes, pour définir une nouvelle valeur dans une cellule d'une ligne existante, vous devez envoyer son Magic et sa valeur.
Pour définir une nouvelle valeur dans une cellule d'une ligne inexistante, vous devez envoyer son magik et sa valeur. La ligne sera automatiquement créée.
Pour détruire une ligne dans la table, vous devez appeler le wrapper avec les motsCLOSE_ROW
Par exemple :
Et passez-y le majik de la ligne que vous voulez fermer.
C'est tout.
Peter, créez une boucle for dans le timer, qui passerait par les ordres ouverts et enverrait les changements dans la liste des ordres à votre table. Assurez-vous également que le bénéfice de l'ordre dans votre tableau change également de manière dynamique.
Ok, j'écrirai les cycles et le code pour travailler avec les commandes, mais je vous laisse le soin de le mettre vous-même, car j'ai déjà converti le moteur pour lier les ressources et je le teste. Pour l'instant, je ne peux pas récupérer l'ancien lien, et je n'ai pas encore terminé le nouveau.
OK, j'écrirai les boucles et le code pour travailler avec les commandes, mais je vous laisse le soin de le mettre en place vous-même, car j'ai déjà redessiné le moteur pour qu'il communique par le biais de ressources et je suis en train de le tester. Pour l'instant, je ne peux pas récupérer l'ancien lien, et je n'ai pas encore terminé le nouveau.
Travaillez avec la version du moteur que vous avez jointe à titre de démonstration.
En d'autres termes, pour définir une nouvelle valeur dans une cellule d'une ligne existante, vous devez envoyer sa majuscule et sa valeur.
Ça me semble simple. Si votre approche fonctionne comme je le pense, alors je ne vois aucun problème à utiliser une table dynamique ou à mettre à jour les valeurs de position via une minuterie. Peter, pourquoi fallait-il faire une bosse au début ?)