[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 1114

 
pr0fess0r64


1. Wir müssen &&OrderSymbol()==Symbol() aus dem Code entfernen.

2. Sie müssen die Geld- und Briefkurse normalisieren.

3. Es ist besser, den Schlupf nicht auf 10 Punkte festzulegen, sondern ihn dynamisch zu berechnen. Wenn zum Beispiel ein Auftrag für Gold und dieses Instrument 50 Punkte pro Tick umläuft, führen 10 Punkte Slippage zu Requotes. Daher ist es besser, die minimale Tick-Größe zu berechnen und sie mit diesen 10 zu multiplizieren.

4. Sie müssen eine Fehlerbehandlung in Ihren Code einbauen. Andernfalls können Sie im Falle eines Fehlers nicht nachvollziehen, warum die Aufträge nicht abgeschlossen wurden.

 
drknn:


1. Sie sollten &&OrderSymbol()==Symbol() aus dem Code entfernen

2. Die Geld- und Briefkurse müssen normalisiert werden.

3. Es ist besser, die Slippage dynamisch zu berechnen, als 10 Pips. Wenn sich zum Beispiel eine Order auf Gold und dieses Instrument um 50 Punkte pro Tick bewegt, dann werden 10 Punkte Slippage eine Menge Requotes verursachen. Daher ist es besser, die minimale Tick-Größe zu berechnen und sie mit diesen 10 zu multiplizieren.

4. Sie müssen eine Fehlerbehandlung in Ihren Code einbauen. Andernfalls können Sie im Falle eines Fehlers nicht nachvollziehen, warum die Aufträge nicht abgeschlossen wurden.

Dies ist die allgemeine Ansicht, und Sie können sich eine ganze Reihe von Dingen vorstellen.
 
pr0fess0r64:
Vielen Dank, ich werde es im Testprogramm ausprobieren, aber haben Sie einen Rat für die Änderung von Aufträgen?
Gibt es beim Ändern Fehler im Logbuch?
 

Wohin erfolgt die Rücksendung?

Eindeutig zur Zeile 0 und warten auf einen Tick

int start()
  {
//----
   
//----
   return(0);
  }

auch hier ist es klar - Stopp

   if(Lot_s<=0){
    Alert("Не выбран лот!");
    return;

Und hier?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);
}
Der Wert der Anzahl der Aufträge ist ko, soll die nächste Funktion also mit ko geschrieben werden? Was macht die Rückkehr hier?
 

return() schickt niemanden irgendwohin.

Der Return-Operator beendet die aktuelle Funktion und gibt die Kontrolle an das aufrufende Programm zurück. Die Verwendung von return(expression); beendet die aktuelle Funktion und sendet das Ergebnis. Der Operatorausdruck ist in Klammern eingeschlossen und darf keinen Zuweisungsoperator enthalten.

 
Vinin:

return() schickt niemanden irgendwohin.

Der Return-Operator beendet die aktuelle Funktion und gibt die Kontrolle an das aufrufende Programm zurück. Die Verwendung von return(expression); beendet die aktuelle Funktion und sendet das Ergebnis. Der Operatorausdruck ist in Klammern eingeschlossen und darf keinen Zuweisungsoperator enthalten.

Oh, also anstelle der expliziten Zuweisung des Ko-Ergebnisses, übergeben wir es durch Return? Ich glaube, ich habe es verstanden, danke.
 
Wie ist es dann richtig, die Arbeit des EA zu stoppen, wenn die Bedingungen nicht erfüllt sind? Nicht um ihn einzuschläfern, sondern um ihn ganz zu stoppen.
 
Abzasc:
Wie ist es dann richtig, die Arbeit des EA zu stoppen, wenn die Bedingungen nicht erfüllt sind? Nicht um ihn einzuschläfern, sondern um ihn ganz zu stoppen.

Was meinen Sie mit "schlafen legen" und was meinen Sie mit "anhalten"?
 
Vinin:

Was bedeutet "Einschläfern" und was bedeutet "Anhalten"?

In den Ruhezustand versetzen - in den Ruhezustand versetzen, dann wird er versuchen, wieder zu starten.

Anhalten - vollständig, so dass der Expert Advisor nicht mehr funktioniert (sein "Gesicht" ändert).

Zum Beispiel, der Expert Advisor ist unter Eurobucks, aber es wurde auf den EuroJPY geworfen. Es prüft das Symbol und gibt im Falle einer Nichtübereinstimmung eine Warnmeldung aus und versucht nicht mehr zu arbeiten, bevor es manuell neu gestartet wird.

 
Abzasc:

In den Ruhezustand versetzen - in den Ruhezustand versetzen, dann wird er versuchen, wieder zu starten.

Anhalten - vollständig, so dass der Expert Advisor nicht mehr funktioniert (sein "Gesicht" ändert).

Zum Beispiel, der Expert Advisor ist unter Eurobucks, aber es wurde auf den EuroJPY geworfen. Es prüft das Symbol und gibt im Falle einer Nichtübereinstimmung eine Warnung aus und versucht nicht, vor dem manuellen Neustart weiterzuarbeiten.


Warum so kompliziert?

Genug in der start()-Funktion, um Bedingungen zu erfüllen

int start(){
  if (Symbol()!="EURUSD") {
     Alert("Советник должен работать только на EURUSD");
     return(0);
  }
  // Далее обработка, принятие решений

}
In diesem Fall, wenn Sie den EA auf das falsche Instrument setzen, werden Sie mit Warnungen überflutet, bis Sie ihn (den EA) selbst deaktivieren

Sie können auch einen Sirenenton hinzufügen, dann können Sie ihn sicher ausschalten