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

 

여러분, OrderSend 함수 오류의 매개변수 10으로 잘못된 정수는 무엇을 의미하며 어떻게 수정합니까?

 
Pyxlik2009 :

여러분, OrderSend 함수 오류의 매개변수 10으로 잘못된 정수는 무엇을 의미하며 어떻게 수정합니까?

발생하는 코드 줄을 제공하십시오.

 
Pyxlik2009 :

여러분, OrderSend 함수 오류의 매개변수 10으로 잘못된 정수는 무엇을 의미하며 어떻게 수정합니까?


만료 시간 e.b. 정수.
 
Roll :

만료 시간 d.b. 정수.
예, 설정에 분수도 없습니다.
 
sergey_r :
예, 바를 닫으라는 주문만 있고 현재 가격에 필요합니다. 현재 가격이 이전 가격 아래로 떨어지면 ... 그리고 여기에서는 가격이 이전 가격 아래로 닫힌 경우에만 주문이 이루어집니다.

이렇게 시도

 if (Bid< iLow ( NULL , 0 , 1 )


 
Pyxlik2009 :
예, 설정에 분수도 없습니다.

지정된 함수의 10번째 매개변수를 참조하십시오. 0으로 설정합니다.
 
paukas :
스크립트가 있습니다. 필요할 때 실행하면 됩니다.


예, 요점은 작업을 1회 수행하지 않는 것입니다. 요점은 이 스크립트를 실행하면 트리거된 지연기의 트리거링이 아니라 설정 시간을 읽는다는 것입니다.

따라서, 단말에 의한 보류 중인 트리거링의 바로 이 시간은 어디에도 저장되지 않는다. 이번에는 내장 MQL4 함수 PendingOrderFilledTime()이 있는 경우 사용하는 것이 이상적일 것이라는 점만 알면 됩니다. 이 경우 MT4 자체가 보류 중인 주문을 모니터링하고 완료된 결과를 제공합니다.

그래서 지금은 차트에 Expert Advisor나 루프 스크립트를 매달고 있는 것 외에는 아무 것도 볼 수 없습니다. 여기 왜 물어봤어? 아마도 누군가가 비슷한 문제를 겪었고 전문가나 스크립트 없이 사용 가능한 MQ4 도구만으로 우아하게 해결되었을 것입니다.


라자레프데니스 :

어드바이저에 만족하지 못하는 이유가 조금 이해가 되지 않습니다. 자체 최적화 기능이 있는 신경망에서 복잡한 거래 시스템을 만들지 않을 것이기 때문에 보류 중인 모든 틱이 있는지 확인해야 합니다. 화면에서 문자 메시지를 받거나 소리가 나거나 둘 다 작동하면 계산기가이 작업에 대처할 것입니다. 컴퓨터에 대해 걱정할 것이 없거나 쓰기에 문제가 있습니까?

고문을 작성하는 데 문제가 없습니다. 터미널이 제공해야 하는 정보를 얻기 위해 즉석 도구를 사용하고 싶지 않습니다. Expert Advisor는 문제에 대한 직접적인 솔루션입니다.

표준 MQ4 기능이 없는 모든 작업이 어드바이저에 의해 해결된 경우 그러한 어드바이저는 터미널에서 중단됩니다.. 그리고 이것은 좋지 않습니다. 체인에 추가적인 약한 링크를 생성하는 것입니다. 열려 있는 터미널이 많고 각각에 Expert Advisor가 필요한 경우, 거기에 있는지 없는지 확인하는 것이 불편하고 어리석은 일이라는 데 동의할 것입니다. 전문가 첨부 파일 검사를 작성하고 실행하도록 강제하는 것은 동일합니다. 누군가가 기존 MQL4 기능의 조합을 사용하여 유사한 문제를 이미 해결했다면 왜 그것을 복잡하게 만들까요?

 
Starting :
... 아마도 누군가가 이미 기존 MQL4 기능을 결합하여 유사한 문제를 해결했을 것입니다.
나는 그것을 읽고 논리를 이해하지 못했습니다. 자, 필요한 기능이 있다고 가정해 보겠습니다. 어떻게 사용하시겠습니까? 여전히 어드바이저나 스크립트에 삽입해야 합니다.
즉, 문제는 특수 기능이 없기 때문이 아니라(그리고 모든 재채기를 할 때마다 축복을 받을 수 없음) 요구 사항을 충족하는 코드 작성의 복잡성에 있습니다.
 
granit77 :
나는 그것을 읽고 논리를 이해하지 못했습니다. 자, 필요한 기능이 있다고 가정해 보겠습니다. 어떻게 사용하시겠습니까? 여전히 어드바이저나 스크립트에 삽입해야 합니다.
즉, 문제는 특수 기능이 없기 때문이 아니라(그리고 모든 재채기를 할 때마다 축복을 받을 수 없음) 요구 사항을 충족하는 코드 작성의 복잡성에 있습니다.

사용법은 간단합니다. cat 스크립트를 실행합니다. 가장 빠른 개장 시간으로 마지막 마감된 거래 에 대한 데이터를 씁니다. 트리거된 지연은 마감된 주문의 순위에 혼란을 가져옵니다. 스크립트가 실행되는 순간에는 보류 중 트리거에 대한 데이터를 가져올 장소가 없습니다. 역사에서 그들은 릴리스 날짜가 아니라 설정 날짜로 기록됩니다.


간단한 예입니다.

2011년 1월 1일 에 보류 주문 1이 접수되었습니다.

2011년 1월 2일 시장 주문 2가 개설되었습니다.

2011년 1월 3일에 보류 주문 1이 트리거되어 시장 주문 1이 되었으며 이에 대한 OrderOpenTime()은 2011년 1월 1일에 발행되지만 실제로는 2011년 3월 1일에 시장 주문이 되었습니다.

2011년 1월 4일 시장 주문 2가 마감되었습니다.

2011년 1월 5일 시장 주문 1이 마감되었습니다.

기록에서 시장 주문 2의 날짜 02.01.2011은 가장 늦은 시작 날짜와 함께 마지막 마감 주문의 시작 날짜로 제공됩니다.

사실, 마지막으로 마감된 주문의 가장 최근 개시(작업) 날짜가 보류 주문 1 - 01/03/2011을 실행했습니다.

이것은 전문가가 계정을 모니터링하지 않고 열린 시간까지 마감된 주문을 올바르게 정렬하기 위해 주문 실행의 현재 날짜를 얻을 수 있는지에 대한 질문입니다.


상황을 상상해보십시오. 거래 중이며 오래 전에 보류 주문이 설정되어 있습니다. 그래서, 그들 중 일부는 작동하고 잠시 후에 닫힙니다. 그러나 그들은 1 년 전에 무대에 올랐 어도 오늘만 작동하고 닫혔더라도 "털이 많은"제작 시간에 따라 고려됩니다. 그것은 필요합니다. 시장에서 실제로 열렸거나 작동한 것이 가장 마지막에 제공된 다음 마지막으로 제공됩니다. 한 번 설치된 모든 것이 최근에 실제로 열린 시장의 것과 섞이지는 않습니다. 제 질문에 관심을 가져주셔서 감사합니다.

 

여러분, 이 시간 기반 함수를 EA 코드에 삽입할 때 실수한 부분을 말하지 마십시오.

 int init()
  {
  
bool isTradeTimeInt ( int hb=05, int mb=50, int he=23, int me=00) 
    {
   datetime db, de;           // Время начала и окончания работы
   int       hc;               // Часы текущего времени торгового сервера

  db= StrToTime ( TimeToStr ( TimeCurrent (), TIME_MINUTES)+ " " +hb+ ":" +mb);
  de= StrToTime ( TimeToStr ( TimeCurrent (), TIME_MINUTES)+ " " +he+ ":" +me);
  hc= TimeHour ( TimeCurrent ());
   if (db>=de) {
     if (hc>=he) de+= 24 * 60 * 60 ; else db-= 24 * 60 * 60 ;
  

   if ( TimeCurrent ()>=db && TimeCurrent ()<=de) return (True);
   else return (False);
}
   return ( 0 );
  }

컴파일러에서 오류가 발생했습니다.