가장 가까운 날짜 찾기 - 페이지 2

 
angevoyageur :

그런 것?

다른 사람들 사이에서 유일한 해결책.

문제가 있습니다... 틱 데이터에만 사용할 수 있습니다. 그렇지 않으면 이전 최고값은 항상 =-1입니다.

그러나 주요 문제는 이전의 가장 높은 값이 =-1로 변경되었다는 것입니다.

지원에 다시 한 번 감사드립니다

문서

 
dr.house7 :

문제가 있습니다... 틱 데이터에만 사용할 수 있습니다. 그렇지 않으면 이전 최고값은 항상 =-1입니다.

그러나 주요 문제는 이전의 가장 높은 값이 =-1로 변경되었다는 것입니다.

지원에 다시 한 번 감사드립니다

문서

사용 중인 코드를 보여 주셔야만 도움을 드릴 수 있습니다.
 
angevoyageur :
사용 중인 코드를 보여 주셔야만 도움을 드릴 수 있습니다.

이것으로 충분합니까 아니면 전체 코드가 필요합니까?

지원해 주신 Ange님 감사합니다...

문서

 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 :

이것으로 충분합니까 아니면 전체 코드가 필요합니까?

지원해 주신 Ange님 감사합니다...

문서

네. 가장 높은 값이 touchline[0] 이면 내가 제안한 것이 작동하지 않는다는 것을 이제 깨달았습니다 . 따라서 이 경우 다른 방법을 찾아야 합니다(예: ArrayMaximum() 사용) .
 
angevoyageur :
네. 가장 높은 값이 touchline[0] 이면 내가 제안한 것이 작동하지 않는다는 것을 이제 깨달았습니다 . 따라서 이 경우 다른 방법을 찾아야 합니다(예: ArrayMaximum() 사용) .

안녕하세요 엔지,

나는 최선을 다했지만 이것은 조금 더 복잡하다고 생각합니다. 이것을 썼고 작동하지 않습니다. 어떤 제안이 있습니까? 감사해요

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 :

안녕하세요 엔지,

나는 최선을 다했지만 이것은 조금 더 복잡하다고 생각합니다. 이것을 썼고 작동하지 않습니다. 어떤 제안이 있습니까? 감사해요

   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);
테스트할 시간도 없고 최선의 솔루션인 척하지도 않습니다. 하지만 효과가 있어야 한다고 생각합니다.
 
angevoyageur :
테스트할 시간도 없고 최선의 솔루션인 척하지도 않습니다. 하지만 효과가 있어야 한다고 생각합니다.
시도했지만 지금은 이전과 현재가 대부분 동일한 결과를 제공합니다.
 
dr.house7 :
시도했지만 지금은 이전과 현재가 대부분 동일한 결과를 제공합니다.
죄송합니다. 시간이 없고 이러한 상황에서 도움을 주려는 것은 좋은 생각이 아닙니다. 나는 당신의 시간을 낭비하고 있습니다.
 
angevoyageur :
죄송합니다. 시간이 없고 이러한 상황에서 도움을 주려는 것은 좋은 생각이 아닙니다. 나는 당신의 시간을 낭비하고 있습니다.
어쨌든 고마워
 
angevoyageur :
죄송합니다. 시간이 없고 이러한 상황 에서 도움을 주려는 것은 좋은 생각이 아닙니다. 나는 당신의 시간을 낭비하고 있습니다.

죄송하지만 "이 조건"은 무엇을 의미했습니까?