[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 1126
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Der Code ist falsch. Erstens, wenn die Funktion start() vom Typ int ist, sollte sie einen Integer-Wert zurückgeben. Sie haben eine Rücksendung nur unter der Bedingung zurückgegeben. Und wenn die Bedingung nicht erfüllt ist, was sollte die Funktion start() an das Terminal zurückgeben?
Darüber hinaus sind Sie zu kompliziert zu überprüfen - besser, wie folgt zu tun: Wir erstellen einen Zähler der Aufträge, offen und geschlossen heute. Wenn die Anzahl der heute abgeschlossenen Aufträge größer als Null ist, dann handeln Sie nicht. Ansonsten dürfen wir handeln.
int in void geändert... hat nicht geholfen
Um ehrlich zu sein, verstehe ich nicht wirklich, wie man einen Zähler für Aufträge erstellen kann und trotzdem in der Lage ist, die einmalige tägliche Handelsoption zu aktivieren/deaktivieren....
.... denke-denke-denke, ich werde es so versuchen
if(CalculateCurrentOrders(Symbol())==0 && Orders==0)
{
CheckForOpen();
if(WaitForNewDay) {Orders++;}
Rückkehr;
}
Zähler zurücksetzen:
if(WaitForNewDay)CheckForNewDay();
void CheckForNewDay()
{
tm=iTime(Symbol(),PERIOD_D1,0);
if (bt!=tm) {bt=tm; Orders=0;}
}
Wie auch immer, ich bin zu dem zurückgekehrt, wovor ich weggelaufen bin ))))
int in void geändert... hat nicht geholfen
Ehrlich gesagt, verstehe ich nicht, wie man einen Auftragszähler erstellt und trotzdem die Option "Einmaliger Tageshandel" aktivieren/deaktivieren kann....
-------------
Wie auch immer, zurück zu dem, wovor ich weglaufen wollte ))))
Bitte helfen Sie mir mit dem Code. Ich zeichne und verschiebe manuell eine horizontale Linie, und wenn der Preis sie berührt, löst er ein Signal aus.
Der Preis berührt die Linie - es gibt ein Signal. Ich verstehe es. Was ist an dem Code falsch?
Entschuldigung, ich habe die Aufgabe falsch gestellt)). Was Sie brauchen, ist ein Code, der dies tut.
Als erstes müssen Sie verstehen, dass eine Linie ein Objekt ist. Der Programmiercode unterscheidet die Objekte anhand ihrer Namen. Sie müssen den Namen der Linie in den Code schreiben und dann, wenn Sie die Linie in einem Diagramm ablegen, müssen Sie in die Eigenschaften der Linie gehen und den Namen so ändern, wie Sie ihn im Code geschrieben haben. Nur dann versteht der Code, dass Sie die von diesem Objekt erfassten Messwerte verarbeiten müssen.
Als nächstes müssen Sie im Code den Preis abfragen, an dem die Zeile steht. Die Anfrage wird über die Funktion double ObjectGet(string name, int prop_id) gestellt. Anstelle von name müssen Sie den Namen Ihrer Zeile angeben, und anstelle von prop_id geben Sie OBJPROP_PRICE1 an. Auf diese Weise können Sie programmatisch den Preis ermitteln, zu dem diese Zeile gesetzt ist. Im Code müssen Sie dann prüfen, ob der Preis diese Linie berührt. Beispiel: Wenn der Kurs des vorherigen Ticks unter dem Niveau liegt, auf dem die Linie festgelegt ist, und er beim aktuellen Tick diesem Niveau entspricht oder darüber liegt, dann ist diese Berührung erfolgt.
Alexander, wenn du mit dem Code nicht weiterkommst, können sie dir hier helfen. Wenn Sie möchten, dass der Code für Sie implementiert wird, wenden Sie sich bitte an https://www.mql5.com/ru/job.
Ich habe es getan, aber das Signal funktioniert nicht, wenn Close[0]==n. Wie kann man das beheben?
Nun, dem Code nach zu urteilen, haben Sie einen Indikator erstellt. Um also zu überprüfen, ob dieser Teil des Codes funktioniert, müssen Sie warten, bis der nächste Tick die Linie berührt. Es ist besser, ein Skript zu erstellen, um diesen Teil des Codes zu testen, da es Ihnen sofortige Ergebnisse liefern wird.
Als Erstes müssen Sie sicherstellen, dass der Code Ihre Zeile tatsächlich sieht. Wie macht man das? Sie müssen nach dem Preis fragen und ihn als Warnhinweis anzeigen. Tun Sie es.
Nachdem das Skript nun neu kompiliert wurde, öffnen wir ein beliebiges Diagramm und zeichnen eine horizontale Linie darauf. Dann geben wir seine Eigenschaften ein, und da wir der Zeile im Code den Namen "1" gegeben haben, legen wir diesen Namen auch in den Zeileneigenschaften fest:
Klicken Sie auf OK. Wir legen das Skript auf dem Chart ab und vergewissern uns, dass der Alarm den richtigen Preis zurückgegeben hat. Wir verschieben die Linie im Diagramm an eine andere Stelle und werfen das Skript wieder auf das Diagramm zurück, um sicherzustellen, dass der Code die Linie auch dann noch erkennt, wenn wir ihre Position manuell ändern.
Dann machen wir in der gleichen Weise weiter.
Der Indikator wird mit dem Prüfgerät bei eingeschalteter Visualisierung getestet. Ich habe den Code etwas korrigiert, denn damit ein Alarm ausgelöst wird, sollten die Werte normalisiert werden. Aber wenn Sie die Linie auf der aktuellen Bar, sagen wir eine Stunde zu bewegen, dann wird der Alarm nur 1 Mal mit anschließender Bewegung der Linie auf der aktuellen Bar Alarm aus irgendeinem Grund ausgelöst wird es nicht funktionieren. Ich muss auf eine andere Bar warten.