[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 169

 
Vinin >> :

Was bedeutet i?

Ich wollte nur die Grundlagen aufzeigen - i ist definiert als:

   int counted_bars = IndicatorCounted(), i;
   i = Bars - counted_bars - 1;

   while( i>=0) {


d.h. sie beginnt mit dem höchsten Balken und geht bis zum Nullpunkt.

Wenn ich den Indikator laufen lassen, dann für 0 Werte von i alles beginnt zu arbeiten (zeichnet Rechtecke für aktuelle

usw.), aber es gibt nichts über die Geschichte. Ich dachte, dass es vielleicht etwas mit der Definition des Arrays zu tun hat!

 
chief2000 писал(а) >>

Ich wollte nur die Grundlagen zeigen - i ist definiert als:

d.h. sie beginnt beim höchsten Balken und geht bis zum Nullpunkt.

Wenn ich den Indikator laufen lassen, dann für 0 Werte von i alles beginnt zu arbeiten (zeichnet Rechtecke für aktuelle

usw.), aber es gibt nichts über die Geschichte. Ich dachte, dass es vielleicht etwas mit der Definition des Arrays zu tun hat!

Dann muss ich den vollständigen Code des Indikators zeigen.

 
Vinin >> :

Dann müssen Sie den vollständigen Code des Indikators angeben.

Hier ist der Code - ich habe alles entfernt, was für das Problem nicht relevant war:

 
#property indicator_chart_window
#property indicator_buffers 4



int    i;


// ------------------------------------------------------
extern int RSI_Periods = 14;
extern int Percent_K   = 14;

//---- buffers
// double Buffer1[];
double Buffer1[99000];

// double Current_RSI,Lowest_RSI,Highest_RSI,sum_K;
// ------------------------------------------------------




  
int init() {
   return(0);
}




// -------------------------------------------------------------------------------
int start() {

   int counted_bars = IndicatorCounted(), i;
   i = Bars - counted_bars - 1;

   while( i>=0) {

// ============================================================================================
      double Current_RSI, Lowest_RSI, Highest_RSI;


      Current_RSI    = iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i);
      Highest_RSI    = Current_RSI;
      Lowest_RSI     = Current_RSI;

      for(int x= i+1; x<= Percent_K+ i+1; x++){
         Lowest_RSI  = MathMin( Lowest_RSI, iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
         Highest_RSI = MathMax( Highest_RSI,iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
      }


      Buffer1[ i]     = (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100;
// ============================================================================================



   Comment(
      "\n",
      "\n",
      "\n",
      "\n",
      "\n", "Current_RSI = "  , Current_RSI,
      "\n", "Highest_RSI = "  , Highest_RSI,
      "\n", "Lowest_RSI = "  , Lowest_RSI,
      "\n", "Percent_K = "  , Percent_K,
      "\n", "((Current_RSI-Lowest_RSI) / (Highest_RSI-Lowest_RSI)) * 100 = "  , (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100,
      "\n", "iRSI(NULL,0,RSI_Periods,PRICE_TYPICAL,i) = "  , iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i),
      "\n", "i = "  , i,
//      "\n", "Percent_K = "  , Percent_K,
//      "\n", "Percent_K = "  , Percent_K,
      "\n",
      "\n",
      "\n", "Buffer1[i+30] = ", Buffer1[ i+30],
      "\n", "Buffer1[i+12] = ", Buffer1[ i+12],
      "\n", "Buffer1[i+1] = ", Buffer1[ i+1],
      "\n", "Buffer1[i] = "  , Buffer1[ i],
      "\n",
      "\n"
   );


      i--;
   }


   return(0);
}
 

Wo kann man mit dem Schreiben von void ManagePositions() nach wissenswerten Bedingungen beginnen?

Es gibt Arrays
for (tf = 0; tf < 5; tf++)
{
......
int TF[tf] - Zeitrahmen {5,15,30,60,240}
int signal[tf] - "1" - kaufen
- 2" - Kauf abschließen
- "-1" - verkaufen
-2" - Verkauf schließen
int mn_b[tf] - magic_number_buy unterschiedlich für alle Zeitrahmen
int mn_s[tf] - magic_number_sell unterschiedlich für alle Zeitrahmen
}

Sie sollte
öffnen
auf dem Zeitfenster 5.15 offen in eine Richtung bis zu drei Aufträge
- 1 MM-Bestellung = 1 MONEY
- 2 MM Bestellung = 2
- 3 MM Bestellung = 3
im Zeitfenster 30 einseitig bis zu zwei Aufträge öffnen
- 1 MM-Bestellung = 2
- 2 MM = 3

im Zeitfenster 60 wird ein Auftrag auf einer Seite eröffnet
- 1 MM-Bestellung = 3

zum Zeitpunkt 240 öffnet sich nicht

Verdünnung der zweiten und dritten Ordnung unter verschiedenen Bedingungen

Insgesamt erhalten wir nicht mehr als 9 Aufträge auf einer Seite

Schließen Sie
Wenn ein Verkaufssignal zum Abschluss eines Zeitrahmens erscheint, werden alle Verkaufsaufträge im gegebenen Zeitrahmen geschlossen.
Wenn ein Zeitrahmen-Schluss-Kaufsignal erscheint, werden alle Kaufaufträge im aktuellen Zeitrahmen geschlossen.


Bitte um Hilfe

 

Erläutern Sie bitte, wie ein Ticket oder eine Bestellnummer identifiziert werden kann, wenn bekannt ist, dass es sich um das erste Ticket mit einer bestimmten magischen Zahl handelt.

Vielen Dank im Voraus!

 

I. Kims Zweig "Nützliche Funktionen von KimIV".

GetTicketLastPos() Funktion. Seite 19.
Diese Funktion gibt das Ticket der letzten offenen Position oder -1 zurück.
Die Funktion GetIndexLastPos(). P.17
Diese Funktion gibt den Index der zuletzt geöffneten Position oder -1 zurück.
Die Funktion IndexByTicket(). P.12
Gibt den Index (die Indexnummer in der allgemeinen Liste der eingestellten Aufträge oder offenen Positionen) des Auftrags oder der Position durch das Ticket zurück. Wenn IndexByTicket() keinen Auftrag oder keine Position mit dem gewünschten Ticket findet, wird -1 zurückgegeben.





 
rid >> :

I. Kims Zweig "Nützliche Funktionen von KimIV".

GetTicketLastPos() Funktion. Seite 19.
Diese Funktion gibt das Ticket der letzten offenen Position oder -1 zurück.
Die Funktion GetIndexLastPos(). P.17
Diese Funktion gibt den Index der zuletzt geöffneten Position oder -1 zurück.
Die Funktion IndexByTicket(). P.12
Gibt den Index (die Indexnummer in der allgemeinen Liste der eingestellten Aufträge oder offenen Positionen) des Auftrags oder der Position durch das Ticket zurück. Wenn IndexByTicket() keinen Auftrag oder keine Position mit dem gewünschten Ticket findet, wird -1 zurückgegeben.





Vielen Dank für Ihre Hilfe!

 
chief2000 >> :

Hier ist der Code - ich habe alles entfernt, was für das Problem nicht relevant war:


Ich habe die Ursache gefunden:

i = Bars-30 - counted_bars - 1;

anstelle von.

i = Bars - counted_bars - 1;


Ich danke Ihnen!

 

Eine weitere grundsätzliche Frage zu meinem obigen Code - der gleiche Indikator läuft separat

und zeichnet eine Linie in das Fenster unterhalb des Hauptfensters (und ein weiteres fügt andere grafische Objekte im oberen Fenster hinzu).

Die beiden for-Schleifen innerhalb von while() überlasten den Computer merklich.

- Ist es möglich, oben Rechtecke, Pfeile usw. und eine Linie zu erstellen?

(RSI-Typ-Kurve) am Boden?

Grund der Beschwerde: