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

 

모두 오류를 찾았습니다. 어떤 사람들은 나중에 그가 얼마나 틀렸는지 이해하기 위해 자신의 질문에 목소리를 낼 필요가 있습니다.

불행히도 나도 그 캐릭터 중 하나입니다. (((

 
Konstantin Nikitin :

주문 보내기
주문선택

티켓 번호를 말씀하시는 것 같은데요?

"함정"이 있습니까?

 
Decromor :

인사말!


주문 번호로 OrderSelect 명령을 사용하여 주문에 액세스할 수 있습니다.

문제는 기존 주문의 수를 미리 알고 전체를 정렬하지 않도록 할 수 있습니까? 예를 들어, 새 주문을 열 때 이 번호를 기억하십시오.

내가 알기로 이 번호는 1부터 순서대로 할당되어 있습니다. 뉘앙스는 무엇입니까?

미리 감사드립니다.

  1. 주문 목록의 인덱스(루프에서 반복할 때) 또는 티켓(사전에 알려진 경우)으로 연락할 수 있습니다.
  2. 바람직하지 않음 - 장애가 발생한 경우(EA 재시작, 터미널 재부팅, 시스템 충돌 등) 저장된 티켓이 손실될 수 있습니다. 따라서 터미널의 전역 변수 나 파일에 저장해야 합니다. 이는 가능하지만 일반적인 열거보다 더 복잡합니다. 이 작업은 매 틱마다 수행되지 않고 필요할 때만 수행됩니다.
  3. 아니요. 1번부터 오름차순 - 테스터에서만.
  4. 물론이죠.
 
Artyom Trishkin :
  1. 주문 목록의 인덱스(루프에서 반복할 때) 또는 티켓(사전에 알려진 경우)으로 연락할 수 있습니다.
  2. 바람직하지 않음 - 장애가 발생한 경우(EA 재시작, 터미널 재부팅, 시스템 충돌 등) 저장된 티켓이 손실될 수 있습니다. 따라서 터미널의 전역 변수 나 파일에 저장해야 합니다. 이는 가능하지만 일반적인 열거보다 더 복잡합니다. 이 작업은 매 틱마다 수행되지 않고 필요할 때만 수행됩니다.
  3. 아니요. 1번부터 오름차순 - 테스터에서만.
  4. 물론이죠.

프로그램을 시작할 때 OnInit() 본문에서 OrdersTotal() 루프를 실행하고 미결 주문, 특히 OrderTicket()에 대한 모든 정보를 수집할 수 있습니까?

 string orders[][3];

int OnInit () {
   for ( int n = OrdersTotal () + 1 ; n >= 0 ; n--) {              
       if ( OrderSelect (n, SELECT_BY_POS , MODE_TRADES )) {
         int i = ( ArraySize (orders) / 3 );
         ArrayResize (orders, i + 1 );
         orders[i][ 0 ] = IntegerToString ( OrderTicket ());
         orders[i][ 1 ] = IntegerToString ( OrderType ());
         orders[i][ 2 ] = DoubleToString ( OrderOpenPrice (), Digits );   
      } 
   }
   return ( INIT_SUCCEEDED );
}


TP 또는 SP로 주문을 자동으로 마감할 때 이 주문의 데이터를 얻을 수 있습니까?

 
Decromor :

프로그램을 시작할 때 OnInit() 본문에서 OrdersTotal() 루프를 실행하고 미결 주문, 특히 OrderTicket()에 대한 모든 정보를 수집할 수 있습니까?


TP 또는 SP로 주문을 자동으로 마감할 때 이 주문의 데이터를 얻을 수 있습니까?

  1. 할 수 있다. 그 다음엔? 주문은 시간이 지남에 따라 변경될 수 있으며 초기화 중에 수집된 정보는 오래된 정보가 됩니다.
  2. 마지막으로 마감된 주문을 찾아 필요한 모든 정보를 얻어야 합니다.
 
Artyom Trishkin :
  1. 할 수 있다. 그 다음엔? 주문은 시간이 지남에 따라 변경될 수 있으며 초기화 중에 수집된 정보는 오래된 정보가 됩니다.
  2. 마지막으로 마감된 주문을 찾아 필요한 모든 정보를 얻어야 합니다.

BUY, SELL할 때 필요한 데이터를 어레이에 저장한 다음 이 어레이를 틱으로 비틀고 가격에 따라 필요한 변경을 수행합니다(SL을 손익분기점으로 이동, 반전 후 주문 마감 등 .) 티켓에서 원하는 주문을 참조하여.

하지만 내가 모르는 사이에 마감될 수 있는 TP 및 SL 주문이 있습니다. 매 틱마다 마지막으로 마감된 주문을 보고 내 배열에서 찾는 옵션은 이 배열을 조정하고 싶지 않습니다.

" 주문은 시간이 지나면서 변경될 수 있으며 초기화 과정에서 수집된 정보는 오래된 정보가 됩니다." 이것이 의미하는 것이라고 생각합니다 - 주문을 닫는 것?

틱당 2개의 사이클을 돌리고 주문과 OrdersTotal() 을 사용하여 광산을 만드는 옵션이 하나뿐이며 저도 마음에 들지 않습니다.

" 하지만 모든 틱마다 수행되는 것이 아니라 필요할 때만 수행되는 일반적인 열거보다 더 복잡합니다." 이 알고리즘을 공유하십시오.

 
Decromor :

프로그램을 시작할 때 OnInit() 본문에서 OrdersTotal() 루프를 실행하고 미결 주문, 특히 OrderTicket()에 대한 모든 정보를 수집할 수 있습니까?


TP 또는 SP로 주문을 자동으로 마감할 때 이 주문의 데이터를 얻을 수 있습니까?

그리고 한 줄로 번역하려면 어떻게 해야 하나요??? 문자열 유형 ?

 
Decromor :

프로그램을 시작할 때 OnInit() 본문에서 OrdersTotal() 루프를 실행하고 미결 주문, 특히 OrderTicket()에 대한 모든 정보를 수집할 수 있습니까?


TP 또는 SP로 주문을 자동으로 마감할 때 이 주문의 데이터를 얻을 수 있습니까?

 struct SOrders
{
     int ticket,
         type;
     double price;
} orders[];

int OnInit () {
   for ( int n = 0 ; n < OrdersTotal (); n++)
   {              
       if (! OrderSelect (n, SELECT_BY_POS , MODE_TRADES )) continue ;
       int i = ArraySize (orders);
       if ( ArrayResize (orders, i+ 1 ) < i+ 1 ) continue ;
      orders[i].ticket = OrderTicket ();
      orders[i].type   = OrderType ();
      orders[i].price  = OrderOpenPrice ();
   }
   return ( INIT_SUCCEEDED );
}
 
Konstantin Nikitin :
정보를 주셔서 대단히 감사합니다. 이것은 저에게 새로운 것입니다.
 
Alexey Viktorov :

그리고 한 줄로 번역하려면 어떻게 해야 하나요??? 문자열 유형 ?

왜냐하면 예를 들어 티켓은 Int 유형이고 price는 Double이며 배열은 한 유형만 가능합니다.