Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 776

 

Guten Tag, liebe Forumsnutzer.

Bitte helfen Sie mir, den Ton im Indikator richtig zu organisieren. Die Standardmittel von MT4 funktionieren nicht gut.

So wie ich es verstehe, gibt es zum Zeitpunkt des Starts eines Balkens aus verschiedenen Charts einen Strom von Signalen, die in Windows abgespielt werden. Sie werden nicht in die Warteschlange gestellt, sondern zuletzt gespielt, und der Rest geht verloren. Von den beiden benachbarten PlaySound()-Funktionen wird nur eine abgespielt. Dadurch entsteht ein Chaos in den Nachrichten, und die Organisation der Nachrichten führt zu einer Überlastung des Terminals.

Die Lösung scheint die Verwendung von waveOut API oder Winampa zu sein. Sie ermöglicht es, eine Art Wiedergabeliste im Indikator zu bilden und die Wiedergabeliste an das externe Gerät zu übergeben. Sie muss das Terminal entlasten. Im Allgemeinen liegt das Problem in der Warteschlange.
Gegoogelt. Ich habe keine ausführliche Beschreibung für Dummies gefunden, und ich kann es selbst nicht herausfinden.
Wenn jemand dieses Problem gelöst hat oder eine detaillierte Beschreibung kennt, bitte ich um einen Hinweis. Ich denke, dies wird für viele von Interesse sein.

 

Kann mir bitte jemand helfen!!!!

Können Sie mir sagen, wie man in MT4, so dass auf der rechten Seite des Preisdiagramms, auf Stop-Levels, der Preis ist die gleiche wie auf den Linien fragen und bid???? hervorgehoben

Dateien:
27c3ncf5hf2.jpg  355 kb
 
zctac:

Kann mir bitte jemand helfen!!!!

Können Sie mir sagen, wie man in MT4, so dass auf der rechten Seite des Preisdiagramms, auf Stop-Levels, der Preis ist in der gleichen Weise wie die Ask-und Bid???? Linien hervorgehoben machen

Zeigen Sie Ihre horizontale Linie (OBJ_HLINE) zum Stop-Order-Kurs an.

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

Guten Tag, liebe Forumsnutzer.

Bitte helfen Sie mir, den Ton im Indikator richtig zu organisieren. Die Standardmittel von MT4 funktionieren nicht gut.

So wie ich es verstehe, gibt es zum Zeitpunkt des Starts eines Balkens aus verschiedenen Charts einen Strom von Signalen, die in Windows abgespielt werden. Sie werden nicht in die Warteschlange gestellt, sondern zuletzt gespielt, und der Rest geht verloren. Von den beiden benachbarten PlaySound()-Funktionen wird nur eine abgespielt. Dadurch entsteht ein Chaos in den Nachrichten, und die Organisation der Nachrichten führt zu einer Überlastung des Terminals.

Die Lösung scheint die Verwendung von waveOut API oder Winampa-Tools zu sein. Die Bildung einer Art Wiedergabeliste im Indikator und die Übertragung der Wiedergabe auf das externe Gerät. Dies soll das Endgerät entlasten. Das Problem liegt in der Regel in der Organisation der Warteschlange.
Gegoogelt. Ich habe keine ausführliche Beschreibung für Dummies gefunden, und ich kann es selbst nicht herausfinden.
Wenn jemand dieses Problem gelöst hat oder eine detaillierte Beschreibung kennt, bitte ich um einen Hinweis. Ich denke, dies wird für viele von Interesse sein.

Es ist einfacher, dies im Expert Advisor oder im Schleifenskript zu tun, da Sleep() dort funktioniert, anders als im Indikator, und zwischen dem Abspielen von Melodien kann dieser Slip so eingestellt werden, dass er bis zum Ende der Musik wartet.

Und rufen Sie den Indikator über ein Skript oder einen EA auf.
 
Aleksey Vyazmikin:

Es ist einfacher, dies in einem Hilfsadvisor oder einem Schleifenskript zu tun, da Sleep() dort funktioniert, anders als in einem Indikator, und Sie können diesen Zettel zwischen das Abspielen von Melodien legen, um zu warten, bis die Musik vorbei ist.

Der Indikator kann von einem Skript oder Expert Advisor aufgerufen werden.

Danke, ich werde darüber nachdenken, vielleicht als eine Möglichkeit, auszusteigen.

Nicht die Dauer ist das Problem, sondern die Warteschlange. Die Nachrichten sind kurz, aber viel und gleichzeitig. Auch das belastet das Terminal. Ich würde das gerne dem System überlassen. Dort scheint dieses Problem mit Windows-Standardmitteln gelöst zu werden.

Obwohl... vielleicht.

 
Algus:

Danke, ich werde darüber nachdenken und sehen, ob ich es hinbekomme.

Das Problem ist nicht die Länge, sondern die Warteschlange. Die Nachrichten sind kurz, aber viele davon auf einmal. Auch hier wird das Terminal belastet. Ich würde das gerne dem System überlassen. Diese Aufgabe scheint mit den Standardmitteln von Windows gelöst zu werden.

Obwohl. vielleicht.

Wenn viele gleiche Signale auf einmal kommen, gruppieren Sie sie und spielen Sie sie als ein einziges ab. Oder sie in Arrays nach Signaltyp sammeln und Schritt für Schritt ausführen :)

 

Zu einem bestimmten Datum und einer bestimmten Uhrzeit müssen Sie das Signal überprüfen. Was ist los?

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:

Geben Sie die horizontale Linie (OBJ_HLINE) zum Preis der Stop-Order aus.

Vielen Dank für Ihre Antwort!
 
volyal:

Zu einem bestimmten Datum und einer bestimmten Uhrzeit müssen Sie das Signal überprüfen. Was ist los?

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

Sie haben "harte" Bedingungen, so dass Sie wahrscheinlich nicht den wahren Wert des gesamten Ausdrucks treffen.

Indikatoren und Expert Advisors arbeiten mit dem Tick-Empfang, aber der Tick kann eine Sekunde später als Ihre Bedingung auftreten

Sie sollten versuchen, solche Bedingungen auf >= zu schreiben.

SZY: Wenn ich komplexe logische Bedingungen schreibe, versuche ich in der Regel, die Logik der folgenden Bedingungen nicht zu verlieren, dann kann ich sie auf eine kompaktere Form reduzieren, und es ist einfacher, logische Fehler zu finden, falls sie in der Debugging-Phase auftreten.

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

aber das ist Geschmackssache.

 
Igor Makanu:

Sie haben "harte" Bedingungen, so dass Sie höchstwahrscheinlich nicht den wahren Wert des gesamten Ausdrucks treffen

Indikatoren und Experten arbeiten nach dem Tick-Empfang, aber der Tick kann eine Sekunde später kommen als Ihre Bedingung

Sie sollten versuchen, solche Bedingungen auf >= zu schreiben.

SZY: Wenn ich komplexe logische Bedingungen schreibe, versuche ich in der Regel, die Logik der folgenden Bedingungen nicht zu verlieren, dann kann ich sie auf eine kompaktere Form reduzieren, und es ist einfacher, logische Fehler zu finden, falls sie in der Debugging-Phase auftreten.

aber das ist Geschmackssache.

Ich danke Ihnen. Einfach>= ist nicht möglich, es wird nach dem ersten Datum ein konstantes Signal geben, Sie müssen den Zeitbereich festlegen. Wie stellt man sie ein?