Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 148

 

Hallo.
Die Funktion OrderSelect gibt den Fehler 0 zurück (ERR_NO_ERROR - Trade transaction was successful)??
Wie lässt sich dieser Fehler vermeiden?
Ich füge den Programmcode und die Journaleinträge bei.
Hochachtungsvoll. Schurkin.

//+------------------------------------------------------------------+
//|                                                    PoligonTd.mq4 |
//|                                           17 сентября 2013 года. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "17 сентября 2013 года."
#property link      ""

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----Функция OrderSelect--------------------------------------------+
string Str="#20552937 buy 1.00 GBPUSD at 1.55450";//Строка
int Tct=StrToDouble(StringSubstr(Str,1,9));//Номер ордера
   if(OrderSelect(Tct,SELECT_BY_TICKET)==true)//Выбор ордера по номеру
string OdSmb=OrderSymbol();//Символ ордера
   else Print("OrderSelect() вернул ошибку - ",GetLastError());
Print("Кс:"," Str=",Str,"; Tct ",Tct,"; OdSmb ",OdSmb,"?");//Кс
//----
   return(0);
  }
//+------------------------------------------------------------------+

2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: entfernt
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: uninit Grund 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: Ks: Str=#20552937 kaufen 1.00 GBPUSD bei 1.55450; Tct 20552937; OdSmb ?
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: OrderSelect() gab Fehler zurück - 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: erfolgreich geladen

 
Shurkin:

Hallo.
Die Funktion OrderSelect gibt den Fehler 0 zurück (ERR_NO_ERROR - Trade transaction was successful)??
Wie lässt sich dieser Fehler vermeiden?
Ich füge den Programmcode und die Journaleinträge bei.
Herzliche Grüße. Schurkin.

2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: entfernt
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: uninit Grund 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: Kc: Str=#20552937 buy 1.00 GBPUSD at 1.55450; Tct 20552937; OdSmb ?
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: OrderSelect() gab Fehler zurück - 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: erfolgreich geladen

Eigentlich liegt kein Auswahlfehler vor, die Bestellung mit einem solchen Ticket existiert nicht.
 
Sepulca:
Eigentlich gibt es keinen Fehler bei der Auswahl, die Bestellung mit einem solchen Ticket existiert nicht.

Na ja... Wenn es keine Bestellung mit diesem Ticket gibt, wird OrderSelect() false zurückgeben

Es scheint also ein Fehler vorzuliegen, da wir zu einem anderen Ort wechseln. Die Frage ist, warum es keinen Fehler gibt?

 

Ich kann nicht herausfinden, wie ich die Logik mit möglichst wenig Aufwand umsetzen kann.

If(...) setzt eine Stop-Order;

If(Lebensdauer>Zeit des Auftrags) den Auftrag zurückziehen und if(...) einen neuen Auftrag einstellen;

Die Schwierigkeit besteht darin, dass es mehrere Positionen geben kann , die bereits offen sind, und wie sollen wir sie alle bekämpfen? Was ist der einfachste Weg?

Ich danke Ihnen!

 

Ich denke darüber nach, die spezielle init()-Funktion aufzugeben. Ich glaube, das ist die richtige Lösung, oder?

Ich sehe das folgendermaßen:

1. deklarieren Sie eine Variable global, zum Beispiel so:

gInitTrue = false;

Dann erstellen wir unser eigenes INIT:

bool myInit()
{
  // Инициализируем..
  // неоходимые..
  // нам..
  // переменные..
  return(true);
}

Ganz am Anfang des Starts so:

if (gInitTrue == false)
    myInit();
Es wäre interessant, die Meinung erfahrenerer Personen über die Eignung dieses Ansatzes sowie über die Korrektheit der von mir vorgeschlagenen Lösung für dieses Problem zu erfahren.
 
Sepulca:

Mehr Puffer.

Ups, der Fehler ist aufgetreten. Ich musste auch 2 Farben hinzufügen, für 2 Puffer.
 
hoz:

Ich denke darüber nach, die spezielle init()-Funktion aufzugeben. Ich glaube, das ist die richtige Lösung, oder?

Ich sehe das folgendermaßen:

1. deklarieren Sie eine Variable global, zum Beispiel so:

Dann erstellen wir unser eigenes INIT:

Ganz am Anfang des Starts so:

Es wäre interessant, die Meinung erfahrenerer Personen über die Eignung dieses Ansatzes sowie über die Richtigkeit der von mir vorgeschlagenen Lösung für dieses Problem zu erfahren.

Was ist das Neue daran, eine neue Lösung zu spüren? :-))

Eine verdammte Sache. Es war nie nötig, das so zu machen.

 
artmedia70:

Na ja... Wenn es keine Bestellung mit diesem Ticket gibt, wird OrderSelect() false zurückgeben

Es scheint also ein Fehler vorzuliegen, da wir zu einem anderen Ort wechseln. Die Frage ist, warum es keine gibt?



Ich habe es überprüft - wenn die Ticketnummer übereinstimmt, funktioniert alles einwandfrei,

Wenn nicht - gibt die Funktion False zurück, aber OrderSelect() ist still, da nichts passiert, ZERO und nichts passiert.

 
Zhunko:

Was ist das Neue daran, eine neue Lösung zu spüren? :-))

Eine verdammte Sache. Es war nie nötig, das so zu machen.



Aber was ist der springende Punkt? Es wurde erörtert, dass INIT z. B. bei Verbindungsabbrüchen oder ähnlichen Situationen fehlschlagen kann. Denn er initialisiert die Daten selbst nicht nachträglich neu, falls es zu Unfällen kommt, und er läuft nur einmal! Daher ist es nicht wirklich die richtige Option.
 

Die Frage ist langweilig, aber die Antwort ist nirgends zu sehen, oder vielleicht habe ich nur falsch geschaut:

In Funktionen, oder vielleicht auch irgendwo anders, habe ich das Symbol & nach dem Datentyp gesehen und, wenn ich mich nicht irre, einmal &&

func(int& mm_mode, string symbol, int magic,bool& stop) {

Wozu ist es da? Was macht es? (Hinweis, wenn Sie mehr darüber erfahren können)))