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

 
artmedia70 :

예를 들어 Expert Advisor의 이름, 통화 쌍 및 설치된 TF를 기반으로 Expert Advisor에게 고유한 마법을 자동으로 할당하는 기능:

부르다:



그리고 여기에서 CRC32를 사용하여 마법을 할당할 수도 있으므로 확실히 고유합니다. 또는 인터넷을 통해 이전에 저장하거나 다른 터미널에서 수신한 모든 데이터의 무결성을 신속하게 확인할 수 있습니다. 이 경우 모든 기능을 darb)))) 현명하게 사용).

int crc_table[ 256 ];
 
/* Run this function previously */
void make_crc_table() 
{
     for ( int i = 0 ; i < 256 ; i++) {
         int c = i;
         for ( int j = 0 ; j < 8 ; j++) {
             if (c & 1 != 0 )
               c = 0xEDB88320 ^ (c >> 1 );
             else 
               c = c >> 1 ;
        }
        crc_table[i] = c;
    }
}
 
bool table_filled = false ;

int crc32( string buf) 
{
     if (!table_filled)
    {
      make_crc_table();
      table_filled = true ;
    }
    
     int len = StringLen (buf);
    
     int c = 0xFFFFFFFF ;
     for ( int i = 0 ; i < len; i++) {
        c = crc_table[(c ^ StringGetChar(buf,i)) & 0xFF ] ^ (c >> 8 );
    }
     return (c ^ 0xFFFFFFFF );
}
 
alsu :

그리고 여기서 CRC32를 사용하여 마법을 할당할 수도 있으므로 확실히 고유합니다. 또는 인터넷을 통해 이전에 저장하거나 다른 터미널에서 수신한 모든 데이터의 무결성을 신속하게 확인할 수 있습니다. 이 경우 모든 기능을 darb)))) 현명하게 사용).


Alexey, 흥미롭고 잘 작성된 기능에 감사드립니다. 내가 볼게요. 나는 어떻게 든 비슷한 생각에 대해 생각하고 여기 당신이 있습니다 ..

보릴루나드 :


빅터, 나도 부두에서 당신을 찾았어요. 그래서 수동 거래에 사용했던 CodeBase의 지표에서 이러한 코드를 보았습니다. 이 모든 것이 만병 통치약과는 거리가 멀다는 것이 밝혀졌습니다. 그래서 거의 모든 지표를 버리고 이제 Expert Advisor가 자체 지표가 되었으며 다른 것은 거의 필요하지 않습니다!

그건 그렇고, 나는 기지를 파고 많은 것을 배웠습니다! Dock의 모든 것을 이해하려면 이미 Dock이 되어야 합니다! 자세한 내용은 교과서에 있지만 많이 부족합니다!


보리스, 저는 실제로 지표를 직접 사용하지 않습니다. mashki가 아니면 문자열 함수는 다른 용도로 필요합니다. 위에서 그것에 대해 썼습니다. 여기:

호즈 :

여기와 같이 비뚤어진 코드를 읽지 않으려면 https://www.mql5.com/en/articles/1524

(그곳에서 나는 잼 팩을 발견했습니다. 그리고 작성자가 이 코드를 작성할 때 무슨 생각을 했는지는 전혀 분명하지 않습니다.)

이 옵션의 알고리즘을 알려주세요. 보류 중인 주문이 예를 들어 추세선을 따라 개체를 따라 늘어납니다. 아니면 대기 중인 주문이 뒤에 있었는지...

일반적으로 어떻게 구현됩니까? 정말 이해가 안되는 부분이 있습니다.

객체를 생성해야 한다는 사실은 분명합니다. 그러나 가격이 개체 "뒤에" 있는 경우 .. 무언가를 하거나 가격이 라인에 있는 경우 해당 주문에 대해 보류 중이라는 것을 어떻게든 표시해야 합니다.

 

친구, 말해.

터미널이 하는 모든 것을 쓰는 프로그램이 있습니까?

또는 어드바이저가 서버에 관계없이 로그를 작성 하게 하는 방법은 무엇입니까?

 
polycomp :
설명 감사합니다! 라이브러리에서 정적을 사용해서는 안되는 것 같습니다.


그리고 그들 밖에서도 가치가 없습니다. MT4에서 정적 변수는 절대 다시 초기화되지 않습니다.
 
herhuman :

어드바이저가 서버에 관계없이 로그를 작성하게 하는 방법은 무엇입니까?

그는 한다.
 
hoz :


우선, 원하는 것을 명확하게 공식화하십시오. 기하학적 접근을 환영합니다.
 
hoz :


Alexey, 흥미롭고 잘 작성된 기능에 감사드립니다. 내가 볼게요. 나는 어떻게 든 비슷한 생각에 대해 생각하고 여기 당신이 있습니다 ..


보리스, 저는 실제로 지표를 직접 사용하지 않습니다. mashki가 아니면 문자열 함수는 다른 용도로 필요합니다. 위에서 그것에 대해 썼습니다. 여기:


빅터, 그는 이것도 하지 않았고, 베이스에서 이것을 많이 봤습니다. 내가 이해하는 한 선과의 가격 교차점은 점과 유사합니다. 또한 주문 및 위치 등의 매개변수와 선 교차를 감지합니다. 파기!
 

친애하는 이여, 이 질문에 대한 답을 초보자 에게 알려주십시오.

if ((((입찰가>1.2153)&&(입찰가<1.2160) || (입찰가>1.2173)&&(입찰가<1.2180))) || ((입찰가>1.2100)&&(입찰가<1.2107) || (입찰가> 1.2094)&&(입찰가<1.2101)) || (((입찰가>1.2092)&&(입찰가<1.2099) || (입찰가>1.2091)&&(입찰가<1.2098))||((입찰가>1.2073)&&(입찰가< 1.2080)||(Bid>1.2005)&&(Bid<1.2012)))))) // 가격이 if 헤더에 나열된 조건 중 하나와 일치하는 경우

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // 주문을 엽니다 .

비반복 조건의 데이터가 약 3000개 정도 있으므로 모두 1차원 배열에 넣습니다.

이중 배열 [3000];

if ((Bid==masiv[5]) // 가격 이 인덱스가 5 인 배열 요소의 값에 해당하는 경우

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // 주문을 엽니다 .

Q: 다음 명령을 작성하는 코드는 무엇입니까?

가격이 3000 개의 반복되지 않는 배열 값 중 하나 의 값과 일치하는 경우 double masiv [3000]

주문을 엽니다.

가장 간단한 옵션은 if(.....) 헤더에 3000개의 조건을 넣는 것입니다.

그러나 아마도 더 간결한 코드 옵션이 있을 것입니다.

도와 주셔서 감사합니다.


 
solnce600 :

친애하는 이여, 이 질문에 대한 답을 초보자 에게 알려주십시오.

if ((((입찰가>1.2153)&&(입찰가<1.2160) || (입찰가>1.2173)&&(입찰가<1.2180))) || ((입찰가>1.2100)&&(입찰가<1.2107) || (입찰가> 1.2094)&&(입찰가<1.2101)) || (((입찰가>1.2092)&&(입찰가<1.2099) || (입찰가>1.2091)&&(입찰가<1.2098))||((입찰가>1.2073)&&(입찰가< 1.2080)||(Bid>1.2005)&&(Bid<1.2012)))))) // 가격이 if 헤더에 나열된 조건 중 하나와 일치하는 경우

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // 주문을 엽니다 .

비반복 조건의 데이터가 약 3000개 정도 있으므로 모두 1차원 배열에 넣습니다.

이중 배열 [3000];

if ((Bid==masiv[5]) // 가격 이 인덱스가 5인 배열 요소의 값에 해당하는 경우

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // 주문을 엽니다 .

Q: 다음 명령을 작성하는 코드는 무엇입니까?

가격이 3000 개의 반복되지 않는 배열 값 중 하나 의 값과 일치하는 경우 double masiv [3000]

주문을 엽니다.

가장 간단한 옵션은 if(.....) 헤더에 3000개의 조건을 넣는 것입니다.

그러나 더 간결한 코드 옵션이 있을 수 있습니다.

도와 주셔서 감사합니다.




필요한 경우 솔루션을 찾을 수 있습니다. 예를 들어, 정수 정렬된 배열로 이동합니다. 원하는 값을 찾으십시오.
 
solnce600 :

친애하는 이여, 이 질문에 대한 답을 초보자 에게 알려주십시오.

if ((((입찰가>1.2153)&&(입찰가<1.2160) || (입찰가>1.2173)&&(입찰가<1.2180))) || ((입찰가>1.2100)&&(입찰가<1.2107) || (입찰가> 1.2094)&&(입찰가<1.2101)) || (((입찰가>1.2092)&&(입찰가<1.2099) || (입찰가>1.2091)&&(입찰가<1.2098))||((입찰가>1.2073)&&(입찰가< 1.2080)||(Bid>1.2005)&&(Bid<1.2012)))))) // 가격이 if 헤더에 나열된 조건 중 하나와 일치하는 경우

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // 주문을 엽니다 .

비반복 조건의 데이터가 약 3000개 정도 있으므로 모두 1차원 배열에 넣습니다.

이중 배열 [3000];

if ((Bid==masiv[5]) // 가격 이 인덱스가 5인 배열 요소의 값에 해당하는 경우

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // 주문을 엽니다 .

Q: 다음 명령을 작성하는 코드는 무엇입니까?

가격이 3000 개의 반복되지 않는 배열 값 중 하나 의 값과 일치하는 경우 double masiv [3000]

주문을 엽니다.

가장 간단한 옵션은 if(.....) 헤더에 3000개의 조건을 넣는 것입니다.

그러나 아마도 더 간결한 코드 옵션이 있을 것입니다.

도와 주셔서 감사합니다.



주기:

   double massiv[];  
//----------------------------------------------------------------------
   for ( int i= 0 ; i< ArrayRange (massiv, 0 ); i++) {
       if ( MathAbs ( NormalizeDouble (Bid-massiv[i], Digits ))<= 0.5 * Point ) {
         // цена примерно совпадает со значением в massiv[i]
         // ... обрабатываем совпадение
         }
      }
//----------------------------------------------------------------------