초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 645

 
Alexey Kozitsyn :
시간의 마지막 순서가 목록의 마지막 순서가 아니라고 가정하면 첫 번째 순서(0번)를 고려하지 않기 때문에 귀하의 예는 정확하지 않습니다.

먼저 시간별 마지막 주문의 티켓을 찾은 다음 수정이 있는 주기를 만듭니다. 이전에 찾은 마지막 주문의 티켓이 주기에서 발견되면 건너뜁니다.

마지막 주문의 티켓을 검색하려면 모든 주문의 전체 내역을 실행할 필요가 없습니다. 원하는 내역의 크기를 설정할 수 있습니다-하루, 2, 3, 일주일 ... "in place"는 더 짧고 검색 범위보다 빠른 시간의 모든 주문을 건너뜁니다. 예: 검색 기록의 크기가 1일로 설정됨 - 현재 시간 이전의 모든 주문 - 1일은 건너뜁니다. 그러나 주기는 여전히 필요합니다. 목록의 마지막 항목만 선택하면 매수가 될 수 있고 매도가 필요하기 때문입니다. 그리고 그는 마지막에서 두 번째 사람입니다. 따라서 우리는 더 이상 그의 데이터를 받지 않을 것입니다.

 
Artyom Trishkin :

먼저 시간별 마지막 주문의 티켓을 찾은 다음 수정이 있는 주기를 만듭니다. 이전에 찾은 마지막 주문의 티켓이 주기에서 발견되면 건너뜁니다.

마지막 주문의 티켓을 검색하려면 모든 주문의 전체 내역을 실행할 필요가 없습니다. 원하는 내역의 크기를 설정할 수 있습니다-하루, 2, 3, 일주일 ... "in place"는 더 짧고 검색 범위보다 빠른 시간의 모든 주문을 건너뜁니다. 예: 검색 기록의 크기가 1일로 설정됨 -현재 시간 이전의 모든 주문 - 1일은 건너뜁니다. 그러나 주기는 여전히 필요합니다. 목록의 마지막 항목만 선택하면 매수가 될 수 있고 매도가 필요하기 때문입니다. 그리고 그는 마지막에서 두 번째 사람입니다. 따라서 우리는 더 이상 그의 데이터를 받지 않을 것입니다.

Artem, 물론 설명에 감사드립니다. 하지만 목록에서 주문을 찾는 방법을 알고 있습니다. 그리고 내 대답은 당신에게가 아니라 Alexei의 예에 대한 것입니다 (특히, 조건 "> 0"이 작동하지 않는다는 사실에 대해).

mila.com을 올바른 방법으로 작성하는 것이 좋습니다(코드만 사용). 내가 게으른 :)

 
Alexey Kozitsyn :
시간의 마지막 순서가 목록의 마지막 순서가 아니라고 가정하면 첫 번째 순서(0번)를 고려하지 않기 때문에 귀하의 예는 정확하지 않습니다.

글쎄, 어떻게 고려하지 않습니까?

알렉세이 빅토로프 :

추가하다. 옵션: 루프 전에 _1 변수에 티켓을 작성합니다 (예: 0차 ).

/********************Script program start function********************/
void OnStart ()
{
  int i, t1, t2, modTicket , total = OrdersTotal ();
   datetime d1, d2;
     if ( OrderSelect ( 0 , SELECT_BY_POS ))
     {
      t1 = OrderTicket ();
       d1 = OrderOpenTime ();
     }    
     for (i = 1 ; i < total; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS ))
       {
        t2 = OrderTicket ();
         d2 = OrderOpenTime ();
          modOrder((d1 < d2) ? t1 : t2);
         t1 = d1 < d2 ? t2 : t1;
        d1 = d1 < d2 ? t2 : t1;
       }
     }
} /********************************************************************/

void modOrder( int ticket);
{
// здесь код модификации ордера.
} /********************************************************************/
나는 아무것도 엉망이 아니길 바랍니다. 다시한번 말하지만 확인을 안해봤네요...
 
Alexey Viktorov :

글쎄, 어떻게 고려하지 않습니까?

/********************Script program start function********************/
void OnStart ()
{
  int i, t1, t2, modTicket , total = OrdersTotal ();
   datetime d1, d2;
     if ( OrderSelect ( 0 , SELECT_BY_POS ))
     {
      t1 = OrderTicket ();
       d1 = OrderOpenTime ();
     }    
     for (i = 1 ; i < total; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS ))
       {
        t2 = OrderTicket ();
         d2 = OrderOpenTime ();
          modOrder((d1 < d2) ? t1 : t2);
         t1 = d1 < d2 ? t2 : t1;
        d1 = d1 < d2 ? t2 : t1;
       }
     }
} /********************************************************************/

void modOrder( int ticket);
{
// здесь код модификации ордера.
} /********************************************************************/
나는 아무 것도 엉망이 아니길 바랍니다. 다시한번 말하지만 확인을 안해봤네요...
시작으로 하면 잘 되겠지만 마지막부터 하는게 낫긴 한데... 주문을 지우지 않으면 그것도 정상입니다.
 
Alexey Kozitsyn :
시작으로 하면 잘 되겠지만 마지막부터 하는게 낫긴 한데... 주문을 지우지 않으면 그것도 정상입니다.

사실, 여러 주문을 수정하려면 무엇을 말하든 루프에서 정렬되어야 합니다. 따라서 추가 마이크로초는 주문 시작 시간을 비교하는 데만 사용됩니다. 그것이 최선의 선택이 될 것입니다.

그리고 주기의 방향은... 하지만 그건 전혀 상관없고, 주문 마감이 아닙니다. 이전 버전에서는 내가 속아서 클로저를 썼기 때문에 거기에 주기가 적절했다...

 

오늘의 좋은 시간!

지표를 작성 하려고 노력하고 있습니다. 내가 원했던 것 같습니다. 시각적으로 얻었지만 표시기가 필요한 정보, 정보(예: 텍스트 정보 또는 int 유형)를 전송하기를 원합니다. 라인이 구축되는 버퍼가 10개 있는 경우 이 작업을 수행하는 방법을 알려주십시오. 고맙습니다!

 

안녕하세요 ! 너무 세게 걷어차지 마세요. 하지만 이 섹션을 발견하고 몇 가지 질문을 하기로 결정했습니다. .. 내 터미널을 사용하여 .. 한 브로커에서 다운로드 MT4(1) .. 데모를 실행했습니다. ... 얼마 후 다른 브로커에 등록한 후, 또한

터미널을 다운로드하도록 제안했습니다. MT4보다 훨씬 더 잘 수행되었습니다.. 문제는 동일한 터미널에서 다른 브로커의 계정을 열 수 있는지 여부입니다. 모두 MT5로 전송할 수 있습니까? 지표는 MT4에서 5까지 적합합니까?

고맙습니다 ...

 

이러한 적극적인 도움, 대단히 감사합니다.

나는 이미 새로운 문제로 싸운다)

새로운 지그재그 탑의 등장 사실을 알 수 있도록 도와주세요.

변수의 첫 번째 최고 가격을 기억하고 비교 하고 가격이 변경되면 플래그를 높이면 새로운 최고가 있습니다.
if (newZZH1_PR!=GetExtremumZZPrice( Symbol (),T_F_, 1 ))
{
   newZZH1_PR=GetExtremumZZPrice( Symbol (),T_F_, 1 );
   newZZH1= true ;
}

그러나 시간이 지남에 따라 함수가 무작위로 반환된 다음 첫 번째 최고 가격, 두 번째 최고 가격이 차례로 반환되는 것으로 나타났습니다.

  새로운 봉우리가 형성되지 않았지만 깃발이 올라간 것으로 나타났습니다.
double GetExtremumZZPrice( string sy= "" , int tf= 0 , int ne= 0 )
{

   if (sy== "" || sy== "0" ) sy= Symbol ();
   double zz;
   int     i, k= iBars (sy, tf), ke= 0 ;

   for (i= 1 ; i<k; i++) {
    zz= iCustom (sy, tf, "ZigZag" , ExtDepth,ExtDeviation,ExtBackstep, 0 , i);
     if (zz!= 0 ) {
      ke++;
       if (ke>ne) return (zz);
    }
  }
   Print ( "GetExtremumZZPrice(): Экстремум ЗигЗага номер " ,ne, " не найден" );
   return ( 0 );
}
이상적으로는 항상 첫 번째 상단의 가격을 반환하도록 함수를 조정해야 하지만 어떤 솔루션이든 기쁘게 생각합니다.
 
mila.com :

이러한 적극적인 도움, 대단히 감사합니다.

나는 이미 새로운 문제로 싸운다)

새로운 지그재그 탑의 등장 사실을 알 수 있도록 도와주세요.

변수의 첫 번째 최고 가격을 기억하고 비교하고 가격이 변경되면 플래그를 높이면 새로운 최고가 있습니다.
if (newZZH1_PR!=GetExtremumZZPrice( Symbol (),T_F_, 1 ))
{
   newZZH1_PR=GetExtremumZZPrice( Symbol (),T_F_, 1 );
   newZZH1= true ;
}

그러나 시간이 지남에 따라 함수가 무작위로 반환된 다음 첫 번째 최고 가격, 두 번째 최고 가격이 차례로 반환되는 것으로 나타났습니다.

  새로운 봉우리가 형성되지 않았지만 깃발이 올라간 것으로 나타났습니다.
double GetExtremumZZPrice( string sy= "" , int tf= 0 , int ne= 0 )
{

   if (sy== "" || sy== "0" ) sy= Symbol ();
   double zz;
   int     i, k= iBars (sy, tf), ke= 0 ;

   for (i= 1 ; i<k; i++) {
    zz= iCustom (sy, tf, "ZigZag" , ExtDepth,ExtDeviation,ExtBackstep, 0 , i);
     if (zz!= 0 ) {
      ke++;
       if (ke>ne) return (zz);
    }
  }
   Print ( "GetExtremumZZPrice(): Экстремум ЗигЗага номер " ,ne, " не найден" );
   return ( 0 );
}
이상적으로는 항상 첫 번째 상단의 가격을 반환하도록 함수를 조정해야 하지만 어떤 솔루션이든 기쁘게 생각합니다.

지그재그에는 실제로 세 개의 버퍼가 있습니다. 0은 공통, 1은 상한, 2는 하한

0 막대에서 버퍼 중 하나에 항상 값이 있습니다. 첫 번째 버퍼(knee가 위쪽으로 향하는 경우) 또는 두 번째 버퍼(아래쪽인 경우)에 값이 있습니다. 따라서 현재 양초의 제로 버퍼에는 항상 첫 번째 버퍼 또는 두 번째 버퍼의 값이 있습니다.

분명히 상위 고정 극값을 찾으려면 막대 1에서 시작하여 첫 번째 버퍼의 비어 있지 않은 첫 번째 값을 찾아야 합니다. 하위 극값의 경우 두 번째 버퍼의 비어 있지 않은 첫 번째 값을 찾아야 합니다. , 마디 1부터 시작합니다.

이것이 새로운 상/하단임을 이해하기 위해서는 마지막으로 찾은 상/하단의 시간을 기억하고 현재 발견한 것과 비교해야 합니다.

혼란스럽겠지만 이해해주시길 바랍니다...

 
2개의 MT5 터미널이 있습니다. 작업: 한 터미널에서는 긴 거래만 허용되고 다른 터미널에서는 짧은 거래만 허용되도록 스크립트를 작성할 수 있습니까?
사유: