das nächstgelegene Datum finden - Seite 2

 
angevoyageur:

So etwas in der Art?

Nur eine Lösung unter anderen.

Irgendetwas stimmt da nicht... Ich kann es nur bei Tickdaten verwenden, sonst ist der vorherige Höchstwert immer =-1

Aber das Hauptproblem ist, dass auch bei Tickdaten manchmal ohne Grund der vorherige Höchstwert zu =-1 wird.

Nochmals vielen Dank für die Unterstützung

doc

 
dr.house7:

Irgendetwas stimmt nicht... Ich kann es nur bei Tickdaten verwenden, ansonsten ist der vorherige Höchstwert immer =-1

Aber das Hauptproblem ist, dass auch auf Tick-Daten manchmal ohne Grund die vorherige höchste Änderung zu =-1

Nochmals vielen Dank für die Unterstützung

doc

Ich kann nur helfen, wenn Sie den Code zeigen, den Sie verwenden.
 
angevoyageur:
Ich kann nur helfen, wenn Sie den Code zeigen, den Sie verwenden.

Reicht das aus oder benötigen Sie den gesamten Code?

Danke Ange für die Unterstützung...

doc

int checkEntry()
  {
  datetime lastdealtime;
  HistorySelect(0, TimeCurrent());  
  lastdealtime = HistoryDealGetInteger(HistoryDealGetTicket(HistoryDealsTotal()-1),DEAL_TIME);
  //Print("lastdealtime :",lastdealtime);
  
//--- time filter
   if(!checkTimeLimits()) return(_doNothing);

double ema1[2],
       ema2[2];
       
       //

//-- get current Spread
   int spread=int(SymbolInfoInteger(_Symbol,SYMBOL_SPREAD));

//-- Get indicator and timeserie data
  if(CopyBuffer(handle_ema1,0,0,2,ema1)           !=2  ||
  if(CopyBuffer(handle_ema2,0,0,2,ema2)           !=2  ||
                
     
     CopyHigh(_Symbol,_Period,0,2,high)!=2          || 
      CopyLow(_Symbol,_Period,0,2,low)!=2 
     
     ) return(_doNothing);
//-------
MqlDateTime currentTime; TimeCurrent(currentTime);

TouchTime=TimeCurrent();

if(ema1[1] > ema2[1] && ema1[0]< ema2[0]) 
           {
           if(TouchTime != emacross1_TouchTime) 
           {
           drawArrow1(TouchTime,ema1,"Wingdings 3",ArrowSize,"p",ArrowColor); 
           emacross1_TouchTime= TouchTime;
           
           }
        
      
          } 
int touchedline[10];
int temp = 0;
int valuearray = 0;

touchedline[0]=emacross1_TouchTime;
touchedline[1]=emacross2_TouchTime;
touchedline[2]=emacross3_TouchTime;
touchedline[3]=emacross4_TouchTime;
touchedline[4]=emacross5_TouchTime;
touchedline[5]=emacross6_TouchTime;
touchedline[6]=emacross7_TouchTime;
touchedline[7]=emacross8_TouchTime;
touchedline[8]=emacross9_TouchTime;
touchedline[9]=emacross10_TouchTime;


int highest=-1, previoushighest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         previoushighest=highest;
         highest=i;
         temp=touchedline[i];
        }
     }
     
Print("act_highest :",highest);
Print("prv_highest :",previoushighest);
 
dr.house7:

Reicht das aus oder benötigen Sie den gesamten Code?

Danke Ange für die Unterstützung...

doc

Ja. Mir ist jetztklar, dass mein Vorschlag nicht funktioniert , wenn der höchste Wert touchedline[0] ist. Also müssen Sie in diesem Fall einen anderen Weg finden, zum Beispiel ArrayMaximum() verwenden.
 
angevoyageur:
Ja. Ich weiß jetzt, dass mein Vorschlag nicht funktioniert , wenn der höchste Wert touchedline[0] ist. Also müssen Sie in diesem Fall einen anderen Weg finden, zum Beispiel ArrayMaximum() verwenden.

Hallo Ange,

ich habe versucht, mein Bestes zu tun, aber ich denke, das ist ein bisschen komplizierter...ich habe das geschrieben und es funktioniert nicht, irgendein Vorschlag? danke

int index_max;

for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         index_max=ArrayMaximum(touchedline[i],0,WHOLE_ARRAY); // maximum in High
         temp=touchedline[i];         
        }
     }
 
dr.house7:

Hallo Ange,

ich habe versucht, mein Bestes zu tun, aber ich denke, das ist ein bisschen komplizierter...ich habe das geschrieben und es funktioniert nicht, irgendein Vorschlag? danke

   int highest=-1,previoushighest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         previoushighest=highest;
         highest=i;
         temp=touchedline[i];
        }
     }     
   if(previoushighest==-1) previoushighest=ArrayMaximum(touchedline,1,WHOLE_ARRAY);

   Print("act_highest :",highest);
   Print("prv_highest :",previoushighest);
Keine Zeit zum Testen, und ich behaupte nicht, dass es die beste Lösung ist. Aber ich denke, es sollte funktionieren.
 
angevoyageur:
Ich habe keine Zeit zum Testen, und ich behaupte nicht, dass es die beste Lösung ist. Aber ich denke, es sollte funktionieren.
Ich habe es versucht, aber jetzt vorherige und aktuelle geben mir das gleiche Ergebnis die meiste Zeit
 
dr.house7:
Ich habe es versucht, aber jetzt geben mir die vorherige und die aktuelle Version meistens das gleiche Ergebnis.
Tut mir leid, dass ich keine Zeit habe und es ist keine gute Idee, in diesem Zustand zu helfen. Ich verschwende Ihre Zeit.
 
angevoyageur:
Es tut mir leid, dass ich keine Zeit habe und es ist keine gute Idee, in diesem Zustand zu helfen. Ich vergeude Ihre Zeit.
Trotzdem danke
 
angevoyageur:
Tut mir leid, ich habe keine Zeit, und in diesem Zustand zu helfen, ist keine gute Idee. Ich verschwende Ihre Zeit.

Entschuldigung, aber was meinten Sie mit "diese Bedingung"?