OrderSend() 질문 - 페이지 2

 
Yedelkin :
아마 이 스레드를 놓쳤을 것입니다. KimV의 주문 확인 기능은 어디에서 찾을 수 있나요?
4기용이지만 보시면 도움이 될 것 같습니다. 그의 웹사이트에서 주문을 위한 라이브러리인 "무료 라이브러리" 섹션에서 찾을 수 있습니다.
 
-Alexey- :
4기용이지만 보시면 도움이 될 것 같습니다. 그의 웹사이트에서 주문을 위한 라이브러리인 "무료 라이브러리" 섹션에서 찾을 수 있습니다.

4에서 작동하지 않습니다. 나는 위치를 결정하는 데 사용

위치선택

추가 작업을 위해 열린 위치를 선택합니다. 함수가 성공적으로 완료되면 true를 반환합니다. 함수가 실패하면 false를 반환합니다. 오류에 대한 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다.

bool PositionSelect (
       기호       // 악기 이름
);

옵션

기호

【인】 금융 상품의 이름입니다.

반환 값

부울 값.

메모

기호 에 대해 한 번에 하나의 위치 만 열 수 있으며 이는 하나 이상의 거래 의 결과입니다. 위치와 활성 보류 주문 은 서로 혼동되어서는 안 되며, 이는 클라이언트 터미널의 "도구" 패널에 있는 "거래" 탭에도 표시됩니다.

PositionSelect() 함수는 위치 데이터를 환경에 복사하고 PositionGetDouble() , PositionGetInteger()PositionGetString() 에 대한 후속 호출은 이전에 복사한 데이터를 반환합니다. 즉, 위치 자체가 더 이상 존재하지 않을 수 있으며(또는 볼륨, 방향 등이 변경됨) 이 위치의 데이터를 계속 수신할 수 있습니다. 새로운 위치 데이터를 얻으려면 요청하기 직전에 PositionSelect() 함수를 호출하는 것이 좋습니다.

 
sergey1294 :

4에서 작동하지 않습니다. PositionSelect를 사용하여 위치 를 결정합니다.

PositionSelect() 함수를 사용할 때 "...함수가 실패하면 false를 반환"한다는 것이 문제입니다. 저것들. 위치가 없을 뿐만 아니라 PositionSelect() 함수가 실패 하면 false가 반환됩니다. 즉, OrderSend() 함수가 true를 반환하고 PositionSelect() 함수가 false를 반환하고 위치가 여전히 열려 있는 경우 상황이 제외되지 않습니다.
 
papaklass :
한 틱 내에서 또는 다른 틱에서 이러한 상황을 분석합니까?

그래서 다음부터 시작합니다.

틱은 상품 가격의 변동입니다. 이러한 변화의 빈도는 예측할 수 없습니다. 초당 몇 번에서 시간당 몇 번입니다. 따라서 OrderSend() 및 PositionSelect() 함수의 작동은 틱의 수명에 의존하지 않아야 합니다. 그리고 그렇다면 진드기의 행동(빈도)에 상관없이 주문의 중복 방지에 대한 통제(및 해당 상황 분석)가 이루어져야 한다고 생각합니다.

그래서 질문에 정확히 대답하기가 어렵습니다 :/

 
papaklass :

내 질문을 했을 때, 나는 다른 것을 의미했다. 다음 틱이 도착하면 OnTick() 이벤트 핸들러가 트리거됩니다. 그렇게 말하면서 내 질문을 다시 말하겠습니다.

하나의 OnTick() 호출 또는 다른 호출 내에서 이러한 상황을 분석합니까?

새로운 틱( 사용자 이벤트 )이 도착한 후 서버에 거래 요청을 보낼 필요가 있는 경우 이러한 요청의 성공 확인은 바로 들어오는 틱(이벤트 ). 즉, 귀하의 용어에 따르면 "OnTick()에 대한 한 번의 호출 내"[그리고 그러한 처리 중에 도착한(도착했어야 하는) 틱(이벤트)의 수에 관계없이].
 
papaklass :

글쎄, 나는 여전히 한 틱에 대답을 얻을 수 없습니다. 당신은 OrderSend()와 PositionSelect()를하고 있습니까?

OnTick() 트리거링의 한 틱이 아니라 두 틱 내에서 이러한 요청을 실행하도록 제안하고 싶습니다.

- 첫 번째 틱에서

저것들. 요청이 성공적으로 응답되면 포지션 개시 플래그를 buy=true로 설정하고 다음 틱(Optick()이 트리거됨) return 문까지 OnTick() 실행을 중단합니다.

- 두 번째 눈금에서 - PositionSelect().

이 옵션에서는 개설 위치가 중복되지 않습니다.

다음 틱에서 위치가 이미 열릴 것이라는 보장은 없습니다. 수동으로 주문할 때 위치를 여는 데 걸리는 시간을 측정하고,

주문 실행 제어를 OnTrade()로 이전하는 것이 좋습니다. 이 이벤트는 거래 작업 완료에 대한 서버의 응답으로만 생성됩니다.

주문당 4개의 OnTrade() 이벤트가 있는 이유는 명확하지 않지만?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 
papaklass :

글쎄, 나는 여전히 한 틱에 대답을 얻을 수 없습니다. 당신은 OrderSend()와 PositionSelect()를하고 있습니까?

귀하의 용어에 따르면 내 OrderSend() 및 PositionSelect() 함수가 "한 틱 내에서" 실행되는 것으로 나타났습니다.

파파클라스 :

...이 요청을 한 틱(OnTick() 트리거링)이 아닌 두 틱 내에서 실행하도록 제안하고 싶습니다.

- 첫 번째 틱에서

저것들. 요청이 성공적으로 응답되면 포지션 개시 플래그를 buy=true로 설정하고 다음 틱(OnTick() 작업) return 문 까지 OnTick() 실행을 중단합니다.

- 두 번째 눈금에서 - PositionSelect().

이 옵션에서는 개설 위치가 중복되지 않습니다.

이전 메시지보다 조금 앞서 OrderSend() 및 PositionSelect() 함수의 실행은 틱의 도착/미도착과 관련이 없다고 썼습니다. 그리고 그 이유를 간단히 설명했습니다. 따라서 "두 번째 눈금에서 - PositionSelect()"를 확인한다고 해서 가능한 모든 경우에 중복 주문을 방지할 수는 없습니다.

 
Urain :

주문당 4개의 OnTrade() 이벤트가 있는 이유는 명확하지 않지만?

이에 대한 OnTrade()에 대한 기사가 있습니다.

우크라이나 :

다음 틱에서 포지션이 이미 열릴 것이라는 보장은 없습니다...

여기 나는 거의 동일합니다.
 
papaklass :

글쎄, 나는 여전히 한 틱에 대답을 얻을 수 없습니다. 당신은 OrderSend()와 PositionSelect()를하고 있습니까?

OnTick() 트리거링의 한 틱이 아니라 두 틱 내에서 이러한 요청을 실행하도록 제안하고 싶습니다.

- 첫 번째 틱에서

저것들. 요청이 성공적으로 응답되면 포지션 개시 플래그를 buy=true로 설정하고 다음 틱(OnTick() 작업) return 문 까지 OnTick() 실행을 중단합니다.

- 두 번째 눈금에서 - PositionSelect().

이 옵션에서는 개설 위치가 중복되지 않습니다.

아니요 - 티크가 아닙니다. 1초에.

여기에서 단순화:

그래서 - 일시 중지가 없으면 연속으로 2개의 주문을 엽니다. 하지만 3초로 설정해놨는데 후회는 안함))) 그래도 이건 오더 오픈입니다.


 void OnTimer ()
{
  while( true )
  {
     zOrderSend ( _Symbol , 0.1 , ORDER_TYPE_BUY );

     Sleep ( 1 ); 

   if ( PositionSelect ( _Symbol )== true ) { break ;} 
  }
}
 

MT5의 주문 회계는 전체 과학입니다. OnTrade() 함수를 사용하여 Expert Advisor에서 거래 이벤트 처리

일시 중지가 없으면 다시 열지 않아도 되며 주문이 1초 더 오래 실행되는 상황이 항상 있을 수 있습니다.

추신: 그리고 마법을 잊지 마세요.