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

 

splxgf :

DHP :

이 주기를 "촉진"하는 방법은 무엇입니까? 아주 오랫동안 계산합니다.
   if ( iHigh ( NULL , 60 ,i)>LOWprice && LOWprice> iLow ( NULL , 60 ,i)) if (LOWprice> bid) CountH++ else CountL++;

그리고 다음과 같이 더 좋습니다.

   if ( iHigh ( NULL , 60 ,i)>LOWprice) if (LOWprice> iLow ( NULL , 60 ,i)) if (LOWprice> bid) CountH++ else CountL++;

높은 값과 낮은 값의 배열을 형성하는 아이디어도 있습니다. 아마도 이것은 일을 조금 더 빠르게 할 것입니까?

 
abolk :


주문이 선택되었습니다. https://docs.mql4.com/ru/trading/OrderSelect - 루프에서 정렬하거나 티켓으로 선택

그런 다음 Order*() 함수는 해당 주문 매개변수를 찾습니다.

물론 어리석은 질문에 대해서는 죄송하지만:

OrderSelect 함수 에서 선택을 위한 데이터 소스가 MODE_HISTORY를 사용하는 경우 즉, 주문이 마감된 주문과 삭제된 주문 중에서 선택했는데 마지막으로 마감된 주문의 번호를 찾는 방법은 무엇입니까? 프로그램에서 어떻게 번호가 매겨집니까? 마지막에서 처음으로 또는 그 반대로?

 
Xaoss1990 :

물론 어리석은 질문에 대해서는 죄송하지만:

OrderSelect 함수 에서 선택을 위한 데이터 소스가 MODE_HISTORY를 사용하는 경우 즉, 주문이 마감된 주문과 삭제된 주문 중에서 선택했는데 마지막으로 마감된 주문의 번호를 찾는 방법은 무엇입니까? 프로그램에서 어떻게 번호가 매겨집니까? 마지막에서 처음으로 또는 그 반대로?


인터넷에 이런 질문이 많다.

http://forum.alpari.ru/showthread.php?t=27708

 
Xaoss1990 :

물론 어리석은 질문에 대해서는 죄송하지만:

OrderSelect 함수 에서 선택을 위한 데이터 소스가 MODE_HISTORY를 사용하는 경우 즉, 주문이 마감된 주문과 삭제된 주문 중에서 선택했는데 마지막으로 마감된 주문의 번호를 찾는 방법은 무엇입니까? 프로그램에서 어떻게 번호가 매겨집니까? 마지막에서 처음으로 또는 그 반대로?


마지막으로 마감된 주문을 검색하는 기능은 최대 마감 시간으로 주문을 검색하는 기능과 유사합니다.
 
LazarevDenis :


인터넷에 이런 질문이 많다.

http://forum.alpari.ru/showthread.php?t=27708

영형! 찾음:

주문 선택 ( HistoryTotal ()-1,SELECT_BY_POS,MODE_HISTORY);

모든 것이 정답이죠?!

 
DhP :

이 주기를 "촉진"하는 방법은 무엇입니까? 아주 오랫동안 계산합니다.

소환:

   INS = True;
   
   for ( int i= 1 ; i<= 6000 ; i++)
   {
       if (INS)
      {
         if (LOWprice > iHigh ( NULL , 60 ,i))
         {
            INS = False;
            UPP = True;
            LOW = False;
             continue ;
         }
         if (LOWprice < iLow ( NULL , 60 ,i))
         {
            INS = False;
            UPP = False;
            LOW = True;
             continue ;
         }
      }
       else
      {
         if (UPP)
             if (LOWprice > iHigh ( NULL , 60 ,i))
               continue ;
             else
             if (LOWprice < iLow ( NULL , 60 ,i))
            {
               // INS = "False"
               UPP = False;
               LOW = True;
               continue ;
            }
         if (LOW)
             if (LOWprice < iLow ( NULL , 60 ,i))
               continue ;
             else
             if (LOWprice > iHigh ( NULL , 60 ,i))
            {
               // INS = "False"
               UPP = True;
               LOW = False;
               continue ;
            }
         
         INS = True;
      }
      
      if (LOWprice > Bid)
         CountH++;
       else
         CountL++;
   }

논리는 다음과 같습니다. 가격은 내부보다 역사적 막대 외부에 있는 경우가 더 많습니다.

INS = "내부".

나는 종이에 있는 코드의 정확성을 확인했다. 나는 코드의 속도를 테스트하지 않았습니다. 그러나 부울이 좋은 이점을 제공한다고 확신합니다.

 
MaxZ :

소환:

논리는 다음과 같습니다. 가격은 내부보다 역사적 막대 외부에 있는 경우가 더 많습니다.

INS = "내부".

추신: 나는 종이에 있는 코드의 정확성을 확인했습니다. 나는 코드의 속도를 테스트하지 않았습니다. 그러나 부울이 좋은 이점을 제공한다고 확신합니다.


응.

마찬가지로 코드의 세 줄의 명확한 코드가 이해하기 어려운 코드로 변환되도록 왜곡되어야 합니다.

수표 iLow , iHigh 를 분할하려는 아이디어가 있었다면 즉시 분할할 수 있습니다.

           if (LOWprice> bid) if ( iHigh ( NULL , 60 ,i)>LOWprice ) if ( LOWprice> iLow ( NULL , 60 ,i))CountH++;  
           if (LOWprice<=bid) if ( iHigh ( NULL , 60 ,i)>LOWprice ) if ( LOWprice> iLow ( NULL , 60 ,i))CountL++;
그리고 아무것도 하지 않는다
 
      int HourPrices[20000];     
      for ( int i= 1 ; i<= 6000 ; i++)
	for (double cPrice=iLow(NULL,60,i);cprice<=iHigh(NULL,60,i);cPrice+=Point)
	  HourPrices[cPrice/Point]+=1;

그러한 어레이에서 저항 레벨을 찾는 것은 문제가 되지 않습니다. 그렇게 하는 동안 새 막대 를 추가하고 이전 막대를 제거합니다. 그리고 그것으로부터 정보를 선택하는 것은 하나의 조건을 가진 2개의 사이클이며, 그렇지 않으면 ArrayMaximum이 즉시 원하는 값을 줄 것입니다.

 
abolk :


응.

마찬가지로 코드의 세 줄의 명확한 코드가 이해하기 어려운 코드로 변환되도록 왜곡되어야 합니다.

수표 iLow, iHigh를 분할하려는 아이디어가 있다면 즉시 분할할 수 있습니다.

그리고 아무것도 하지 않는다

위에서 제안한 유사한 옵션(만약 다른 경우).

그리고 당신은 내 생각을 이해하려고하지 않았습니다 (간단하게 논리를 설명했지만) ... 가격이 높을 때 우리는 두 번 대신 한 번 확인합니다. 가격이 낮은 경우에도 마찬가지입니다. 그리고 가격이 역사적 막대 안에 있을 때(아주 드문 일입니다. 그것이 논리와 아이디어입니다!), 우리는 두 가지 확인을 합니다(다른 방법은 없습니다).

수표는 내부가 아니라 막대 외부에 가격이 있는지 확인하는 것입니다. 예전에는 건초더미 속 바늘을 찾아다녔는데, 나, 다른 바늘이 안 보이면 안 찾더라... 필요할 때 바늘 자체가 보인다! :)))

 
MaxZ :

위에서 제공한 유사한 변형(if'를 구분하기 위해).

그리고 당신은 내 생각을 이해하려고하지 않았습니다 (간단하게 논리를 설명했지만) ... 가격이 높을 때 우리는 두 번 대신 한 번 확인합니다. 가격이 낮은 경우에도 마찬가지입니다. 그리고 가격이 역사적 막대 안에 있을 때(아주 드문 일입니다. 그것이 논리와 아이디어입니다!), 우리는 두 가지 확인을 합니다(다른 방법은 없습니다).

         if (LOWprice > iHigh ( NULL , 60 ,i)) continue;
         if (UPPprice < iLow ( NULL , 60 ,i)) continue;
귀하의 버전은 작성자 버전에 추가된 이 두 줄로 축소할 수 있으며, 원칙적으로 조건을 약간 변경하면 속도가 빨라집니다.
사유: