Fragen von einem "Dummy" - Seite 64

 
Europa:
Können Sie mir bitte sagen, warum die Meldung Orders_Total=1 ausgibt, obwohl es tatsächlich eine Position und einen Auftrag gibt, d.h. theoretisch sollte sie 2 und nicht 1 ausgeben.

Versuchen Sie, den Zyklus rückwärts ablaufen zu lassen, vom Ende her.

string Symb="EURUSD";
  for(i=OrdersTotal()+PositionsTotal()-1;i>=0;i--)
     {
      if(Symb==PositionGetSymbol(i)) Orders_Total++;
     }
     Alert(Orders_Total);
 
tol64:

Versuchen Sie, den Zyklus rückwärts ablaufen zu lassen, vom Ende an.

Es hat nicht geholfen ;(
 
Europa:
Hat nicht geklappt ;(

Ah, Sie haben nur eine Positionskontrolle:

if(Symb==PositionGetSymbol(i)) Orders_Total++;
Dort werden nur die Positionen gezählt.
 
tol64:

Ah, Sie haben nur eine Positionskontrolle:

Hier zählen nur die Positionen.
SO!!!! Vielen Dank!!!
 
tol64:

Die Referenz besagt, dass:

Es kann entweder das Datum (Jahr, Monat, Tag) oder die Uhrzeit (Stunden, Minuten, Sekunden) oder alles zusammen weggelassen werden. Die Spanne der Werte reicht vom 1. Januar 1970 bis zum 31. Dezember 3000.

Beispiele:

D'2004.01.01 00:00' // Neujahr
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' //Neujahr d'1980.07.19 12:00:00'
D'01.01.2004' //äquivalent D'01.01.2004 00:00:00'
D'12:30:27' //äquivalent zu D'[Kompilierdatum] 12:30:27'
D' '//äquivalent zu D'[Kompilierdatum] 00:00:00''

...

Oder habe ich das falsch verstanden?

Die Hilfe wird geändert, damit sich solche Fragen in Zukunft nicht mehr stellen. Ich danke Ihnen.
 
Europa:
Es hat nicht geholfen ;(

Warum addieren Sie Fliegen und Koteletts und ermitteln dann, wie viele Koteletts es sind?

Aufträge zählen separat, Positionen separat. PositionGetSymbol() gibt nur das Vorhandensein einer Position nach Symbol zurück und sagt nichts über Aufträge aus. Da es nur eine Position gibt, wird eine 1 vergeben. Und Sie haben immer noch Glück, denn der Schleifenparameter geht über die zulässigen Werte hinaus (PositionsTotal), Sie können alles bekommen, was Sie wollen.

P.S. Sie haben mir bereits geantwortet, ich bin spät dran.

 
Ich konnte keine interne Funktion oder Eigenschaft finden, um einem grafischen Objekt die Eigenschaft auswählbar zu geben (standardmäßig wird das Objekt programmatisch gezeichnet, ohne die Möglichkeit, es mit der Maus auszuwählen). Es stellt sich natürlich die Frage, ob es möglich ist, einem grafischen Objekt eine solche Eigenschaft auf normale Weise, ohne zusätzliche Bibliotheken und andere Zauberei, zu verleihen.
 
x100intraday:
Ich konnte keine interne Funktion oder Eigenschaft finden, um die auswählbare Eigenschaft dem grafischen Objekt zu geben (standardmäßig wird das Objekt programmatisch gezeichnet, ohne es mit der Maus auszuwählen), ich fand es nur in der enthaltenen Grafikbibliothek. Es stellt sich natürlich die Frage, ob es möglich ist, einem grafischen Objekt eine solche Eigenschaft auf normale Weise, ohne zusätzliche Bibliotheken und andere Zauberei, zu verleihen.

ObjectSetInteger

mit prop_id=OBJPROP_SELECTABLE

 
Valmars:

ObjectSetInteger

mit prop_id=OBJPROP_SELECTABLE

Ich danke Ihnen vielmals.
 
bool ExtFunc (string str, int P, int i)
  {
   if (high[i] < high[i-1]) return(false);
   return(true);   
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i=0;
   if ExtFunc("s",60,i) == 1)
     Buffer[i] = high[i];
  }

InOnCalculate kann ich einfach Array-Elemente wie high by indexverwenden. Ist es auch möglich, in ExtFunc auf die Indexelemente dieses Arrays zuzugreifen? Wenn ich meine Funktion aufrufe, sollte ich das Array-Argument per Referenz, per Zeiger oder auf andere Weise übergeben? Bisher ist es mir gelungen, die Fehlermeldungen zu minimieren: "'high' - parameter conversion is not allowed" und "'high' - constant variable cannot be passed as reference" bezüglich der gleichen Zeile meines Funktionsaufrufs mit dem Array-Argument von OnCalculate. Ist es hoffnungslos oder gibt es eine Lösung?

Bisher habe ich in OnCalculate auf das Kopieren von high in ein anderes Array zurückgegriffen:

ArrayCopy(CopyOfHigh,high,0,0,WHOLE_ARRAY);
und dann CopyOfHigh in ExtFunc zu verwenden, anstatt high-array direkt zu verwenden.