MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1252

 
ANDREY :
모두 좋은 하루!
mql4를 사용하여 MT-4 테스터에서 알고리즘을 테스트하고 있습니다. 소수점 이하 5자리로 입찰가를 기록하려면 Print() 함수가 필요합니다. 그리고 어떤 이유로 4자만 표시합니다. 내 실수를 수정하는 방법을 알려주십시오.
여기 내 코드가 있습니다.
무효 OnTick()
{
Print("=======입찰가 ======= ",NormalizeDouble(입찰가, 자릿수 ) );

}


동시에 Print()를 사용 하여 주문을 열고 닫는 가격(SL 및 TP 기준)을 인쇄하면 Print()는 5자(5자)로 가격을 인쇄합니다.
도움을 주셔서 감사합니다.

NormalizeDouble() 대신 DoubleToString( )

 
Igor Makanu :

내 결정이 마음에 들지 않는다고 말했어

다시 쓰기에는 너무 게으르다

google "배열 찾기 중복"-뭔가가 있다고 생각합니다.

 enum EResult{Ok,AllocError};

template < typename T>
EResult GetRepeat( const T &arr[],T &ret[], uint count){
   int size= ArraySize (arr);
   if ( ArrayResize (ret,size)!=size) return AllocError;
   int ii= 0 ;
   for ( int i= 0 ;i<size;){
      T tmp=arr[i];
       uint repeatCount= 1 ;
       while (++i<size&&arr[i]==tmp) ++repeatCount;
       if (repeatCount>=count) ret[ii++]=tmp;}
   return ArrayResize (ret,ii)==ii?Ok:AllocError;
}

void OnStart ()
{
   int arr[]={ 1 , 2 , 4 , 4 , 4 , 55 , 55 , 7 , 7 , 7 , 7 , 7 , 8 , 9 , 77 , 66 , 66 , 66 };
   int ret[];
   if (!GetRepeat(arr,ret, 3 )) ArrayPrint (ret);
} 
 
Artyom Trishkin :

NormalizeDouble() 대신 DoubleToString( )

정보 지원에 진심으로 감사드립니다.

 
동료 여러분, 어렵지 않아요 - 제 질문 좀 봐주세요
https://www.mql5.com/ru/forum/160683/page1251#comment_18219493
보다 구체적으로, 포지션이 열리는 분의 가치를 찾는 방법은 무엇입니까?
 
Aleksey Masterov :
보다 구체적으로, 포지션이 열리는 분의 가치를 찾는 방법은 무엇입니까?

TimeToStruct() 사용

https://www.mql5.com/ru/docs/dateandtime/timetostruct

 
Igor Makanu :

TimeToStruct() 사용

https://www.mql5.com/ru/docs/dateandtime/timetostruct

예, mt4에 있습니다.
 
Aleksey Masterov :
예, mt4에 있습니다.

그것은 mt4에서 작동합니다

 
Igor Makanu :

그것은 mt4에서 작동합니다

성공적으로 트리거되면 true를 반환하는 이 구조에서 위치가 열린 분의 값을 어떻게 알 수 있는지 아직 명확하지 않습니다...
 
Aleksey Masterov :
성공적으로 트리거되면 true를 반환하는 이 구조에서 위치가 열린 분의 값을 어떻게 알 수 있는지 아직 명확하지 않습니다...

datetime o_open = OrderOpenTime();

MqlDateTime dt_struct;

TimeToStruct( o_open, dt_struct);

정수 분 = dt_struct. 분;

 

어렵지 않다면 인디케이터 버퍼 데이터를 읽을 때 무엇이 잘못되었는지 이해하도록 도와주세요.

다음은 고문의 코드입니다.

      if (IsTesting())
         {
         Trend    = GlobalVariableGet(GV_tradesTrend);
         TrendUP  = iCustom(NULL,0,"Used\\# Once Trades Trend",3,0);
         TrendDN  = iCustom(NULL,0,"Used\\# Once Trades Trend",4,0);
         if (TrendUP>0) {Trend=1; GlobalVariableSet(GV_tradesTrend,1);}
         if (TrendDN>0) {Trend=-1;GlobalVariableSet(GV_tradesTrend,-1);}
         if (Trend==1)  {GlobalVariableSet(GV_Trend,1);}
         if (Trend==-1) {GlobalVariableSet(GV_Trend,-1);}
         if (Trend==0)  {GlobalVariableSet(GV_Trend,0);}
         }
      else
         {
         Trend = GetLastTrendChange();
         if (Trend==1)  {GlobalVariableSet(GV_Trend,1);}
         if (Trend==-1) {GlobalVariableSet(GV_Trend,-1);}
         if (Trend==0)  {GlobalVariableSet(GV_Trend,0);}
         }
//+----------------------------------------------------------------------------+
int GetLastTrendChange()
   {
   int    trendType= 0 ;
   int    y= 0 ;
   int    t= 500 ;
   while (y<t)
      {
       if ( iOpen ( NULL , 0 ,t)==y) { return ( 0 );}
      trendType=FindTrendChange(y);
       if (trendType== 1 || trendType==- 1 ) { return (trendType);}
      y++;
      }
   return ( 0 );
   }
//+----------------------------------------------------------------------------+
int FindTrendChange( int index)
   {
   double    trendUP,trendDN;
   int       trendType= 0 ;
   trendUP = iCustom ( NULL , 0 , "Used\\# Once Trades Trend" , 3 ,index);
   trendDN = iCustom ( NULL , 0 , "Used\\# Once Trades Trend" , 4 ,index);
   if (trendUP> 0 ) {trendType= 1 ;}
   if (trendDN> 0 ) {trendType=- 1 ;}
   return (trendType);
   }
//+----------------------------------------------------------------------------+

실생활과 테스트에서 함수를 통한 마지막 값 검색은 작동하지만 테스트 속도가 급격히 느려집니다(반년 테스트가 며칠 동안 늘어남).

따라서 테스트를 대체하고 전역 변수 에 마지막 값을 저장하기로 결정했습니다. EA는 버퍼 데이터를 보지 않습니다. 또한 빈 버퍼가 0이지만 어떤 이유로 EA 변수는 EMPTY_VALUE 값을 취하고 변경되지 않습니다.

통신

그리고 데이터 창의 버퍼 라인 위로 마우스를 가져가면 툴팁에 두 개의 값이 표시됩니다. 첫 번째 값은 0입니다(예: 값 5). 0.0000; 0.8855.

표시기 코드를 만지작거리고 있지만 어떤 식으로든 알아낼 수 없습니다. 인터넷 검색과 문서가 도움이 되지 않았습니다. 누군가 이 표시기에 액세스할 때 테스트가 왜 그렇게 느린지 말해 줄 수 있습니까?

도와주세요, 제발!

파일: