[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 295

 

Danke. Im Prinzip braucht man nur "||" durch "&&" zu ersetzen (ich wollte wahrscheinlich auf Ungleichheit prüfen, gefolgt von "continue"), und alles wird funktionieren, während es im Tester sowieso funktioniert. Obwohl Ihre Version natürlich korrekter sein wird.

 

Nun, das sind Nuancen. Ich versuche immer noch, sie nach meinen Bedürfnissen umzuschreiben. Ich zum Beispiel brauche die medjic-Auswahl überhaupt nicht (in dieser Funktion). Außerdem habe ich festgestellt, dass die Auswahl in der Funktion Figar0 aus der Historienliste erfolgte. Das Wichtigste dabei ist, die Idee zu verstehen. Übrigens benötige ich Aufträge aus dem Pool, so dass sich alles viel einfacher gestaltete.

Danke für die Ideen und die Hilfe, Leute.

PS: Und erläutern Sie bitte Folgendes

OrderType()>1
Ich habe schon mehrmals gesehen, dass OrderType als int verglichen wird . Was ist der Trick dabei? Ich dachte, es sei eine String-Variable.
 
Pyro:

Nun, das sind Nuancen. Ich versuche immer noch, sie nach meinen Bedürfnissen umzuschreiben. Ich zum Beispiel brauche die medjic-Auswahl überhaupt nicht (in dieser Funktion). Außerdem habe ich festgestellt, dass die Auswahl in der Funktion Figar0 aus der Historienliste erfolgte. Das Wichtigste dabei ist, die Idee zu verstehen. Übrigens benötige ich Aufträge aus dem Pool, so dass sich alles viel einfacher gestaltete.

Danke für die Ideen und die Hilfe, Leute.

PS: Könnten Sie das Folgende erklären?

Ich habe gesehen, OrderType als int ein paar Mal verglichen. Was ist der Trick dabei? Ich dachte, es sei eine String-Variable.

Dies ist eine Entsprechung zwischen Konstanten und ihren Werten.

OP_BUY entspricht 0

OP_SELL entspricht 1

__________________________________________________________________________________________________________-

Art der Operation für die Funktion OrderSend(). Kann einer der folgenden Werte sein:

Konstante Wert Beschreibung
OP_BUY 0 Kaufen
OP_SELL 1 Verkaufen
OP_BUYLIMIT 2 BUY LIMIT schwebende Order
OP_SELLLIMIT 3 Ausstehender SELL LIMIT-Auftrag
OP_BUYSTOP 4 Ausstehender BUY STOP-Auftrag
OP_SELLSTOP 5 Ausstehender SELL STOP-Auftrag
 
Pyro:

Übrigens benötige ich Aufträge aus dem Pool, so dass es sich als viel einfacher erwies.

Bei der Auswahl eines Auftrags nach Index werden zwei Listen verwendet - offene und geschlossene. Dies wird festgelegt, indem man angibt, in welcher Liste man sie sehen möchte ( Parameterpool).

Wenn wir also aus einer Liste offener Aufträge auswählen müssen, können wir die Angabe dieses Parameters weglassen (er ist standardmäßig gesetzt). Wenn wir aus einer Liste von abgeschlossenen Aufträgen wählen wollen, sollten wir MODE_HISTORY als Parameter angeben.

Dementsprechend, wenn Sie die letzte offene Order finden wollen, wird die Schleife auf offene Orders des Terminals gemacht und Sie sollten auch die Zeit der Öffnung OrderOpenTime() überprüfen, wenn Sie die letzte geschlossene Order benötigen (wie in den obigen Beispielen), sollte die Schleife auf geschlossene Orders des Terminals gemacht werden und Sie sollten OrderCloseTime() überprüfen, um herauszufinden, wann die ausgewählte Order geschlossen wurde.

Und zu Ihrer Information: Wenn Sie nach Ticket auswählen, wird der Parameterpool überhaupt nicht beachtet und die Bestellung wird in beiden Listen gefunden. Sobald der Auftrag gefunden wurde, müssen wir seine Abschlusszeit überprüfen, um herauszufinden, aus welcher Liste der Auftrag ausgewählt wurde. Wenn der Zeitpunkt des Abschlusses größer als Null ist, ist der Auftrag abgeschlossen und wurde aus der Liste der abgeschlossenen Aufträge ausgewählt. Wenn der Zeitpunkt des Abschlusses eines offenen Auftrags immer gleich Null ist. Wenn sie also gleich Null ist, wurde der Auftrag aus der Liste der offenen Aufträge ausgewählt.

Auch wenn Sie nach einem schwebenden Auftrag anhand seines Tickets suchen, kann er in beiden Listen erscheinen. Dies geschieht, wenn er in einen Marktauftrag umgewandelt wird. Daher müssen Sie auch die von Ihnen gewählte Auftragsart überprüfen. Wenn der schwebende Auftrag geschlossen wird und der Marktauftrag mit demselben Ticket nicht geschlossen wird, bedeutet dies, dass der schwebende Auftrag in einen Marktauftrag umgewandelt wurde.

 
Figar0:

Danke. Im Prinzip braucht man nur "||" durch "&&" zu ersetzen (ich wollte wahrscheinlich auf Ungleichheit prüfen, gefolgt von "continue"), und alles wird funktionieren, während es im Tester sowieso funktioniert. Obwohl Ihre Version natürlich korrekter sein wird.

Ich selbst mache manchmal dumme Fehler, wenn ich hier Code poste... Dann korrigiere ich den Code wie verbrüht, bevor er in falscher Form gelesen wird... :)))
 
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2

extern int period=24;
double Buf_0[],Buf_1[];

//+------------------------------------------------------------------+
int init()
  {
//---- 
   SetIndexBuffer(0,Buf_0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(1,Buf_1);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
//----
   return;
  }
//+------------------------------------------------------------------+
int start()
  {
   int  i,counted_bars,maxValueIdx,minValueIdx; 
//----

   counted_bars=IndicatorCounted();
   i=Bars-counted_bars-1;
   
   while(i>=0)
   {
   maxValueIdx=ArrayMaximum(Close,(period-1),0); 
   minValueIdx=ArrayMinimum(Close,(period-1),0);
   Buf_0[i]=Close[maxValueIdx];
   Buf_1[i]=Close[minValueIdx];
   i--;
   }
   
   
//----
   return;
  }
//+------------------------------------------------------------------+
Hallo, ich wollte einen Indikator schreiben, der die MAX und MIN des Schlusskurses für einen bestimmten Zeitraum ausliest. Ich folge dem Tutorial, aber die alten Daten werden überhaupt nicht angezeigt, sondern zwei horizontale Linien mit den aktuellen MAX und MIN. Können Sie mir sagen, was ich falsch mache?
 
borisis:
Hallo, ich wollte einen Indikator schreiben, der die MAX und MIN des Schlusskurses für einen bestimmten Zeitraum zählt. Wie alles, was ich im Tutorial mache, aber die alten Daten werden überhaupt nicht gezeichnet, sondern es werden zwei horizontale Linien mit den aktuellen MAX und MIN angezeigt. Können Sie mir sagen, was ich falsch mache?


maxValueIdx=ArrayMaximum(Close,(period-1), i);

minValueIdx= ArrayMinimum(Close,(period-1), i);

Andernfalls finden Sie bei jedem Schritt immer wieder dieselben Indizes

 

Hallo zusammen! Wie lässt sich herausfinden, zu welchem Typ eine Variable gehört: int ODER double?

und zweitens, was bedeutet der Fehler "ungültige doppelte Zahl als Parameter 1 für DoubleToStr Funktion"?

 
todem:

Hallo zusammen! Wie erkenne ich den Typ einer Variablen: int ODER double?

Sind Sie neugierig, warum? Können Sie eine Situation beschreiben, in der dies erforderlich wäre?
 
Gesetzt.

Valdemar 01.04.2011 16:31
Grüße an alle Meister der Programmierung! Hinweis auf die richtige Idee, wenn Sie nichts dagegen haben: Hier habe ich, sagen wir, ich beschlossen, am Ende einer bestimmten Stunde des Handels, setzen Sie einen Stop-Auftrag, schob weg von der hohen und niedrigen der Stunde auf ein paar Punkte, was ich verwenden sollte, schreiben Sie eine Programmier-Funktion!