Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 776

 

Bonjour, utilisateurs du forum.

S'il vous plaît, aidez-moi à organiser correctement le son dans l'indicateur. Les moyens standard de MT4 ne fonctionnent pas bien.

Si j'ai bien compris, au moment du démarrage des barres des différents graphiques, il y a un flux de signaux à jouer dans Windows. Ils ne sont pas mis en file d'attente mais ils sont joués en dernier et le reste est perdu. Des deux fonctions PlaySound() adjacentes, une seule est jouée. Cela crée un désordre dans les messages, et l'organisation des messages provoque le chargement du terminal.

La solution semble être d'utiliser l'API waveOut ou Winampa. Il permet de former une sorte de liste de lecture dans l'indicateur et de transmettre la lecture au dispositif externe. Il doit soulager la charge sur le terminal. En général, le problème réside dans l'organisation de la file d'attente.
Googlé. Je n'ai pas trouvé de description détaillée pour les nuls, et je n'arrive pas à le comprendre moi-même.
Si quelqu'un a résolu ce problème ou en connaît une description détaillée, veuillez nous en informer. Je pense que cela intéressera beaucoup de monde.

 

Quelqu'un peut-il m'aider ? ! !!!

Pouvez-vous me dire comment faire dans MT4 pour que sur le côté droit du graphique des prix, aux niveaux de stop, le prix soit mis en évidence de la même manière que sur les lignes ask et bid ????.

Dossiers :
27c3ncf5hf2.jpg  355 kb
 
zctac:

Quelqu'un peut-il m'aider ? ! !!!

Pouvez-vous me dire comment faire dans MT4 pour que sur le côté droit du graphique des prix, aux niveaux de stop, le prix soit mis en évidence de la même manière que les lignes ask et bid ????.

Affichez votre ligne horizontale (OBJ_HLINE) au prix de l'ordre stop.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
//| Создает горизонтальную линию                                     |                 price=0,                         width=1,            //| Перемещение горизонтальной линии                                 | //| Удаляет горизонтальную линию                                     |...
 
Algus:

Bonjour, utilisateurs du forum.

S'il vous plaît aidez-moi à organiser correctement le son dans l'indicateur. Les moyens standard de MT4 ne fonctionnent pas bien.

Si j'ai bien compris, au moment du démarrage des barres des différents graphiques, il y a un flux de signaux à jouer dans Windows. Ils ne sont pas mis en file d'attente mais ils sont joués en dernier et le reste est perdu. Des deux fonctions PlaySound() adjacentes, une seule est jouée. Cela crée un désordre dans les messages, et l'organisation des messages provoque le chargement du terminal.

La solution semble être d'utiliser l'API waveOut ou les outils Winampa. La formation de quelque chose comme une liste de lecture dans l'indicateur et la transmission de la lecture à l'appareil externe. Cela devrait soulager la charge sur le terminal. En général, le problème est dans l'organisation de la file d'attente.
Googlé. Je n'ai pas trouvé de description détaillée pour les nuls, et je n'arrive pas à le comprendre moi-même.
Si quelqu'un a résolu ce problème ou en connaît une description détaillée, veuillez nous en informer. Je pense que cela intéressera beaucoup de monde.

C'est plus facile à faire dans un Expert Advisor ou un script en boucle, parce que Sleep() y fonctionne, contrairement à l'indicateur et entre les mélodies, ce glissement peut être réglé pour attendre la fin de la musique.

Et appelez l'indicateur à partir d'un script ou d'un EA.
 
Aleksey Vyazmikin:

Il est plus facile de le faire dans un EA auxiliaire ou un script en boucle, Sleep() y fonctionne, contrairement à un indicateur, et vous pouvez mettre ce glissement entre les morceaux de musique pour attendre que la musique soit terminée.

L'indicateur peut être appelé depuis un script ou un Expert Advisor.

Merci, je vais y penser, peut-être comme une option pour sortir.

Ce n'est pas la durée qui est le problème, c'est la file d'attente. Les messages sont courts, mais beaucoup et en même temps. Encore une fois, ça met la pression sur le terminal. J'aimerais donner ça au système. Là, ce problème semble être résolu par les moyens standards de Windows.

Bien que... peut-être.

 
Algus:

Merci, je vais y réfléchir et voir si je peux trouver une solution.

Le problème n'est pas la longueur, c'est la file d'attente. Les messages sont courts, mais ils sont nombreux en même temps. Encore une fois, ça met une charge sur le terminal. J'aimerais donner ça au système. Cette tâche semble être résolue par les moyens standards de Windows.

Bien que. peut-être.

Si plusieurs signaux identiques arrivent en même temps, regroupez-les et jouez-les comme un seul. Ou les collecter dans des tableaux par type de signal et les exécuter étape par étape :)

 

À une certaine date et heure, vous devez vérifier le signal. Qu'est-ce qui ne va pas ?

input datetime Input1=D'23.02.2019 08:00:27';
input datetime Input2=D'08.03.2019 09:30:20';
input datetime Input3=D'01.04.2019 12:30:27';
______________________________________________

{
//---
 A=1;B=2;
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         if(A>B&&(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
           {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Artyom Trishkin:

Sortir sa ligne horizontale (OBJ_HLINE) au prix de l'ordre stop.

Merci pour votre réponse !
 
volyal:

À une certaine date et heure, vous devez vérifier le signal. Qu'est-ce qui ne va pas ?

if( (A>B) && (TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3) )

Vous avez des conditions "dures", donc vous ne touchez probablement pas la vraie valeur de l'expression entière.

Les indicateurs et les conseillers experts fonctionnent sur la réception du tick, mais le tick peut se produire une seconde plus tard que votre condition.

vous devez essayer d'écrire de telles conditions sur >=

SZY : Eh bien, en général, lorsque j'écris des conditions logiques complexes, j'essaie de ne pas perdre la logique qui suit les conditions, puis je peux les réduire à une forme plus compacte, il est plus facile de trouver des erreurs logiques au cas où elles se produisent à l'étape du débogage.

if(A>B)
{
   if(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
        {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
        }
}

mais c'est une question de goût.

 
Igor Makanu:

Vous avez des conditions "dures", donc vous n'atteignez probablement pas la vraie valeur de l'expression entière.

Les indicateurs et les experts travaillent sur la réception du tick, mais le tick peut arriver une seconde plus tard que votre condition.

vous devez essayer d'écrire de telles conditions sur >=

SZY : Eh bien, en général, lorsque j'écris des conditions logiques complexes, j'essaie de ne pas perdre la logique qui suit les conditions, puis je peux les réduire à une forme plus compacte, il est plus facile de trouver des erreurs logiques au cas où elles se produisent à l'étape du débogage.

mais c'est une question de goût.

Merci. Simplement>= n'est pas possible, il y aura un signal constant après la première date, vous devez définir la plage de temps. Comment le régler ?
Raison: