[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 309

 
artmedia70 :

괜찮아요. 쓰레기는 스스로 치우는 것이 매너의 룰...

이 컨텍스트에서만 "쓰레기"가 지금 정리되어야 하는지 또는 그 반대인지 결정하는 방법: 이것은 쓰레기가 아닙니다. 이것은 추가 계산에 필요한 데이터입니다.

내가 알기로는 deinit()에서 스스로 정리해야 하지만... 거래 상품의 차트가 삭제될 때뿐만 아니라 Expert Advisor가 차트에서 제거될 때뿐만 아니라 작동 중인 TF가 변경됩니다. 이 경우 TF에 대해 누적된 모든 데이터가 손실되고 이전 시간 프레임으로 돌아갈 때 EA는 0 배열로 다시 작업을 시작합니다. 어드바이저의 매개변수를 변경할 때도 마찬가지입니다.

어떤 상황에서 "가비지 수집"은 배열 크기의 단순한 변경이 아니라 복잡한 논리적 프로세스임이 밝혀졌습니다.


글쎄요, 어렵지 않습니다. 루프에서 배열은 값으로 초기화되었습니다. 그런 다음 결과 배열로 작업했습니다. 작업이 끝나면 길이를 0으로 만듭니다. 의심스러운 경우 return(0) 직전의 코드 끝에서 수행할 수 있습니다.
 

아래에 로그 파일을 읽는 코드를 알려주세요. 날짜별 최신 로그 파일을 자동으로 읽고 인쇄합니다.

어디에:

 while (result> 0 ) {

파일은 부품에서 조립됩니다. 그러나 전체 파일이 필요하지 않으며 마지막 줄만 필요합니다. 수정하도록 도와주세요.

 void ReadWrite() {
   string tekTime=TimeStr1(CurTime(), 1 );
   string path= TerminalPath ()+ "\\logs\\" +tekTime+ ".log" ;
   string title= "Чтение из файла" ;
   string msg;
   int result;
   int handle=_lopen(path, 4 );
   if (handle< 0 ) {
      msg= "Ошибка открытия файла" ;
       //MessageBox(msg,title,MB_OK|MB_ICONERROR);
       Print (msg);
       return ;
   }
   result=_llseek (handle, 0 , 0 );
   string buffer= "" ;
   //string char="x                      ";
   string char = "x                                                                                                                                                                                                                                                         " ;
   int count= 0 ;
   result=_lread (handle, char , 250 );
   while (result> 0 ) {
      buffer=buffer+ char ;
       char = "x                                                                                                                                                                                                                                                         " ;
      count++;
      result=_lread (handle, char , 250 );
   }
   result=_lclose (handle);
   msg= StringTrimRight (buffer);
   //MessageBox(msg,title,MB_OK|MB_ICONINFORMATION);
   Print (msg);
}

//------------------расчет времени----------------
string TimeStr1( int taim, int tip)
{
   string sTaim;
   string sTaim1,sTaim2,sTaim3;
   if (tip== 1 ) 
   {
       int GD= TimeYear (taim);                  
       int MN= TimeMonth (taim);                  
       int DD= TimeDay (taim);  
      
      sTaim1 = DoubleToStr (GD, 0 );
       if (MN< 10 ) sTaim2 = StringConcatenate (sTaim2, "0" + DoubleToStr (MN, 0 ));
       else sTaim2 = StringConcatenate (sTaim2, DoubleToStr (MN, 0 ));
       if (DD< 10 ) sTaim3 = StringConcatenate ( "0" , DoubleToStr (DD, 0 ));
       else sTaim3 = DoubleToStr (DD, 0 );
      sTaim=sTaim1+sTaim2+sTaim3;
   }
   return (sTaim);
}
 
drknn :

글쎄요, 어렵지 않습니다. 루프에서 배열은 값으로 초기화되었습니다 . 그런 다음 결과 배열로 작업했습니다. 작업이 끝나면 길이를 0으로 만듭니다 . 의심스러운 경우 return(0) 직전의 코드 끝에서 수행할 수 있습니다.

나는 이해되지 않았다.

대화의 맥락에서(내가 이 대화의 전제 조건을 올바르게 이해했다면) 주기는 고문 자체의 작업입니다 . 결국, 매번 틱의 출현으로 배열은 새 값을 써야 하는지에 따라 증가하거나 변경되지 않은 상태로 유지됩니다.

예를 들어 사람뿐만 아니라 작업이 완료되었는지 확인하는 방법 은 시간 프레임을 변경했습니다. 예, 적어도 우연히 ... 이것은 deinit()를 유발하고 모든 데이터가 손실됩니다. EA는 새로운 TF( new cycle )에서 얻은 값을 기반으로 새로운 방식으로 누적( 동적 배열 에 쓰기)을 시작합니다.

나는 그것에 대해.

 
artmedia70 :

나는 이해되지 않았다.

대화의 맥락에서(내가 이 대화의 전제 조건을 올바르게 이해했다면) 주기는 고문 자체의 작업입니다 . 결국, 매번 틱의 출현으로 배열은 새 값을 써야 하는지에 따라 증가하거나 변경되지 않은 상태로 유지됩니다.

예를 들어 사람뿐만 아니라 작업이 완료되었는지 확인하는 방법 은 시간 프레임을 변경했습니다. 예, 적어도 우연히 ... 이것은 deinit()를 유발하고 모든 데이터가 손실됩니다. EA는 새로운 TF( new cycle )에서 수신된 값을 기반으로 새로운 방식으로 누적(동적 배열에 쓰기)을 시작합니다.

나는 그것에 대해.

세부 사항으로 들어가면 이 기능 을 사용할 수 있습니다. 초기화 해제 이유를 알려줍니다.
 

터미널의 한 가지 기능에 주목했습니다. 주문 이익 계산은 OrderSwap()을 고려하지 않습니다.


즉, 이익으로 주문을 마감하려면 다음 공식을 사용해야 합니다.

(OrderProfit()+OrderSwap()+OrderCommission())>0

커미션으로 작업한 적이 없고, 커미션은 데모에서 사용하지 않아 계정에서 확인할 수 없습니다.

내 계산이 정확합니까?

 
Zhunko :
세부 사항으로 들어가면 이 기능 을 사용할 수 있습니다. 초기화 해제 이유를 알려줍니다.

맞아요... :)

그녀를 잊었다. 자, 내 습관으로 속임수, 붐 유즈...

 
artmedia70 :

도움이 되는 ObjectGetValueByShift()

그리고 그곳에서 그녀와 어떻게 일할 것인지 - 당신 만이 알고 있습니다 ...


고마워, 친절한 사람!
 
두 가지 질문입니다.

1. 첫 번째 및 후속 변수 double ab=a*bdouble abc[10] 배열에 어떻게 쓰거나 입력합니까?
2. 배열에 열한 번째 변수를 쓰고 첫 번째 변수를 삭제하는 방법은 무엇입니까?

변수가 배열에 기록되는 순서(직접 또는 역)는 중요하지 않습니다. 산술 평균을 결정하려면 배열의 변수가 필요합니다.
 
보류 중인 주문 의 로트를 변경할 수 있는지 말해 줄 수 있습니까?
 
Parn25 :
보류 중인 주문의 로트를 변경할 수 있는지 알려줄 수 있습니까?


아니요

변경할 수 있는 모든 것은 여기에 설명되어 있습니다. https://docs.mql4.com/en/trading/OrderModify