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

 
Alexey Viktorov:

Ich habe es gerade überprüft, es kann geändert werden. Diese Änderung gilt jedoch für alle Ausschreibungen des Terminals. Und wenn Sie PlaySound() für jede Bedingung verwenden wollen, sollten Sie es verwenden, aber nicht in der Funktion eines anderen, und selbst verstehen, wie es funktioniert.

PlaySound() funktioniert unabhängig von Alarmen.

Ich habe es ausprobiert, es spielt zwei Töne, sowohl Alert als auch PlaySound(),

 
MakarFX:

Danke, es hat funktioniert.

Aber das Problem der Trennung von Ereignissen wird dadurch nicht gelöst

ein weiteres Mal

in den Terminaleinstellungen den Warnton deaktivieren

in MQL-Code einen Sound mit PlaySound() ausgeben und dann Alert() aufrufen - so erhalten Sie verschiedene Sounds für verschiedene Alerts, und Sie können nicht einfach einen Sound einem Alert zuweisen und ihn dann programmatisch von MQL-Code aus ändern

 
Igor Makanu:

wieder

in den Terminaleinstellungen den Warnton deaktivieren

im MQL-Code den Ton mit PlaySound() ausgeben und dann Alert() aufrufen - so erhalten Sie verschiedene Töne für verschiedene Alerts, und es ist nicht möglich, einen Ton einem Alert zuzuweisen und ihn dann programmatisch vom MQL-Code aus zu ändern

Nur umgekehrt, erst Alert() dann PlaySound(). Andernfalls hat PlaySound() nicht einmal Zeit, mit dem Abspielen zu beginnen, sondern wird von Alert() außer Kraft gesetzt.

 
Igor Makanu:

wieder

in den Terminaleinstellungen die Alarme stummschalten


Sie meinen einen leeren Ton, denn wenn Sie den Alarm in den Einstellungen ausschalten, funktioniert er überhaupt nicht.

 
Alexey Viktorov:

Nur umgekehrt, erst Alert() dann PlaySound(). Andernfalls hat PlaySound() nicht einmal Zeit, mit dem Abspielen zu beginnen, da Alert() es beendet.

vielleicht, habe es nicht überprüft.

Es gibt eine lustige Sache mit PlaySound(), ich glaube, ich muss Sleep(150) zwischen ihm und Alert hinzufügen, aber das ist keine große Sache

 
Igor Makanu:

vielleicht, habe es nicht überprüft

es gibt ein paar Tricks mit PlaySound(), ich glaube, wir müssen Sleep(150) zwischen ihm und dem Alarm hinzufügen, aber das ist nichts

Ich danke Ihnen.
 
Igor Makanu:

vielleicht, habe es nicht überprüft

PlaySound() ist ein bisschen knifflig, ich glaube, ich muss Sleep(150) zwischen der Funktion und dem Alarm einfügen, aber das ist keine große Sache

PlaySound() mit leerem Namen stoppt die Wiedergabe des aktuell gespielten Sounds.

 
MakarFX:

Sie meinen den leeren Ton, denn wenn Sie den Alarm in den Einstellungen ausschalten, funktioniert er überhaupt nicht.

Es hat lange gedauert, bis ich den Code gelesen habe. Ich bin zwar kein Programmierer, aber von den Funktionen, die es dort gibt, ist die folgende am Anfang zu beachten:

extern bool UseSound = False; // Ton verwenden

Wahrscheinlich müssen Sie den Wert auf True ändern und Ihren Sound bereits mit dieser Funktion verbinden. Sie sollte nicht zusammen mit der Ausschreibung, sondern getrennt von ihr angebracht werden.

Am Ende des Codes (den Sie vorhin geschrieben haben), steht folgendes

void Signal(string st) {

if (UseAlert) Alert(st);

{ if (UseComment) Comment(st);

if (UseSendMail) SendMail(WindowExpertName(), st);

wenn (UseSendPush) SendNotification(st);

if (UsePrint) Print(st);

if (UseSound) PlaySound(sotFileName);

}


Soweit ich weiß, sind dies Variablen, die von der Funktion Signal ausgeführt werden. Daher hat diese Signalfunktion mehrere Optionen für Ereignisse in ihrem Code. Und für jedes Ereignis muss ich den erforderlichen Wert (Ton) hinzufügen.


Die Programmierer mögen mich korrigieren, wenn ich die Frage völlig verwechselt habe :)

 
Vitaliy Maznev:

Es hat lange gedauert, bis ich den Code gelesen habe. Ich bin zwar kein Programmierer, aber von den Funktionen, die es dort gibt, sollten Sie die folgenden am Anfang beachten:


Die Programmierer mögen mich korrigieren, wenn ich die Frage völlig verwechselt habe :)

Die wichtigste Frage war die nach der Verwendung unterschiedlicher Sounds je nach Ereignis. UseSound gilt nur für die PlaySound-Funktion und hat keinen Einfluss auf den Betrieb von Alert

 
MakarFX:

Der Punkt der Frage war, dass der Alarm je nach Ereignis mit unterschiedlichen Tönen ausgelöst werden sollte. UseSound bezieht sich nur auf die Funktion PlaySound und hat keinen Einfluss auf den Betrieb von Alert

Die Funktionen Alert und Playsound sind in diesem Fall also austauschbar, richtig? Oder habe ich es falsch verstanden? Wenn Sie innerhalb der Alert-Funktion keine Variablen schreiben können und an einem benutzerdefinierten Sound interessiert sind, dann ersetzen Sie Alert durch Playsound ((UseAlert) mit(UseSound)) in jedem erforderlichen Ereignis. Und Sie werden genau das bekommen, was Sie brauchen. Zumindest logisch.