Emulation des ticks d'un EA/indicateur - page 4

 
Zhunko:

Un seul cas par exemple ?

Il suffit de prendre mon ChartBuilder dans le codebase. Il peut utiliser un grand nombre d'instruments de trading. Et si, pour l'instrument sur lequel il est accroché, aucun nouveau ticks n'est reçu pendant un certain temps, la valeur indiquée est déjà non pertinente (périmée).

En ce qui concerne la combinaison Conseiller expert+indicateur, si vous voulez transférer le code vers le Conseiller expert pour réduire la charge sur le thread principal, il semble plus raisonnable de porter le code vers une DLL et de l'importer dans l'indicateur. Si vous pensez à porter le code, cela devrait se faire dans un environnement normal.

 
Meat: J'ai trouvé la cause du problème : le tableau doit être déclaré au niveau global, et non au niveau local.

pas de tics.... ((((

log :

18:33:34 test EURUSD,H1 : chargé avec succès
18:33:36 test EURUSD,H1 : initialisé

bouton droit de la souris "rafraîchir le graphique le commentaire était tick : 1, est devenu tick : 2

aucune erreur dans le journal

SZS : coupé l'interconnexion en cochant "activer le serveur proxy", redémarré le terminal - pas de connexion, mais quand j'ai coché la case. SZY : fermer l'interphone en cochant "activer le serveur proxy" , redémarrer le terminal - pas de connexion, mais lorsque vous avez enlevé la case à cocher sur le serveur proxy, comment "démarré" ..... ;)

 
Comme idée - un Exe séparé, trouve la fenêtre MT - fait défiler les fenêtres à l'intérieur de celle-ci.
et commence à les envoyer en émulation à un intervalle défini.
 
jartmailru:
Comme idée - un Exe séparé, trouve la fenêtre MT - fait défiler à l'intérieur les fenêtres
et commence à émuler des ticks avec une périodicité donnée.
J'en ai un exactement comme ça. Seulement dans DLL. Mais Alexey veut le faire sans DLLs et EXEs tiers.
Viande:

1. Prenez mon ChartBuilder dans la base de code, par exemple. Il peut utiliser un grand nombre d'instruments de trading. Et si, pour l'instrument sur lequel il est accroché, il n'y a pas de nouveaux ticks pendant un certain temps, alors la valeur affichée n'est déjà plus pertinente (périmée).

2. Quant à l'indicateur+conseiller expert, si vous voulez transférer le code vers le conseiller expert pour réduire la charge sur le thread principal, il serait plus raisonnable de déplacer le code vers une DLL et de l'importer dans l'indicateur. Si vous voulez prendre la peine de porter le code, vous feriez mieux de le faire au moins dans un bon environnement.

1. Je vais le répéter une fois de plus. Si vous voulez réagir à l'outil en dehors de la fenêtre actuelle, vous devez utiliser le temps du serveur. L'interface WinAPI n'est pas nécessaire pour cela. MQL4 possède une telle fonction.

2. La reliure utilisée n'a pas d'importance. C'est la même solution. Un conseiller expert en boucle répond à la modification de l'heure du serveur. C'est suffisant pour résoudre tous les problèmes que vous essayez de résoudre.

Il suffit d'émuler les ticks pour lancer le conseiller expert en fin de semaine. Il n'est pas nécessaire pour autre chose. J'ai montré comment mettre à jour l'indicateur. Juste une ligne.

=====================

La dernière version de l'indicateur ne fonctionne pas sur Windows 7.


 
IgorM:

pas de tics.... ((((

...............

SZS : coupez l'interconnexion en cochant la case "autoriser le serveur proxy". Mais lorsque j'ai décoché la case du proxy, il a juste "cliqué" ...... ;)

Igor, cette façon de se déconnecter d'Internet n'est pas bonne. Il y a beaucoup de choses qui ne fonctionnent pas dans ce mode. Il n'est pas nécessaire de désactiver l'accès à l'Internet.

Par exemple, ce code pour Expert Advisor :

#include <WinUser32.mqh


void init()
 {
  int hwndChart = WindowHandle(Symbol(), 0);
  int nNewMessageWindow = RegisterWindowMessageA("MetaTrader4_Internal_Message");
  for (int i = 0; i < 200; i++) PostMessageA(hwndChart, nNewMessageWindow, 2, 1);
 }

void start()
 {
  int nCounter = 0;
  while (!IsStopped())
   {
    nCounter++;
    Comment(nCounter);
    Sleep(500);
   }
 }

fonctionne le week-end et lorsqu'il n'y a pas de tics, mais il ne fonctionne pas lorsqu'il est déconnecté d'Internet. Il y a là une obscure particularité.

Peut-être l'ont-ils optimisé dans les dernières versions. Ça marchait avant.

Il vaut mieux choisir un outil qui est rarement mis à jour.

 
Zhunko:
J'en ai fait faire un. Seulement dans DLL. Mais Alexey le veut sans DLL et EXE tiers.

1. Encore une fois. Pour réagir à un outil qui ne se trouve pas dans la fenêtre actuelle, vous devez utiliser le temps serveur. L'interface WinAPI n'est pas nécessaire pour cela. MQL4 possède une telle fonction.

2. La reliure n'a pas d'importance. C'est la même solution. Un conseiller expert en boucle répond à la modification de l'heure du serveur. C'est suffisant pour résoudre tous les problèmes que vous essayez de résoudre.

Il suffit d'émuler les ticks pour lancer le conseiller expert en fin de semaine. Il n'est pas nécessaire pour autre chose. J'ai montré comment mettre à jour l'indicateur. Juste une ligne.

=====================

La dernière version de l'indicateur ne fonctionne pas sur Windows 7.


Je ne comprends pas ce que vous essayez de prouver, que plusieurs fichiers en cours d'exécution sont plus cool qu'un seul ? Bien sûr, je peux exécuter un conseiller expert en boucle, mais je ne vois pas l'intérêt de faire ce gâchis de deux fichiers de travail, alors que je peux faire la même chose dans l'indicateur lui-même ou dans une dll connectée. Bien sûr, je comprends que vous préférez avoir plusieurs programmes différents en cours d'exécution, et que chaque programme exécute sa fonction spécialisée : l'un nettoie les journaux, un autre envoie des tics, etc. Mais votre approche n'est pas la seule correcte.

L'émulation des ticks n'est nécessaire que pour lancer le conseiller expert en fin de semaine.

Je répète, vous avez tort. Le besoin de tiques ne dépend pas du jour de la semaine. J'ai déjà expliqué pourquoi. Si vous ne tradez pas vous-même, mais croyez-moi, je trade des futures depuis quelques années, il est souvent nécessaire d'y mettre à jour les ticks.

 

Il y a une hypothèse selon laquelle le code ne fonctionne pas là où le 64 bits est installé. Je n'en ai que 32, donc je ne peux pas le vérifier. Essayez d'insérer quatre octets nuls après PostMsgAddr à cet endroit (sans oublier d'augmenter la taille du tableau). Peut-être que ça va marcher... Bien que je suppose que vous devez rendre les deux autres paramètres 64-bit aussi... ou pas ?... De toute façon, je n'ai pas encore travaillé dans un environnement 64 bits, donc je ne sais pas.

 
Meat:


1. Je ne comprends pas, qu'essayez-vous de me prouver ? Que plusieurs dossiers en cours sont plus frais qu'un seul ? Bien sûr, je peux lancer un Expert Advisor en boucle, mais il n'y a aucun sens à créer un tel désordre composé de deux fichiers de travail, alors que je peux faire les mêmes choses dans l'indicateur lui-même ou dans une dll liée. Bien sûr, je comprends que vous préférez avoir plusieurs programmes différents en cours d'exécution, et que chacun d'entre eux remplit sa fonction spécialisée : l'un nettoie les journaux, l'autre envoie des tics, etc. Mais votre approche n'est pas la seule correcte.

2. Encore une fois, vous avez tort. Le besoin de tiques ne dépend pas du jour de la semaine. J'ai déjà expliqué pourquoi. A moins que vous ne soyez vous-même un trader, mais croyez-moi, je négocie des futures depuis quelques années, il est souvent nécessaire d'y mettre à jour les ticks.

1. Maintenant, je ne comprends pas... Où ai-je dit ce qui est plus cool ? J'ai déjà répété à de nombreuses reprises que l'émulation de tick n'est pas nécessaire pour le trading. Il n'est nécessaire que pour le débogage du week-end lorsqu'il n'y a pas de ticks.

2. Comment trader à partir d'un indicateur ? Le MQL4 ne le fournit pas. Vous avez besoin d'un conseiller expert ou d'un script. Le conseiller expert boucle et compare l'heure du serveur avec l'heure précédente. S'il y a un décalage, vous réagissez de la manière prescrite par le TS. C'est tout ! Il n'y a pas besoin d'émulation. Qu'est-ce que vous prouvez ? Je l'ai déjà écrit en plusieurs versions dans différents posts. Vous devez exécuter un tel conseiller expert le week-end pour le déboguer. J'ai écrit le code ci-dessus.

 
Zhunko:

1. Maintenant, je ne comprends pas... Où ai-je dit ce qui est plus cool ? J'ai déjà répété à de nombreuses reprises que l'émulation de tick n'est pas nécessaire pour le trading. Il n'est nécessaire que pour le débogage du week-end, lorsqu'il n'y a pas de ticks.

2. Comment trader à partir d'un indicateur ? Le MQL4 ne le fournit pas. Vous avez besoin d'un conseiller expert ou d'un script. Le conseiller expert boucle et compare l'heure du serveur avec l'heure précédente. S'il y a un décalage, vous réagissez de la manière prescrite par le TS. C'est tout ! Il n'y a pas besoin d'émulation. Qu'est-ce que vous prouvez ? Je l'ai déjà écrit en plusieurs versions dans différents posts. Vous devez exécuter un tel conseiller expert le week-end pour le déboguer. J'ai écrit le code ci-dessus.

Mais ceux qui font du commerce le savent probablement mieux que quiconque, vous ne pensez pas ?

Je ne veux pas négocier à partir d'un indicateur, et je n'ai pas besoin d'un élément supplémentaire sous la forme d'un conseiller expert en boucle lorsque l'indicateur à tic-tac est suffisant.

 
Meat:

Ce que je veux dire, c'est que si vous n'avez pas d'activité commerciale, vous n'avez pas besoin de cette émulation, mais ceux qui ont une activité commerciale sont probablement mieux informés, non ?

Je ne veux pas négocier à partir d'un indicateur, et je n'ai pas besoin d'un élément supplémentaire sous la forme d'un conseiller expert en boucle si l'indicateur à tic-tac est suffisant.

Comment trader en utilisant un indicateur à tic-tac ? Le MQL4 ne prévoit pas cela.

Vraiment ! Pourquoi ai-je besoin d'un ensemble supplémentaire de l'indicateur à tic-tac qui ne peut pas commercer, si je peux tout faire dans un conseiller expert en boucle ? Il n'y aura pas besoin de WinAPI, l'interface MT4 ne sera pas ralentie, le conseiller expert fonctionnera 3 fois plus vite. Pourquoi compliquer les choses à ce point ?

Raison: