Offenes Projekt - Tester-Optimierer im Haus - Seite 3

 
Ich habe den Quellcode hier veröffentlicht - http://forexsystems.ru/phpBB/viewtopic.php?p=4379#4379
Sie können die Kommentare sehen, die entfernt werden mussten.
Der Zweck der Arrays TradeOrdersArray und ClosedOrdersArray wird dort beschrieben. Und noch einige mehr.
 
Überschriebene OrderSend-Handelsfunktion.
Die Funktionen CorrectPrice() und DrawArrowOnChart() sind noch nicht definiert worden.
Ich habe es hier gepostet - http://forexsystems.ru/phpBB/viewtopic.php?p=4380#4380

Musste alle Variablen aus dem init()-Block in die Kopfzeile ziehen - sonst sind die Variablen nicht sichtbar. Mein erster Fehler.
Die zweite ist, dass der Compiler flucht, wenn ich versuche, den Standardwert eines Parameters in der Funktion auf NULL zu setzen.
Drittens stürzt der Compiler nicht ab, wenn eine undefinierte/undefinierte Funktion (CorrectPrice() und DrawArrowOnChart() ) im Code vorkommt.
Vielleicht stolpert er über NULL und beschwert sich nicht weiter.
Die Funktionsdefinition ist dumm - ich habe sie aus dem Wörterbuch kopiert, so dass die Entwickler mich für die falsche Deklaration verantwortlich machen können ....

  //+------------------------------------------------------------------+
//| Redefine OrderSend() function                       |
//+------------------------------------------------------------------+


int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit,
 string comment=[b]NULL[/b],int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;
      TradeOrdersArray[myOrdersTotal,3]=cmd;
      TradeOrdersArray[myOrdersTotal,4]=volume;
      TradeOrdersArray[myOrdersTotal,5]=price;
      TradeOrdersArray[myOrdersTotal,6]=slippage;
      TradeOrdersArray[myOrdersTotal,7]=stoploss;
      TradeOrdersArray[myOrdersTotal,8]=stoploss;
      TradeOrdersArray[myOrdersTotal,9]=comment;
      TradeOrdersArray[myOrdersTotal,10]=magic;
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }



Morgen werde ich versuchen, OrderClose() neu zu definieren - es wird einfacher sein, die Testidee dort zu erklären.
PS: Zwei Personen haben es bereits heruntergeladen - es gibt also noch Hoffnung

 
Sie können die Kommentare sehen, die gelöscht werden mussten

Rosh, ich habe herausgefunden, wie man russischen Text in dieses Forum einfügt (ich musste es selbst herausfinden :)
Wenn Sie den Code in den Editor kopieren, sollten Sie ihn auf Russisch eingeben. Und wenn Sie sie in ein Forum einfügen, ebenfalls.
Und alle Kommentare werden gespeichert ;)
 
Renat, Slawa...
Hier ist ein gutes Beispiel für die Diskussion über den leeren Operator.
Implizite Typumwandlung ist viel schlimmer und gefährlicher als ";" nach einer Klammer.
In diesem Fall haben wir einen expliziten Fehler, aber der Compiler erzeugt nicht einmal eine Warnung.

Rosh,
ist die Seite wieder verschwunden.
 
Ein weiterer Versuch:

int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;// записали иструмент
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;// записали номер в списке терминала
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;// записали номер тикета у брокера
      TradeOrdersArray[myOrdersTotal,3]=cmd;// записали тип ордера
      TradeOrdersArray[myOrdersTotal,4]=volume;// записали размер ордера
      TradeOrdersArray[myOrdersTotal,5]=price;// записали цену открытия
      TradeOrdersArray[myOrdersTotal,6]=slippage;// записали проскальзывание в пунктах
      TradeOrdersArray[myOrdersTotal,7]=stoploss;// записали stoploss
      TradeOrdersArray[myOrdersTotal,8]=stoploss;// записали takeprofit
      TradeOrdersArray[myOrdersTotal,9]=comment;// записали комментарии
      TradeOrdersArray[myOrdersTotal,10]=magic;// записали MagicNumber
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;// записали дату выставления/открытия ордера
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }
//+------------------------------------------------------------------+
 
Der Text enthält einen schwerwiegenden Fehler.
 
Vielen Dank, Mak. Knappheit ist die Schwester des Talents.
 
Rosh,
Ich wollte nur, dass Renat es sich selbst ansieht und den Fehler findet.
Aber es scheint, dass sie nicht hierher schauen oder meinen Beitrag für dumm halten.
(Zitat - "Wir beantworten keine dummen Fragen ..." - :))

Hier geht es um die Nachteile der MQL-Syntax (und/oder des Compilers).
Der Compiler wird auf diesen Fehler nicht reagieren, obwohl er Sie davor warnen könnte.
Ich würde solche Fehler in einer Sprache einfach verbieten (implizite Typkonvertierung).

Um genau zu sein.
Das TradeOrdersArray-Array hat den Typ double.
An mehreren Stellen haben Sie ihm Zeichenfolgen zugewiesen.
Zum Beispiel:
TradeOrdersArray[myOrdersTotal,0]= symbol;


Der Compiler wird alles auffressen, und auch der Tester wird funktionieren, aber nicht so, wie Sie es wollten.
Und es ist schwer, einen solchen Fehler zu finden, vor allem, wenn er vor einem Monat gemacht wurde,
und tauchte erst heute auf, als Sie ein paar Zeilen in das Programm einfügten.

(Bitte korrigieren Sie das Skript - die Seite ist verschwunden, es ist nicht bequem zu sehen.)

 
Wie definiere ich dann ein Array, um Daten verschiedener Typen zu speichern?
Hier ist diese Erklärung
string comment=NULL
erhält der Compiler einen Fehler.
Aber ich habe nur nach einem Muster aus dem Wörterbuch abgeschrieben.
 
Wie definiere ich ein Array, um Daten verschiedener Typen zu speichern?

Ich vermute, dass Sie das nicht können.
Nur in 2 verschiedenen Feldern.
Grund der Beschwerde: