Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 05.08.20
janbuk63 janbuk63 ist offline
Mitglied
 
Registriert seit: Mar 2013
Beiträge: 30
janbuk63 befindet sich auf einem aufstrebenden Ast
Standard Hochs und Tiefs verbinden!

Hallo allerseits!
ich versuche mir ein Behelfsmittel für eine bestimmte Strategie zu basteln und bleibe an einem Problem stecken.
Der Script soll Linien zeichnen zwischen letzten Hoch und laufende Kerze wenn sie höher als die vorherige ist und das gleiche für Tief nur umgekehrt.

Jede Linie braucht 4 Variablen die im Arrays gespeichert werden sollen.
Das Problem ist dass ich es nicht fertig kriege den Code so zu schreiben dass nur 1 Linie zwischen dem letzten Hoch und der Laufender Kerze gezeichnet wird.
Nach Fertigstellung der Linie wird ein Index um 1 verkleinert damit jede Linie eine neue Variable bekommt.
Das Problem ist dass der index obwohl es eine Linie schon gibt - wird verkleinert und wieder eine Linie gezeichnet auf der gleicher Kerze und so habe ich nach ein Paar Minuten 100 Linien : völlig sinnlos!!
Ich habe schon alles probiert aber irgendwie wird die "alte" Linie nicht gesehen
und immer weiter gezeichnet!!
Wer weiß die Lösung?
Gruß

hier der Code:
Code:
      int kerze_highest_Nummer = iHighest(NULL,Period(),MODE_HIGH,Wieviel_Kerzen,2); // Kerzen Nr. wo der größte Preis
         kerze_highest_Preis[0]=iHigh(NULL,Period(),kerze_highest_Nummer);          // höchste Preis dieser bestimmten Kerze 
   double  kerze_highest_Preis_davor1  =iHigh(NULL,Period(),kerze_highest_Nummer+1);           // höchste Preis 1 Kerze davor
 //-----------------------------------------------

    //--Laufende Kerze
          high_current[0]=iHigh(NULL,Period(),0);// höchste Preis dieser bestimmten Kerze: KERZE NULL (current) 
   double high_1=iHigh(NULL,Period(),1);         // höchste Preis dieser bestimmten Kerze: KERZE Nr.1 
//-------überprüfe ob es ein Hoch gibt d.h. Kerze davor und danach ist kleiner
        if(kerze_highest_Preis_davor1<kerze_highest_Preis[0] 
           && high_current[0]>=high_1
          )     
   
   
   {                 // der Index: "indx1" fängt bei 100 und läuft nach unten bis 1
Sleep(2000);            
                   // Linien Name: "Div_hochs "+IntegerToString(indx1)     
   if( (ObjectFind("Div_hochs "+IntegerToString(indx1))<0))     // suchen nach Object "Linie" - wenn Eregebnis -1 bedeutet Keine Linie mit  dem Namen
     if( (ObjectFind("Div_hochs "+IntegerToString(indx1))<0))   // Wiederholung der Suche wenn beim ersten mal der Object nicht gesehen wurde obwohl er da ist!! 
     {//0.
      {//1.
       if(kerze_highest_Preis[indx1]==0       // Anfangspunkt ist noch leer (laufende Index: indx1)
          && div_hochs_time[indx1+1]!=Time[0] // Index : indx1+1 - Zeitpunkt wo Linie endet ist nicht gleich(!=) mit laufende Kerze   
          && TimeCurrent()>=Time[0]+250       // gezeichnet wird wenn die Laufende Kerze (5 Min) fast zu Ende ist
         )
           
         {//2.
         CreateTLine("Div_hochs "+IntegerToString(indx1),clrBlueViolet,Time[kerze_highest_Nummer],kerze_highest_Preis[0],Time[0],high_current[0],0,0,2,2); 
         
         kerze_highest_Preis[indx1] = kerze_highest_Preis[0]; // Anfangspunkt wird gespeichert
         high_current[indx1]=high_current[0];                 // Endpunkt wird gespeichert
         LiniaAnfangHochs_time[indx1]=Time[kerze_highest_Nummer]; //Anfangszeit
         div_hochs_time[indx1]=Time[0];                          // Endzeit
    
         // überprüfe ob Linie aufsteigend od fallend ist
         if (kerze_highest_Preis[0]<high_current[0]){div_hoch[indx1] =1;} else {div_hoch[indx1] =0;}// Linie Aufsteigend dann ist der Schalter auf "1"
             Sleep(2000);
             indx1=indx1-1;  // index für Arrays wird geändert 
                       if(indx1 ==1)
            {
             indx1=100; // wenn index 100 erreicht wird er zurückgesetzt und alle Objecte gelöscht
             for(int i=1;i<=100;i++)
              {ObjectDelete("Div_hochs "+IntegerToString(i));
              kerze_highest_Preis[i]=0;
              high_current[i]=0;                
              LiniaAnfangHochs_time[i]=0
              div_hochs_time[indx1]=Time[0];                          
              }
            }   
         }//2.
      }//1.
     }//0. 
   }//+------------------------------------------------------------------+