OnTradeTransaction 기능에 대한 질문 - 페이지 2

 
Mikalas :

예, OnTradeTransaction을 사용할 수 없지만 기록을 파헤쳐야 하므로 고문의 전반적인 성능이 크게 저하됩니다.

모든 개발자에게 선택권이 있습니다!

그래서 이 방향으로 파고들기 시작했습니다...

명확하게 해 주셔서 감사합니다. 나는 더 파헤칠 것이다. 아무도 서두르지 않습니다. :)))))

 
AlexeyVik :

그래서 이 방향으로 파고들기 시작했습니다...

명확하게 해 주셔서 감사합니다. 나는 더 파헤칠 것이다. 아무도 서두르지 않습니다. :)))))

사실 제가 제시한 예시는 TradeTransaction 이벤트가 발생하지 않는다는 사실에 대한 보험 일 뿐입니다.

사실 하루 2000건의 거래가 있는 실계좌 로 상담원의 6개월 일상 업무에서

"긴급" 상황이 발생한 적이 없습니다!

행운을 빕니다!

 
C-4 :
마치 우리 모두 이해하고 기쁨에 손뼉을 치는 것처럼. 죄송합니다. 하지만 악마가 코드에서 다리를 부러뜨릴 것입니다.

예, 완전히 잊었습니다, Vasily!

코드는 100% 작동합니다. 데모에서 EA를 삭제하고 작동 방식을 확인하세요.

일반 모드에서 OnTradeTransaction 기능 을 주석 처리하면

"비상" 모드가 어떻게 작동하는지 볼 수 있습니다.

 
AlexeyVik :

즉, 비동기를 사용하지 않으면 올빼미가 서버의 응답을 기다리기 때문에 OnTradeTransaction 핸들러가 필요하지 않습니다.

복잡하지 마십시오. FORTS에서 거래하기 위해 비동기를 사용할 필요가 없습니다. 시작하려면 이 기사 , 3장: "비동기 작업의 기본"을 확인하십시오. 많지 않고 아주 기본적인 것이 있지만 학습을 시작하기에 충분합니다. 여기에 설명된 코드는 100% 비동기식이지만 OnTradeTransaction 및 기타 이벤트를 수신하지 않고 동기식 모드에서 작동하는 것을 막지는 않습니다.

알렉세이 비크 :

그러나 지금까지 중지 명령이 활성화되었는지 확인하는 가장 좋은 방법을 찾지 못했습니다. 예를 들어, 시장 Buy 0.1과 SellStop 0.3이 설정되어 있고 0.3이 활성화되면 0.2가 남고 어느 시점에서 모니터링해야 하는지 ... 각 틱에서 두 개의 주문을 모니터링해야 하는 것으로 나타났습니다. 그리고 올빼미를 언로드하고 트랜잭션이 완료된 후에만 제어하고 싶었습니다. 통제조차 하지 말고, 일단 일어난 일을 확인하고 어떻게 할지 결정하세요. 하지만 분명히 운명은 아닌 것 같습니다 ... 오래된 입증 된 방법으로 돌아가는 것이 아마도 더 나을 것입니다 ...

솔루션은 작업에서 나와야 합니다. MetaTrader 5에서는 한 번에 하나의 활성 포지션만 있으므로 계속 주시하십시오. 주문 내역에 들어갈 필요가 없습니다. 주문 내역이 여전히 필요하면 작업을 명확히 해야 합니다.

 
Mikalas :

예, 완전히 잊었습니다, Vasily!

코드는 100% 작동합니다. 데모에서 EA를 삭제하고 작동 방식을 확인하세요.

일반 모드에서 OnTradeTransaction 기능 을 주석 처리하면

"긴급" 모드가 어떻게 작동하는지 볼 수 있습니다.

코드를 더 자세히 살펴보십시오. 당신은 그것을 어렵게 만들고 있습니다. "비상" 모드가 없어야 합니다. 동기식 또는 비동기식 거래 유형에 관계없이 거래 환경 분석에 집중해야 합니다. OnTradeTransaction 유형의 이벤트 분석은 보조적인 성격을 띠고 있습니다.

미칼라스 :

예, OnTradeTransaction을 사용할 수 없지만 기록을 파헤쳐야 하므로 고문의 전반적인 성과가 크게 저하됩니다.

모든 개발자에게는 선택권이 있습니다!

사실이 아니다. 기록 분석은 Expert Advisor의 성능을 저하시키지 않습니다. 긴 CheckOrder() 대신 다음과 같이 작성하면 충분합니다(실제 작업 코드).

 ///
/// Отслеживает поступление новых трейдов в истории трейдов.
///
void TrackingHistoryDeals()
{
    int total = HistoryDealsTotal ();
    //Перебираем все доступные трейды и формируем на их основе прототипы будущих позиций типа COrder
    for (; dealsCountNow < HistoryDealsTotal (); dealsCountNow++)
    {  
         ulong ticket = HistoryDealGetTicket (dealsCountNow);
        AddNewDeal(ticket);
        graphRebuild = true ;
    }
}

모두. 새 거래의 도착은 TrackingHistoryDeals() 함수에 의해 자동으로 감지되며, 이 함수는 차례로 시스템 타이머에 의해 호출됩니다. 가속을 얻고 설정된 타이머 해상도에 의존하지 않으려면 이 함수는 예를 들어 TRADE_TRANSACTION_DEAL_ADD 이벤트가 발생할 때 OnTradeTransaction()에서도 호출되어야 합니다. 이벤트가 손실되더라도 나쁜 일은 일어나지 않을 것입니다. 잠시 후(저는 200밀리초가 있음) Expert Advisor가 변경된 사항에 대해 학습하고 다음 타이머 호출을 기다리며 주문 트리거에 대해 안전하게 학습합니다.

 
C-4 :

코드를 더 자세히 살펴보십시오. 당신은 그것을 어렵게 만들고 있습니다. "비상" 모드가 없어야 합니다. 동기식 또는 비동기식 거래 유형에 관계없이 거래 환경 분석에 집중해야 합니다. OnTradeTransaction 유형의 이벤트 분석은 보조적인 성격을 띠고 있습니다.

사실이 아니다. 기록 분석은 Expert Advisor의 성능을 저하시키지 않습니다. 긴 CheckOrder() 대신 다음과 같이 작성하면 충분합니다(실제 작업 코드).

모두. 새 거래의 도착은 TrackingHistoryDeals() 함수에 의해 자동으로 감지되며, 이 함수는 차례로 시스템 타이머에 의해 호출됩니다. 가속을 얻고 설정된 타이머 해상도에 의존하지 않으려면 이 함수는 예를 들어 TRADE_TRANSACTION_DEAL_ADD 이벤트가 발생할 때 OnTradeTransaction()에서도 호출되어야 합니다. 이벤트가 손실되더라도 나쁜 일은 일어나지 않을 것입니다. 잠시 후(저는 200밀리초가 있음) Expert Advisor가 변경된 사항에 대해 학습하고 다음 타이머 호출을 기다리며 주문 트리거에 대해 안전하게 학습합니다.

우리는 "다른 언어"로 당신과 대화합니다.

당신의 의견을 따르십시오. 그리고 당신의 허락하에 나는 내 의견에 남을 것입니다.

당신은 명백한 것을 보지도 않습니다.

TradeTransaction 이벤트의 출현으로 아무것도 확인할 필요가 없습니다. 모든 데이터가 이미 있습니다!

TradeTransaction 이벤트가 도착하면 CheckOrder() 함수가 전혀 작동하지 않습니다!!!

 
Mikalas :

우리는 "다른 언어"로 당신과 대화합니다.

당신의 의견을 따르십시오. 그리고 당신의 허락하에 나는 내 의견에 남을 것입니다.

아니요, 우리는 MQL5와 비동기 OrderSendAsync 방언과 같은 언어를 사용합니다. 좋든 싫든 Async를 사용하는 작업은 동일하게 해결해야 합니다. 위의 제 을 보세요. 비동기식 코드 - 외부 전문가와 동기식으로 상호 작용합니다. 사실, 다형성의 사소하지 않은 표현입니다. 이는 이 코드 에서 거래 환경의 변화 분석 에 중점을 두고 있기 때문입니다. 이는 이벤트 모델이 유용하지만 부차적이라는 것을 다시 한 번 증명합니다. 이 모델 없이는 비동기 작업 없이도 할 수 있습니다.
 
C-4 :
아니요, 우리는 MQL5와 비동기 OrderSendAsync 방언과 같은 언어를 사용합니다. 좋든 싫든 Async를 사용하는 작업은 동일하게 해결해야 합니다. 위의 제 을 보세요. 비동기식 코드 - 외부 전문가와 동기식으로 상호 작용합니다. 사실, 다형성의 사소하지 않은 표현입니다. 이는 이 코드 에서 거래 환경의 변화 분석 에 중점을 두고 있기 때문입니다. 이는 이벤트 모델이 유용하지만 부차적이라는 것을 다시 한 번 증명합니다. 이 모델 없이는 비동기 작업 없이도 할 수 있습니다.
Vasily, 계속하지 말고 데모 예제를 실행하십시오. 그러면 모든 것을 이해할 수 있을 것입니다!
 
Mikalas :
Vasily, 계속하지 말고 데모 예제를 실행하십시오. 그러면 모든 것을 이해할 수 있을 것입니다!

감사합니다. 더 이상 원하지 않습니다.

2015.02.05 23:37:21.147 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 14

2015.02.05 23:37:20.767 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 13

2015.02.05 23:37:20.464 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 12

2015.02.05 23:37:20.105 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 11

2015.02.05 23:37:19.912 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 10

2015.02.05 23:37:19.832 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 9

2015.02.05 23:37:19.036 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 7

2015.02.05 23:37:05.723 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 6

2015.02.05 23:36:59.919 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 5

2015.02.05 23:36:59.199 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 4

2015.02.05 23:36:53.693 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 3

2015.02.05 23:36:52.689 TestTradeTrans (AUDCAD,H1) OnTradeTransaction: 주문 티켓이 수신되지 않았습니다. 요청 = 2

2015.02.05 23:36:44.410 전문가 자동 거래가 활성화되었습니다.

2015.02.05 23:36:41.995 TestTradeTrans (AUDCAD,H1) 주문이 전송되지 않았습니다! AUDCAD 반환 코드 = 클라이언트 터미널에서 자동 거래를 금지합니다.

2015.02.05 23:36:39.996 TestTradeTrans (AUDCAD,H1) 주문이 전송되지 않았습니다! AUDCAD 반환 코드 = 클라이언트 터미널에서 자동 거래를 금지합니다.

2015.02.05 23:36:39.958 TestTradeTrans (AUDCAD,H1) 주문이 전송되지 않았습니다! AUDCAD 반환 코드 = 클라이언트 터미널에서 자동 거래를 금지합니다.

2015.02.05 23:36:34.581 MQL5 'TestTradeTrans.mq5'가 성공적으로 컴파일되었습니다.

나는 그것을 줄일 수있었습니다. 그렇지 않으면 otlzhki가 전체 터미널을 채웠을 것입니다.

Z.Y. 그건 그렇고, 기사에서이 코드를 꿰매는 것을 생각하지 마십시오. 예는 어떠한 경우에도 용납될 수 없습니다. 매 틱마다 쓸데없는 주문으로 엄청나게 스팸을 날립니다 !!!

 
C-4 :

감사합니다. 더 이상 원하지 않습니다.

나는 그것을 줄일 수있었습니다. 그렇지 않으면 otlzhki가 전체 터미널을 채웠을 것입니다.

:)

1. 요새의 예

2. 중단점을 설정할 수 없습니까?

3. 줄을 통해 메시지를 읽는 것 같습니다 :)

다음을 해보자.

내가 당신에게 질문을 하고 당신이 대답할 것입니다, 알겠죠?

질문 1. TradeTransaction 이벤트가 도착하지 않았거나 사용되지 않은 경우 Order Ticket( OrderSendAsync 명령을 전송하여)을 어떻게 알 수 있습니까?