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

 
STARIJ:
Lesen Sie Ihren Kommentar: Es stellt sich heraus, dass der Handel gestoppt wird, wenn einer der letzten drei Aufträge mit einem Gewinn abschließt!

Danke für den Hinweis

OPEN THE NEW ORDER habe ich nur als Beispiel genannt. Ich bin noch nicht im Handel.

Ich verstehe nur nicht, wie man diese Bedingung kodiert.

Wenn 3 - 4 - 5 ..... letzte Aufträge bei STOP geschlossen wurden

ICH HABE KEINE AHNUNG, WAS ICH TUN SOLL.

 
Victor Nikolaev:


Die Unterschiede sind minimal. Eine der Variablen ist boolesch.

Die Ausgabe lautet true oder false

Ich kann nicht herausfinden, wie man Variablen hinzufügt - z. B. sagen wir, ich habe 4 boolesche Variablen und muss sie durchgehen?

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      bool b= (bool) MathMod(tmp,3);
      bool c= (bool) MathMod(tmp,4);
      bool d= (bool) MathMod(tmp,5);

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

Ich verstehe das Wesen des Falles - sollte ein Rest kleiner oder größer als Null nach der Division sein - aber ich kann nicht herausfinden, wie man dies zu erreichen :(

 
ANDREY:

Danke für den Hinweis

OPEN THE NEW ORDER habe ich nur als Beispiel genannt. Ich bin noch nicht im Handel.

Ich verstehe nur nicht, wie man diese Bedingung kodiert.

Wenn 3 - 4 - 5 ..... letzte Aufträge bei STOP geschlossen wurden

ICH MUSS EINFACH ETWAS UNTERNEHMEN.

Bevor wir etwas unternehmen, sollten wir uns zunächst 3 bis 4 bis 5 Positionen ansehen, die hintereinander geschlossen wurden. Wenn alles gestoppt ist, sollten Sie etwas unternehmen. Elementar, Watson...
 
ANDREY: Es ist notwendig, dass nicht nur der letzte, sondern auch der vorletzte und der vorvorletzte Auftrag auf Anschlag geschlossen wurden.

und erst dann einen weiteren Auftrag eröffnen

Das Skript ist beigefügt - ich habe es überprüft, es funktioniert, das Ergebnis ist beigefügt

//+-------------------------------------------------------+
//| Подсчет убыточных ордеров                 PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict
130
void OnStart()
{
  int Счет=0, Номер=OrdersHistoryTotal()-1;

  for( ; Номер>=0; Номер--)
  {
    if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
    Alert(Номер, "  Тикет = ", OrderTicket(),"  T =",OrderOpenTime(), "  Профит = ", OrderProfit());
    if(OrderProfit()>=0) break;
    Счет++;
    if(Счет==3)
    {
      Alert("Вот тут и открываем новый ордер");
      return;
    }
  }
  Alert("Подряд идущих убыточных ордеров слишком мало");
}

Das ist alles Geschichte


Und das ist Rechtsklick auf Verlauf und Auswahl des Zeitraums bis zum 3. Mai

 
STARIJ:

Im Anhang finden Sie das Skript - getestet, es funktioniert, das Ergebnis ist beigefügt

Das ist die ganze Geschichte.


Und hier klicken Sie mit der rechten Maustaste auf den Verlauf und wählen den Zeitraum bis zum 3. Mai aus

Es ist eine Haltestelle. Und sie ist nicht zuverlässig. Sie müssen dies unabhängig von der Sortierung tun.
 

Es tut mir leid, dass ich Sie gestört habe, ich werde meine Frage noch einmal beantworten.

Ich denke, es ist an der Zeit, einen Blick auf die Tabelle zu werfen, ich bin kein Kenner von mql4.

Vielleicht habe ich eine Frage in der falschen Branche gestellt.

 
STARIJ:

Im Anhang finden Sie das Skript - getestet, es funktioniert, das Ergebnis ist beigefügt

Das ist die ganze Geschichte.


Und hier klicken Sie mit der rechten Maustaste auf den Verlauf und wählen den Zeitraum bis zum 3. Mai aus

Herzlichen Dank für Ihre Hilfe.
 
Artyom Trishkin Es ist also eine Haltestelle. Und sie ist nicht zuverlässig. Dies sollte unabhängig von der Sortierung geschehen.

Artem! In der unteren rechten Ecke des Terminals befindet sich die Anzeige für den Datenaustausch mit dem Server - empfangene und gesendete Kilobytes. Der Indikator zeigte 2318 an. Klicken Sie mit der rechten Maustaste auf den Verlauf und wählen Sie Heute (und heute ist Sonntag). Die Geschichte wurde geleert. Das Skript zeigt an, dass keine Aufträge in der Historie vorhanden sind. Ich habe mit der rechten Maustaste auf die Historie geklickt und "Alle Historien" ausgewählt. Der Indikator wurde mit 518 Kilobyte zum Leben erweckt. Wenn Sie also den Filter auf einen GROSSEN Zeitraum einstellen, werden die Aufträge vom Server heruntergeladen. Wenn Sie einen kleineren Zeitraum einstellen, werden sie gelöscht. Stellen Sie daher besser Letzte Woche, Letzte 3 Tage oder Heute ein, um Ihre Arbeit zu beschleunigen (weniger zu bearbeitende Aufträge). Dies kann mit Hilfe eines Skripts mit Alert(OrdersHistoryTotal()) leicht überprüft werden;

Über das Sortieren. Wenn Sie auf die Spaltenüberschriften in der Historie klicken, können Sie die Historie visuell nach jeder Spalte auf- oder absteigend sortieren. Die Aufträge werden jedoch immer mit der Funktion OrderSelect(Number, SELECT_BY_POS, MODE_HISTORY) ausgewählt, beginnend mit dem Beginn des SELECTED-Intervalls der Historie. Und in der Historie sind die Bestellungen nach dem Zeitpunkt geordnet, zu dem sie an den Server gesendet wurden, was am natürlichsten ist. Wenn die Zahl = 0 ist, dann ist dies die älteste Bestellung des AUSGEWÄHLTEN Intervalls der Geschichte. Wenn OrdersHistoryTotal()-1, ist es die letzte Bestellung des gewählten Intervalls der Geschichte. Ich habe das schon oft überprüft. Und es ist unwahrscheinlich, dass sie jemals geändert wird.

 
STARIJ:

In der unteren rechten Ecke des Terminals befindet sich ein Indikator für den Austausch mit dem Server - die empfangenen und gesendeten Kilobytes. Auf dem Indikator stand 2318. Klicken Sie mit der rechten Maustaste auf den Verlauf und wählen Sie Heute (und heute ist Sonntag). Die Geschichte ist leer. Das Skript zeigt an, dass keine Aufträge in der Historie vorhanden sind. Ich habe mit der rechten Maustaste auf die Historie geklickt und "Alle Historien" ausgewählt. Der Indikator wurde mit 518 Kilobytes zum Leben erweckt. Wenn Sie also den Filter auf einen GROSSEN Zeitraum einstellen, werden die Aufträge vom Server heruntergeladen. Wenn Sie einen kleineren Zeitraum einstellen, werden sie gelöscht. Stellen Sie daher besser Letzte Woche, Letzte 3 Tage oder Heute ein, um Ihre Arbeit zu beschleunigen (weniger zu bearbeitende Aufträge). Dies kann mit Hilfe des Skripts Alert(OrdersHistoryTotal()) leicht überprüft werden;

Über das Sortieren. Wenn Sie auf die Spaltenüberschriften in der Historie klicken, können Sie die Historie visuell nach jeder Spalte auf- oder absteigend sortieren. Die Aufträge werden jedoch immer mit der Funktion OrderSelect(Number, SELECT_BY_POS, MODE_HISTORY) ausgewählt, beginnend mit dem Beginn des SELECTED-Intervalls der Historie. Und in der Historie sind die Bestellungen nach dem Zeitpunkt geordnet, an dem sie an den Server gesendet wurden, was am natürlichsten ist. Wenn die Zahl = 0 ist, dann ist dies die älteste Bestellung des AUSGEWÄHLTEN Intervalls der Geschichte. Wenn OrdersHistoryTotal()-1, ist es die letzte Bestellung des gewählten Intervalls der Geschichte. Ich habe das schon oft überprüft. Und es ist unwahrscheinlich, dass sich dies jemals ändern wird.

Sie sind so neu hier, dass Sie nicht alles wissen, wie es war. Seit dreihundert Jahren gilt die Faustregel, dass eine zeitbasierte Suche die einzige zuverlässige Methode ist, um die letzten/ersten oder aufeinanderfolgenden Positionen zu ermitteln. Sie arbeiten mit Geld. Okay, wenn auch nur mit Ihrem eigenen, aber auch mit dem von jemand anderem. Auch indirekt mit Ihrem Programm.

Und was du mir erzählst, ist weder ein Geheimnis noch eine Offenbarung - jeder weiß es seit Jahren ;)

Und was ich sagen wollte - du hast es immer noch nicht verstanden...

 
Artyom Trishkin:

Sie sind so neu hier, dass Sie nicht alles wissen, wie es war. Seit dreihundert Jahren gilt die Faustregel, dass eine zeitbasierte Suche die einzige zuverlässige Methode ist, um die letzten/ersten oder aufeinanderfolgenden Positionen zu ermitteln. Sie arbeiten mit Geld. Okay, wenn auch nur mit Ihrem eigenen, aber auch mit dem von jemand anderem. Auch indirekt mit Ihrem Programm.

Und was du mir erzählst, ist weder ein Geheimnis noch eine Offenbarung - jeder weiß es seit Jahren ;)

Und wovon ich gesprochen habe - du hast es immer noch nicht verstanden...

Artem, entweder ist das unauffälliges Trolling oder du weißt nicht, wovon du schreibst!!!

In Ihrem letzten Beitrag sprachen Sie von Sortierung. Ich habe Ihnen erklärt, dass es keine Abhängigkeit von der Sortierung gibt.

Ich habe eine der Diskussionen über die Auswahl von Aufträgen nach Zeit gesehen und mich daran beteiligt. Das Ergebnis war, dass die Bestellungen nun in der Bestelldatenbank nach dem Zeitpunkt sortiert sind, zu dem sie an den Server gesendet werden. Theoretisch besteht jedoch die Befürchtung, dass die Entwickler dies ändern könnten. Das war das Ende dieser Diskussion. Als Datenbankspezialist kann ich Ihnen versichern, dass diese Befürchtung unbegründet ist, ein Wechsel kommt nicht in Frage. Sie können das Problem an die Entwickler weiterleiten. Wenn ich etwas schreibe, weiß ich, was ich schreibe. Es ist der 50. Jahrestag der Programmierung. Wenn Sie in meinen Beiträgen eine Unordnung aus Ihrer Sicht feststellen, schreiben Sie mir persönlich. Ich werde es Ihnen erklären, und Ihre Zweifel werden verschwinden. Aber hier ist Gezänk wohl kaum angebracht. Ich habe dem Mann ein Drehbuch geschrieben - er hat sich bedankt. Ist das nicht gut?

Wegen neulich. Ich habe gerade meinen Benutzernamen geändert, Sie können sich denken, wie er lautete. Oder überprüfen Sie Ihre IP, Sie haben wahrscheinlich Zugang... Bitte lassen Sie sie unbeantwortet.