mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 24

 
알렉세이 빅토로프 :
그리고 이것으로부터 무엇이 바뀔까요?
Trade-events에 대한 상황 설명은 스레드의 주제와 완전히 일치합니다.
 

단순한 일시적인 네트워크 오류는 거래 이벤트 수신에만 기반한 거래 논리를 무효화합니다.

따라서 OnTradeTransaction의 지지자들은 추론에 있어 다소 지나치다.

다음은 모든 플랫폼에서 올바르게 작동하는 거래 논리 메커니즘입니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

EA에서 지정가 주문 작업의 좋은 예

fxsaber , 2017.01.02 23:12

나는 시간의 지연을 통해서만 거래합니다. 어떤 처리도 하지 않습니다. OrderSend는 -1(MT4 또는 MT5+MT4Orders)을 반환했습니다. 작동하지 않았 으며 다음 단계에서 거래 환경이 여전히 완전히 표시되기 때문에 문제가 없습니다. 그리고 연기/자세는 없지만 있어야 하는 경우 있어야 하는 상태와 동기화됩니다 . 해당 OrderSend가 전송됩니다.

이 접근 방식을 사용하면 거부, 부분 실행 및 기타 사항의 모든 뉘앙스가 고려됩니다. 그리고 구현은 매우 간단하고 효율적입니다. 결코 실패하지 않았습니다.

나는 비동기식 옵션을 시도하지 않았고 여기에서 훨씬 더 어려워 보이지는 않지만 논쟁을 벌이지는 않을 것입니다.

 
fxsaber :

단순한 일시적인 네트워크 오류는 거래 이벤트 수신에만 기반한 거래 논리를 무효화합니다.

따라서 OnTradeTransaction의 지지자들은 추론에 있어 다소 지나치다.

다음은 모든 플랫폼에서 올바르게 작동하는 거래 논리 메커니즘입니다.

네, 믿을 수 있는 유일한 방법은 거래 계좌의 상태를 확인하는 것입니다. 모든 OnTrade* 이벤트는 거래 주문 을 관리하기 위한 신뢰할 수 있는 메커니즘을 제공할 수 없습니다.

비동기식 작업의 유일한 장점은 이전 주문의 결과를 기다리지 않고 연속으로 거래 주문을 보낼 수 있다는 것입니다. 그러나 실행 제어도 이벤트에 의존할 수 없으므로 이 점에서 동기 주문의 결과를 확인하는 것과 차이가 없습니다.

거래 계정의 상태는 요청 당시의 상태(자체 요청)이며 네트워크 문제가 문제가 아닌 경우 네트워크가 복원될 때까지 요청할 수 있습니다. 그러나 사건에 의존하여 우리는 완전히 외부 요인에 의존하게됩니다.

 

fxsaber :
Trade-events에 대한 상황 설명은 스레드의 주제와 완전히 일치합니다.

예, 전혀 신경 쓰지 않습니다. 나는 그런 미묘함을 잡을 필요가 있는 사람이 거의 없다고 말했습니다.

fxsaber :

단순한 일시적인 네트워크 오류는 거래 이벤트 수신에만 기반한 거래 논리를 무효화합니다.

따라서 OnTradeTransaction의 지지자들은 추론에 있어 다소 지나치다.

다음은 모든 플랫폼에서 올바르게 작동하는 거래 논리 메커니즘입니다.

그리고 나는 이것으로부터 누군가를 설득하지 않을 것입니다. 또한 서버에서 반환을 제어하는 것이 매우 필요하다고 생각합니다. 접근 방식만 다를 뿐입니다. 당신이 제안한 것은 정확하지만 만병 통치약은 아닙니다.

어쩌면 이것은 내 삶의 원칙에서 나온 것일 수도 있습니다. "내가 그것을 더 나쁘게 만들도록 하지만 내 방식대로. 무슨 일이 생기면 꾸짖을 사람이 없을 것입니다."

 

어쩐지 인스트루먼트의 핍 값에 MarketInfo(_Symbol, MODE_TICKVALUE) 함수를 사용하는 데 익숙해졌습니다. 그리고 지금까지 나는 어떤 문제도 겪지 않았습니다.

MT5에서는 다른 브로커로 모든 것을 균일하게 볼 수 없습니다.‌ 두 개의 다른 계정에서 EURUSD 및 USDJPY에 대한 작은 스크립트를 시작했습니다. 핍 값과 계약 크기에 주의하십시오.

MQ의 데모 계정입니다.‌

‌ 이것은 Just2Trade의 데모 계정입니다:

‌균일한 포인트 값으로 이어지는 보편적인 기능을 가진 사람이 있습니까?
내가 이해하는 한 틱 크기와 계약 크기를 모두 고려해야 합니다. 아마도 다른 것일까요?

저것들. EURUSD이고 보증금이 달러인 경우 - 1달러와 같도록 5자리 포인트 1개.

그리고 어떤 경우에 SYMBOL_TRADE_TICK_VALUE_PROFIT 또는 SYMBOL_TRADE_TICK_VALUE_LOSS 를 사용하는 것이 맞습니까?
 
바실리 푸쉬카요프 :

어쩐지 인스트루먼트의 핍 값에 MarketInfo(_Symbol, MODE_TICKVALUE) 함수를 사용하는 데 익숙해졌습니다. 그리고 지금까지 나는 어떤 문제도 겪지 않았습니다.

MT5에서는 다른 브로커에 대해 모든 것을 균일하게 보지 않습니다.‌ 두 개의 다른 계정에서 EURUSD 및 USDJPY에 대한 작은 스크립트를 시작했습니다. 핍 값과 계약 크기에 주의하십시오.

MQ의 데모 계정입니다.‌

‌ 이것은 Just2Trade의 데모 계정입니다:

‌균일한 포인트 값으로 이어지는 보편적인 기능을 가진 사람이 있습니까?
내가 이해하는 한 틱 크기와 계약 크기를 모두 고려해야 합니다. 아마도 다른 것일까요?

저것들. EURUSD이고 보증금이 달러인 경우 - 1달러와 같도록 5자리 포인트 1개.

그리고 어떤 경우에 SYMBOL_TRADE_TICK_VALUE_PROFIT 또는 SYMBOL_TRADE_TICK_VALUE_LOSS 를 사용하는 것이 맞습니까?
그때가 "니코노르의 사무실"이 보통의 것과 같은 계약 규모인 HUNDRED THOUSAND가 될 때, 포인트 비용은 보통 것과 같을 것입니다. 그 동안, 당신은 당신이 얻은 것에 100,000을 곱할 수 있고 당신은 당신이 원하는 것을 얻을 것입니다.
 
알렉세이 빅토로프 :
그때가 "니코노르의 사무실"이 보통의 것과 같은 계약 규모인 HUNDRED THOUSAND가 될 때, 포인트 비용은 보통 것과 같을 것입니다. 그 동안, 당신은 당신이 얻은 것에 100,000을 곱할 수 있고 당신은 당신이 원하는 것을 얻을 것입니다.
나는 또한 이것으로 일종의 고투를 겪었다. MetaQuotes-Demo에는 하나의 계약 크기가 있고 Just2Trade에는 다른 크기가 있습니다. 외환 - 하나, 주식 등 - 다른 하나. 인증서에 모든 것을 계산하는 방법이 나와 있다는 사실 - 수렴되지 않음 - 심지어 균열. 그리고 고객은 기다리고 있습니다 ... 그래서 우리는 자동으로 계산하지 않고 어리석게도 100을 곱하는 데 동의했습니다. 그리고 그의 Just2Trade에서만 가능합니다. 아직도 이게 안뜨네요... :(
 
Artyom Trishkin :
나는 또한 이것 때문에 일종의 고투를 겪었다. MetaQuotes-Demo에는 하나의 계약 크기가 있고 Just2Trade에는 다른 크기가 있습니다. 외환 - 하나, 주식 등 - 다른 하나. 인증서에 모든 것을 계산하는 방법이 나와 있다는 사실 - 수렴되지 않음 - 심지어 균열. 그리고 고객은 기다리고 있습니다 ... 그래서 우리는 자동으로 계산하지 않고 어리석게도 100을 곱하는 데 동의했습니다. 그리고 그의 Just2Trade에서만. 아직도 이게 안뜨네요... :(

여기서 명확하지 않은 것은 무엇입니까?

표준 계약 크기 = 1 핍 0.00001*1000/1 = 0.01에 대해 받은 1000랏 구매

또 다른 옵션, 계약 크기 = 100000 매수 0.01 랏‌ (100000*0.01=1000) 1핍에 대해 수령 1*1000/100000 = 0.01

5\3자용입니다.‌

추신; 그리고 인스타그램에는 10,000의 표준 계약 크기가 있었습니다.
 
알렉세이 빅토로프 :

여기서 명확하지 않은 것은 무엇입니까?

표준 계약 크기 = 1 핍 0.00001*1000/1 = 0.01에 대해 받은 1000랏 구매

또 다른 옵션, 계약 크기 = 100000 매수 0.01 랏‌ (100000*0.01=1000) 1핍에 대해 수령 1*1000/100000 = 0.01

5\3자용입니다.‌

추신; 그리고 Instagram에는 10,000의 표준 계약 크기가 있었습니다.
3000 또는 5000 로트를 어떻게든 사용하는 것은 이례적인 일입니다. 익숙해져야 할 것입니다.
 
바실리 푸쉬카요프 :
3000 또는 5000 로트를 어떻게든 사용하는 것은 이례적인 일입니다. 익숙해져야 할 것입니다.

관례가 아닌 경우 다음과 같이 작성할 수 있습니다.

 input double                lot         =   0.1 ;
input int                   take        =   100 ;   // TakeProfit

double takePips, contract;

/*******************Expert initialization function*******************/
int OnInit ()
{
   contract = 100000 / SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_CONTRACT_SIZE )*lot;
    takePips = take* _Point ;
   return ( INIT_SUCCEEDED );
} /*******************************************************************/

DC의 변덕에 관계없이 계약 변수를 OrderSend() 함수 로 보냅니다.