[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 223

 
solnce600:

Meine Herren! Guten Abend!

Könnten Sie mir bitte sagen, warum der Compiler denkt, dass in dem folgenden Code

die Variable int Ticket ist undefiniert.

Es erzeugt einen Fehler

'Ticket' - Variable nicht definiert C:\Programmdateien\Alpari NZ MT4(2)\experts\hhhh.mq4 (18, 6)

Die Variable Ticket ist jedoch auch in der Zuweisungsanweisung im folgenden Code definiert, und der Code lässt sich erfolgreich kompilieren

Die Variable int Ticket ist lokal und wird beim nächsten Tick zurückgesetzt.
 
Vinin:


Wahrscheinlich fehlen nur Klammern an einer Stelle

Problem gelöst. Vielen Dank.
 
TarasBY:
Die Variable int Ticket ist lokal und wird beim nächsten Tick zurückgesetzt.
Die Bemerkung wird berücksichtigt. Vielen Dank.
 

Ich bin auf dieses Problem gestoßen.

Ich muss ein eindimensionales Array vom Typ double für 3000 Gebotspreise initialisieren, wobei alle Werte unterschiedlich sind und nicht in der richtigen Reihenfolge stehen.

Ich muss jeden Wert manuell durch ein Komma getrennt eingeben - das ist unrealistisch.

Ich habe es mit Excel versucht, aber wenn ich einen Punkt anstelle einer Gleitkommazahl eingebe, liest Excel die Zahlen nicht, um ein Komma dazwischen zu setzen.

Bitte schlagen Sie die beste Option vor.


 

Ich habe einen einfachen Expert Advisor geschrieben, der 3 Variablen zurückgibt und sie an start() übergibt.

Dann sollten bei jedem Tick diese Daten (Objekttyp, Preis1 und Preis2) zurückgegeben werden.

//+-------------------------------------------------------------------------------------+
//|                                                TradingByLine.mq4                    |
//|                                                              hoz                    |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

string objName;
int isObj,
    objType;
double price1,
       price2;

//+-------------------------------------------------------------------------------------+
//| Функция иницилизации                                                                |
//+-------------------------------------------------------------------------------------+
int init()
{

   

  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Функция деиницилизации                                                              |
//+-------------------------------------------------------------------------------------+
int deinit()
{
//----
   
//----
  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Блок поиска своих объектов                                                          |
//+-------------------------------------------------------------------------------------+
bool IsObjectFound(double& price1, double& price2, int& objType)
{
   for (int obj=0; obj<=ObjectsTotal()-1; obj++)
   {
      objName = ObjectName(obj);
      isObj = ObjectFind(objName);
      price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

      if (isObj != -1)
         return(true);
   }
   return(false);
}
//+-------------------------------------------------------------------------------------+
//| Функция start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
   if (!IsObjectFound(price1, price2, objType))
      return(0);
   Print("objType = ", objType);
   Print("price1 = ", price1, ", price2 = ", price2);

  return(0);
}

Dann lasse ich diesen Expert Advisor im Visualisierungsmodus des Testers laufen und zeichne von Hand eine Linie in den Chart. Die Zeichnungspreise und der Objekttyp, die ich mit der FunktionIsObjectFound() erhalten habe, sind nicht korrekt. Hier ist die Protokollausgabe:

2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:44     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0

Die Linie ist handgezeichnet, d. h. sie hat einen Typ und andere Parameter:

Die Linie

Warum werden die erforderlichen Parameter nicht zurückgegeben?

 
solnce600:

Ich bin auf dieses Problem gestoßen.

Ich muss ein eindimensionales Array vom Typ Double für 3000 Gebotspreise initialisieren, wobei alle Werte unterschiedlich sind und nicht in der richtigen Reihenfolge stehen.

Es ist unrealistisch, jeden Wert manuell durch ein Komma getrennt einzugeben.

Ich habe es mit Excel versucht, aber wenn ich einen Punkt anstelle eines Fließkommas einfüge, liest Excel die Zahlen nicht, um ein Komma dazwischen zu setzen.

Bitte schlagen Sie die beste Option vor.


Excel kann lesen, zeige mir mehr Details, wie du es gemacht hast
 
hoz:

Ich habe einen einfachen Expert Advisor geschrieben, der 3 Variablen zurückgibt und sie an start() übergibt.

Dann sollten bei jedem Tick diese Daten (Objekttyp, Preis1 und Preis2) zurückgegeben werden.

Dann lasse ich diesen Expert Advisor im Visualisierungsmodus im Tester laufen und zeichne von Hand eine Linie in den Chart. Die Zeichnungspreise und der Objekttyp, die ich mit der FunktionIsObjectFound() erhalten habe, sind nicht korrekt. Hier ist die Protokollausgabe:

Die Linie ist handgezeichnet, d. h. sie hat einen Typ und andere Parameter:

Warum werden die erforderlichen Parameter nicht zurückgegeben?

Wir müssen

price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

objName ohne Anführungszeichen. Dies ist der Variablenname (Bezeichner im Programmtext), der den Objektnamen (String) enthält

 
alsu:

Es sollte sein

objName ohne Anführungszeichen. Dies ist der Variablenname (Bezeichner im Programmtext), der den Objektnamen (String) enthält



In der Dokumentation steht übrigens etwas anderes. Das war der Punkt, an dem ich in die Verwirrung geriet.

Dokumentationsfehler

 
alsu:

Excel kann es lesen, zeigen Sie mir mehr Details, wie man es macht

In der Zeile der 100 Werte mit einem Komma nach dem ersten Zeichen (d.h. Preis)

Hervorheben einer Zeile

Startseite - Suchen und Ersetzen

Alle Kommas in Punkte umwandeln - erfolgreich.

Jetzt müssen wir Kommas zwischen die Werte setzen

Ich wähle das Format der Zellen

Alle Formate

Im aktiven Feld, das das Zahlenformat meiner Zeichenfolge anzeigt, habe ich ein Komma am Ende gesetzt

Exel sagt, dass er das Format, das ich eingegeben habe, nicht verarbeiten kann.

 
hoz:


In der Dokumentation steht übrigens etwas anderes. Ich bin also in die Irre geführt worden.

Die Anführungszeichen stehen für den WERT der String-Variable, nicht für die Variable selbst!!!!