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

 
Andrey Khatimlianskii :

여기요!

MT4 오프라인 차트의 아날로그는 사용자 정의 도구입니다. 포함하여 모든 스토리를 업로드할 수 있습니다. 1 bar = 1 틱을 만듭니다.

그러나 MT4에서와 같이 각 막대는 이전 막대와 최소 1분의 시간 차이가 있어야 하므로 정상적인 시간 척도가 없습니다.

추신: 여기에 완성된 표시기가 있습니다 - https://www.mql5.com/en/blogs/post/719145

MT4에서 막대의 시간은 단순히 이전 막대보다 커야 하며 MT4는 막대를 표시합니다. MT4에서는 최대 몇 초의 정확도로 오프라인 차트에 막대를 그릴 수 있습니다. 두 번째 차트를 KB에 게시했습니다.

그러나 MT5에서는 이 트릭이 작동하지 않습니다. 초를 제외하고 동일한 여는 시간으로 사용자 지정 기호에 2개의 막대를 보내려고 하면 하나의 막대만 표시됩니다. 사용자 정의 MT5 차트에서 M1 미만의 정확도는 작동하지 않습니다.

 
fxsaber :

다음 은 다이어그램입니다. 공장.

TP 이동 없이? 매번 제대로 작동합니까? 행운 외에는 아무것도 없습니다.


fxsaber :

참을 수 있는 / 참아야 하는 이상성의 바로 그 경계는 어디인가? 간헐적인 거부 및 재인용은 Tester와 어떤 관련이 있습니까?

거부는 그것과 관련이 없습니다.

테스터 또는 실생활에서 마지막으로 알려진 가격 으로 트리거하는 데 제한이 필요하지 않습니다. 전송되는 동안 가격은 어디로든 갈 수 있습니다.

또 다른 질문은 0-지연 모드(이상적인 실행)에서 테스터가 주문이 브로커에게 전송되어 즉시 실행된 것처럼 가장할 수 있다는 것입니다. t 이상적인 테스트의 요점을 참조하십시오. 실제 생활에서는 어쨌든 다를 것입니다.

 
Igor Makanu :

MT4에서 막대 시간은 단순히 이전 막대보다 커야 하며 MT4는 막대를 표시합니다. MT4에서는 최대 몇 초의 정확도로 오프라인 차트에 막대를 그릴 수 있습니다. 두 번째 차트를 KB에 게시했습니다.

수정해주셔서 감사합니다. 잊어버렸습니다. 옛날 옛적에 오류가 증가했지만 시간이 몇 분이 아닌 경우 작동하는 것처럼 보였습니다.

상위 5개에서는 그렇게 할 수 없습니다.

 
Andrey Khatimlianskii :

여기요!

MT4 오프라인 차트의 아날로그는 사용자 정의 도구입니다. 포함하여 모든 스토리를 업로드할 수 있습니다. 1 bar = 1 틱을 만듭니다.

그러나 MT4에서와 같이 각 막대는 이전 막대와 최소 1분의 시간 차이가 있어야 하므로 정상적인 시간 척도가 없습니다.

추신: 여기에 완성된 표시기가 있습니다 - https://www.mql5.com/en/blogs/post/719145

오, 사용자 정의 기호가 맞습니다! 그리고 틱 시간은 나에게 중요하지 않습니다. 감사합니다. 이것은 올바른 방향으로 나아가는 것입니다. )))

 
Andrey Khatimlianskii :

TP 무브먼트 없이? 매번 제대로 작동합니까? 운 이상은 없습니다.

당연히 아니지. 따라서 주기.

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

mql4 언어의 기능, 미묘함 및 작업 방법

fxsaber , 2019.12.13 00:27

개략적 으로 포지션의 긴급 청산은 다음과 같이 이루어집니다.
 const double ClosePrice = OrderType() ? MathMin (OrderClosePrice(), Bid + MaxSpread * _Point ) 
                                      : MathMax (OrderClosePrice(), Ask - MaxSpread * _Point );
    
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), ClosePrice, 0 ); // StopLoss оставлен для истории
물론 루프 에서. 다른 옵션이 있습니까?

거부는 그것과 관련이 없습니다.

테스터 또는 실생활에서 마지막으로 알려진 가격 으로 트리거하는 데 제한이 필요하지 않습니다. 전송되는 동안 가격은 어디로든 갈 수 있습니다.

또 다른 질문은 0-지연 모드(이상적인 실행)에서 테스터가 주문이 브로커에게 전송되어 즉시 실행된 것처럼 가장할 수 있다는 것입니다. t 이상적인 테스트의 요점을 참조하십시오. 실제 생활에서는 어쨌든 다를 것입니다 .

실생활에서는 현재 가격(또는 더 나은 가격)으로 전체(또는 부분) 실행되거나 거부됩니다. 저것들. 성능은 완벽할 수도 있고 완벽하지 않을 수도 있습니다.

우리는 테스터가 항상 시장에서는 완벽하게 작동하지만 한계에는 항상 실패한다는 것을 알게 되었습니다.

 
fxsaber :

우리는 테스터가 항상 시장에서는 완벽하게 작동하지만 항상 한계에는 실패한다는 것을 알게 되었습니다.

그래서 나는 시장을 위해 다음 틱을 실행하고 싶습니다. 테스터가 실제보다 배수관을 더 잘 보여줄 것입니다. 그리고 성배 는 이것으로 인해 손실되지 않을 것입니다.

 
Andrey Khatimlianskii :

그래서 나는 시장을 위해 다음 틱을 실행하고 싶습니다. 테스터가 실제보다 배수관을 더 잘 보여줄 것입니다. 그리고 성배는 이것으로 인해 손실되지 않을 것입니다.

다음 틱은 사실이 아닙니다. 귀하의 시장은 틱을 생성해야 하며 거래량 을 고려하여 가장 가까운 입찰가 또는 매도호가로 실행됩니다.
리미터는 또한 볼륨을 고려하여 보장된 가격으로 채워져야 합니다.
지금 만들어지는 다른 모든 알고리즘은 실제 결과를 얻는 오도일 뿐입니다.
이런 이유로 테스터를 전혀 사용하지 않습니다. 기본적으로 실행이 대체되는 것은 의미가 없습니다.

 
Roman :

다음 틱은 사실이 아닙니다. 귀하의 시장은 틱을 생성해야 하며 거래량 을 고려하여 가장 가까운 입찰가 또는 매도호가로 실행됩니다.
리미터는 또한 볼륨을 고려하여 보장된 가격으로 채워져야 합니다.
지금 만들어지는 다른 모든 알고리즘은 실제 결과를 얻는 오도일 뿐입니다.
이런 이유로 테스터를 전혀 사용하지 않습니다. 기본적으로 실행이 대체되는 것은 의미가 없습니다.

글쎄, 이것을 위해서는 주문서의 이력이 필요하거나 최소한 극단적인 입찰/매도 금액이 필요합니다. 그리고 그들은 그렇지 않습니다.

그리고 틱 시장은 테스터에서 생성되어서는 안 됩니다. 그렇지 않으면 이력은 테스트 중인 전략에 따라 달라집니다.

 
Andrey Khatimlianskii :

글쎄, 이것을 위해서는 주문서의 이력이 필요하거나 최소한 극단적인 입찰/매도 금액이 필요합니다. 그리고 그들은 그렇지 않습니다.

그리고 틱 시장은 테스터에서 생성되어서는 안 됩니다. 그렇지 않으면 이력은 테스트 중인 전략에 따라 달라집니다.

중재자 중 한 명이 MT5가 교환 시장을 위해 개발되었다고 말했듯이,
그러나 테스터의 구현을 살펴보면 실제 틱에서도 실행을 처리하는 것과 동일한 원칙으로 개발되었습니다.

그러면 어떻게 테스트를 합니까? 어떤 과거 데이터?
그런 다음 그러한 역사적 인용문에 대한 테스트를 신뢰합니까?
:))

당연히 진드기 이력 이 필요하며 실제 진드기에 대해 테스트를 수행해야 합니다.
틱 히스토리 받는 곳, 사용자의 문제, 직접 수집, 구매, 누구에게나 가져오기 등

예, 입찰 요청 볼륨이 지금 저장되지 않는다는 데 동의하지만 개발자가 3개의 열을 추가하지 못하게 하는 이유는 무엇입니까 ?

  1. 질문 볼륨 열
  2. 입찰량 열
  3. 방향 열 마지막 거래, 매수 또는 매도


그러면 실제 진드기에 대한 올바른 테스트와 관련된 모든 문제가 자동으로 사라집니다.
그리고 테스터에서 교환 주문을 원래대로 실행하는 것이 가능합니다.

네, 생성 틱에 대해 저는 그렇게 두지 않았습니다. 그것은 테스터의 시장이 가장 가까운 Bid Ask에서 실행되어 가격 수준에서 유동성을 수집해야 함을 의미했습니다.
즉, 볼륨이 25인 BuyMarket을 보내면 실행 가격은 10과 15의 두 가지 수준을 수집하고 자동으로 포지션의 순 가격을 평균화합니다.

182.13 질문1 15
182.12 질문0 10
--------------------
182.11 입찰0 5
182.10 입찰1 8

그리고 지정가 주문의 경우 마지막 거래량은 제한이 설정된 보장 가격에서 지정가 주문의 양을 채워야 합니다.
즉, 지정가 주문의 작성은 부분적이어야 합니다. 귀하의 지정가 주문이 25개의 거래량으로 이루어진 경우, 5개의 거래량이 있는 마지막 거래는 5개의 주문에서 한 입이 될 것입니다.
귀하의 지정가 주문은 이제 20 거래량, 다음 마지막 거래는 10 거래량, 지정가 주문은 이제 10 거래량,
마지막으로 10개의 수량으로 통과되었으며 지정가 주문이 완전히 채워졌습니다.
가격이 돌아서 지정가 주문의 전체 볼륨을 채우지 않으면 이것이 실제 상황, 실제 실행입니다.
그리고 제한의 나머지 볼륨은 마지막이 다시 올 때까지 계속 기다리거나 이 응용 프로그램을 직접 취소합니다.

따라서 이제 테스터에서 실행 알고리즘이 구현된 형태로는 현실과 무관합니다.
흐릿한 눈을 가진 Alya 장난감.


 

하나의 형식을 열기 위해 POD 구조를 만지작거리고 있지 않습니다. 구조에는 많은 분야가 있습니다. 일부 구조는 상속되고 일부에는 개인 필드가 있습니다.


일반적으로 연구 중인 형식을 편집하기 위해 이러한 구조를 재설정하는 작업이 발생했습니다. 그리고 정말 아무것도 나오지 않습니다. 결과적으로 이 옵션을 사용하기 시작했습니다.

 #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

// Обнуление переменной.
template < typename T>
void ToNull( T &Value )
{
   uchar Bytes[ sizeof (T)];
   ArrayInitialize (Bytes, 0 );
  
  _W(Value) = Bytes;
}


애플리케이션.

 struct A
{
private :
   int i;
  
public :
   int j;  
};

void OnStart ()
{
//  A a = {0};     // 'a' - cannot be initialized with initializer list
//  ZeroMemory(a); // 'a' - not allowed for objects with protected members or inheritance
  
  ToNull(a);
}


대안은 환영합니다.

사유: