Les erreurs typiques et la façon de les traiter dans l'environnement de négociation - page 7

 
fxsaber:

J'ai peur que ce soit de la logique tordue. Mais je peux me tromper, bien sûr. Il serait intéressant d'entendre la logique.

Arbitrage de 3+ pieds

 
Комбинатор:

Arbitrage de 3+ pieds

Différentes logiques peuvent être utilisées pour cette TS. Typiquement, il s'agit de l'envoi asynchrone de trois ordres. Mais, en effet, il existe des variantes où un OrderSend synchrone est envoyé en premier au symbole le plus susceptible d'être fort. Et si l'envoi d'ordre se termine par une position ouverte - le moins probable est que deux ordres OrderSendAsync soient envoyés.

Dans cette situation, il peut sembler que la première "position" - l'ordre au marché - nécessite un mécanisme permettant de déterminer si la première "position" est incomplète. Mais le premier OrderSend passe par un ordre à cours limité au prix actuel ou légèrement inférieur. Il n'est donc pas considéré comme un "poste". Les deux autres sont des ordres de marché, le plus souvent. Et le fait de les compter comme des "positions" vous permet d'éviter les situations de réouverture de positions. Dans ce cas, cette comptabilité n'a pas d'effets négatifs.

 

En somme, comme je le comprends, il n'y aura pas de solution. Pas même une solution, mais un principe de fonctionnement logiquement correct avec le nombre d'ordres et de positions.

Je parle de la fonction utilisée pour toute stratégie, d'autres disent - pour chaque stratégie - une béquille différente.

 
fxsaber:

Cet exemple s'est avéré être beaucoup plus cool. Le TP, qui a été placé par le courtier lui-même, a été redirigé ! Et presque immédiatement (j'ai attendu 115 ms - apparemment c'était un bug dans MT5) après le réenregistrement, le courtier a placé le TP suivant, qui a été exécuté. Les commentaires des commandes n'apparaissent pas dans la capture d'écran. La couleur verte correspond àORDER_REASON_TP. En conséquence, l'ordre de rejet a même ORDER_POSITION_ID.

Il ne s'agit pas d'un ordre de rejet, mais d'un ordre normalement exécuté qui a été exécuté. Lorsqu'il est exécuté, l'ID de la position est obtenu.

De plus, nous avons deux ordres, dont l'un n'est pas exécuté. Maintenant, la question est : combien de positions (si ces ordres n'étaient pas des ordres stop mais des ordres de position), donc - combien de positions votre approche vous rendrait-elle ? La réponse est : un de plus, ce qui est faux. Pourquoi tu ferais ça alors ?

 
Artyom Trishkin:

Il ne s'agit plus d'un ordre de rejet, mais d'un ordre normalement exécuté. Lorsqu'il est exécuté, c'est le moment où l'ID de la position est reçu.

Vous vous trompez.


Une dernière chose : il y a deux ordres, dont l'un n'a pas été exécuté. Maintenant, la question est : combien de positions (si ces ordres n'étaient pas des ordres stop mais des ordres de position), donc combien de positions votre approche vous rendrait-elle ? La réponse est : un de plus, ce qui est faux. Pourquoi tu ferais ça alors ?

Faisons-le à nouveau. Supposons qu'il y ait deux postes ouverts. Et fixons le futur ordre de marché de ce type. La fonction renvoie 2+1=3. TS considère qu'il y a trois positions et que tout est OK. Dans 16 ms le re-jacket arrive. TS vérifie combien de positions - 2+0=2. Et il en faut trois ! - envoie un autre ordre de marché. Puis encore 2+1=3. Et l'ordre est exécuté, obtenant 3+0=3.

 
Artyom Trishkin:

En général, tel que je le comprends - il n'y aura pas de solution. Pas même une solution, mais un principe de fonctionnement logiquement correct avec le nombre d'ordres et de positions.

Je parle de la fonction utilisée pour toute stratégie, d'autres disent - pour chaque stratégie - une béquille différente.

Je n'ai pas changé d'avis. Cette fonction reste universelle pour 99,9% des EA et des plateformes de trading.

 
fxsaber:

Vous vous trompez.


Revoyons tout ça. Supposons qu'il y ait deux postes ouverts. Et nous mettons ce genre d'ordre de marché futur. La fonction renvoie 2+1=3. TS regarde trois positions et tout est OK. Dans 16 ms le re-jacket arrive. TS vérifie combien de positions - 2+0=2. Et il en faut trois ! - envoie un autre ordre de marché. Puis encore 2+1=3. Et l'ordre est exécuté, obtenant 3+0=3.

#896615 - rejet, et n'a PAS de position d'identification.

Disons-le autrement. Supposons qu'il y ait deux postes ouverts. Nous recevons un signal pour ouvrir une troisième position, nous envoyons une demande de transaction et obtenons cet ordre de marché inversé. S'il y a trois positions, notre EA passera à l'envoi d'autres demandes de transaction en utilisant un symbole différent. La fonction renvoie 2+1=3. TS regarde trois positions et commence à calculer les volumes, prend/arrête trois autres positions - par un autre symbole, envoie des ordres de transaction pour ouvrir par un autre symbole. Après 16 ms, le rebid d'un autre symbole arrive. TS regarde combien de positions - 2(actuelles)+3(2 positions et un marché d'un autre symbole)=5. Et ça devrait être six ! - envoie un autre ordre au marché pour le symbole actuel à un prix complètement différent et calcule le volume et les takeoffs/stops des nouvelles positions pour le troisième symbole. Puis le même désordre se reproduit.

Et puis nous nous grattons la tête - pourquoi est-il devenu fou ?

Ou pensez-vous que vous devez créer des fonctions pour une seule - votre - stratégie et logique de construction TS ? Vous avez tort.

 
fxsaber:

Je n'ai pas changé d'avis. Cette fonction reste universelle pour 99,9% des EA et des plateformes de trading.

Non. Seulement pour une logique comportementale.

Et il y en a des milliers.

 
fxsaber:

Je n'ai pas changé d'avis. Cette fonction reste universelle pour 99,9% des EA et des plateformes de trading.

La fonction doit retourner ce qui lui est demandé. De manière claire et inconditionnelle, et non pour que l'utilisateur décide ultérieurement de ce dont il a besoin.

La logique que je suggère devrait être la suivante

  • Question : Combien de postes y a-t-il ?
  • Réponse : deux

... Ou ça devrait être comme ça :

  • Question : combien de postes y a-t-il ?
  • Réponse : Attendez une minute - ce n'est pas encore clair.
  • Attendre, puis la question : combien de postes y a-t-il ?
  • Réponse : trois

Et vous suggérez :

  • Question : Combien de postes y a-t-il ?
  • La réponse est trois.
  • Ok, c'est le nombre de fois que j'ai attendu, continuez à compter et ouvrez sur un autre symbole ... Au bout d'un moment : Quel tas de conneries... Question : Combien de postes ?
  • Réponse : deux.
  • Question : pourquoi avez-vous dit trois ?
  • Réponse : j'ai pensé que tu pourrais en avoir besoin plus tard.
  • Question : combien de positions pour l'autre symbole
  • Réponse : trois
  • Oui ? Vous êtes sûr ? Et donc tu as gaspillé l'argent sur l'autre symbole avec la dernière réponse...
 
Artyom Trishkin:

#Le numéro 896615 est rejeté et n'a PAS de position d'identification.

Lisez le nombre dans la troisième case rouge de gauche dans la capture d'écran ci-dessus.

Disons-le autrement. Supposons qu'il y ait deux postes ouverts. Nous obtenons un signal pour ouvrir une troisième position, envoyons une demande de transaction et obtenons cet ordre de marché redirigé. Si nous avons trois positions, notre EA passera à l'envoi d'autres demandes de transaction en utilisant un symbole différent. La fonction renvoie 2+1=3. TS regarde trois positions et commence à calculer les volumes, prend/arrête trois autres positions - par un autre symbole, envoie des ordres de transaction pour ouvrir par un autre symbole. Après 16 ms, le rebid d'un autre symbole arrive. TS regarde combien de positions - 2(actuelles)+3(2 positions et un marché d'un autre symbole)=5. Et ça devrait être six ! - envoie un autre ordre au marché pour le symbole actuel à un prix complètement différent et calcule le volume et les takeoffs/stops des nouvelles positions pour le troisième symbole. Puis le même désordre se reproduit.

Et ensuite on se gratte la tête en se demandant pourquoi il est devenu fou.

Si vous n'écrivez pas et n'inventez pas la logique du commerce tordu, vous ne ferez pas qu'égratigner votre propre réputation. Je crois savoir que parmi les TK véreux, qui ont probablement inondé les freelances, cela n'est pas rare. Et parce que l'argent ne sent pas, quelqu'un les prend sur le principe, s'ils demandent de la merde, fais-le et oublie-le. Rien d'aussi proche de ça n'a jamais été écrit dans un cauchemar. Mais je suis sûr que les indépendants connaissent bien mieux que moi les grades des excréments parmi les TK. Donc oui, pour les TCs inadéquats, l'option proposée par @Combinator peut être très utile - faire des pieds à partir du TC, dès qu'un ordre de marché avec zéro ID est trouvé.

Ou pensez-vous que nous devons créer des fonctions pour une seule - la vôtre - stratégie et logique de construction du TS ? Vous avez tort.

Je pense que nous devons réfléchir, au moins. Et ne pas créer un environnement propice à la reproduction des abominables CT. Malheureusement, je ne suis pas en mesure de formuler un critère pour définir un fond parmi les CTs. Pour ne blesser personne, je vais inverser la vision du monde - moi-même au fond, et la TK connue flottera sur les lois de la physique.


La recette, comme on dit, est universelle :

  1. Rencontrer un ordre de marché avec zéro ID - sortir immédiatement.
  2. MT5-OrderSend est réécrit pour toujours retourner un Result.deal non nul - le code source a été publié dans KB.
  3. Après chaque commande, envoyez ou mettez en veille à l'étape 1.
Avec cette approche, n'importe quel CT (à 100% absolu) fonctionnera.
Raison: