en yakın tarihi bul - sayfa 2

 
angevoyageur :

Bunun gibi bir şey ?

Diğerleri arasında sadece bir çözüm.

Yanlış bir şey var...Bunu yalnızca kene verilerinde kullanabilirim, aksi takdirde önceki en yüksek değer her zaman =-1 olur

Ancak asıl sorun, kene verilerinde de bazen sebepsiz olarak önceki en yüksek değişikliğin =-1 olması.

destek için tekrar teşekkürler

doktor

 
dr.house7 :

Yanlış bir şey var...Bunu yalnızca kene verilerinde kullanabilirim, aksi takdirde önceki en yüksek değer her zaman =-1 olur

Ancak asıl sorun, kene verilerinde de bazen sebepsiz olarak önceki en yüksek değişikliğin =-1 olması.

destek için tekrar teşekkürler

doktor

Kullandığın kodu gösterirsen yardımcı olabilirim.
 
angevoyageur :
Kullandığın kodu gösterirsen yardımcı olabilirim.

Bu yeterli mi yoksa kodun tamamına mı ihtiyacınız var?

Desteğin için teşekkürler Ange...

doktor

 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 :

Bu yeterli mi yoksa kodun tamamına mı ihtiyacınız var?

Desteğin için teşekkürler Ange...

doktor

Evet. Şimdi , en yüksek değer touchline[0] ise önerdiğimin çalışmadığını anlıyorum . Yani bu durumda başka bir yol bulmalısınız, örneğin ArrayMaximum() kullanın .
 
angevoyageur :
Evet. Şimdi , en yüksek değer touchline[0] ise önerdiğimin çalışmadığını anlıyorum . Yani bu durumda başka bir yol bulmalısınız, örneğinArrayMaximum() kullanın .

Merhaba Ange,

Elimden gelenin en iyisini yapmaya çalıştım, ama sanırım bu biraz daha karmaşık... Bunu yazdım ve işe yaramadı, herhangi bir öneriniz var mı? Teşekkürler

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 :

Merhaba Ange,

Elimden gelenin en iyisini yapmaya çalıştım, ama sanırım bu biraz daha karmaşık... Bunu yazdım ve işe yaramadı, herhangi bir öneriniz var mı? Teşekkürler

   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);
Test etmek için zaman yok ve bunun en iyi çözüm olduğunu iddia etmiyorum. Ama çalışması gerektiğini düşünüyorum.
 
angevoyageur :
Test etmek için zaman yok ve bunun en iyi çözüm olduğunu iddia etmiyorum. Ama çalışması gerektiğini düşünüyorum.
Denedim, ama şimdi önceki ve şimdiki bana çoğu zaman aynı sonucu veriyor
 
dr.house7 :
Denedim, ama şimdi önceki ve şimdiki bana çoğu zaman aynı sonucu veriyor
Üzgünüm zamanım yok ve bu durumda yardım etmeye çalışmak iyi bir fikir değil. zamanını harcıyorum .
 
angevoyageur :
Üzgünüm zamanım yok ve bu durumda yardım etmeye çalışmak iyi bir fikir değil. zamanını harcıyorum .
yine de teşekkürler
 
angevoyageur :
Üzgünüm zamanım yok ve bu durumda yardım etmeye çalışmak iyi bir fikir değil. zamanını harcıyorum .

Pardon ama "bu koşullar" ile ne demek istediniz?