MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 76

 
TYRBO :
가격을 비교하여 문제를 해결
테스터에서? 변동 스프레드 가 있는 계정의 실제 시장에서 손익분기점 가격은 매 틱마다 변경됩니다.
 
Artyom Trishkin :

이러한 맥락에서 나는 다음과 같은 결과를 낳고 있습니다.

  1. 틱당 가능한 한 적은 주기를 달성해야 합니다.
  2. 시장 주문 및 위치 데이터가 있는 영구 어레이 하나와 삭제/종료된 주문 및 위치 데이터가 있는 어레이 하나가 필요합니다.
  3. 함수에 로컬로 배열이 있는 경우 다시 액세스하려면 다음 채우기가 필요합니다. 새 눈금에 한 번 채우는 것이 좋습니다. 이는 배열이 전역임을 의미합니다. 그렇지 않으면 함수가 종료될 때 손실됩니다.
  4. 배열에서 무언가를 찾으려면 채워진 배열과 찾은 데이터를 반환하는 함수가 필요합니다. 이미 함수 내에서 필요한 계산을 위해 보조 배열을 선언할 수 있습니다.

이를 기반으로 폐쇄 및 개방 주문 및 포지션에 대해 글로벌 어레이를 보유하는 것이 더 좋습니다. 새로운 틱이 발생하면 필요한 수의 주문/포지션 을 한 번 살펴보고 두 개의 배열을 채웁니다. 그런 다음 동일한 틱에서 필요한 모든 데이터를 그들로부터 얻습니다. 또한 마지막 마감/오픈 주문/포지션 및 모든 데이터가 계산될 뿐만 아니라 부분 마감의 경우 모든 포지션의 모든 상위 및 하위 티켓이 검색됩니다. 따라서 언제든지 이 위치 또는 해당 위치가 두 번 이상 부분적으로 마감된 경우 이 위치가 시작된 티켓을 볼 수 있습니다. 이 모든 것은 이미 타이머에서 작동하는 하나의 클래스에서 작동합니다. 글쎄, 나는 적은 총 사이클 수로 필요한 다른 많은 데이터를 가지고 있습니다. 테스터의 경우 어레이에 필요한 기록 깊이가 설정됩니다.

등. ...

죄송합니다. Isho 나는 정적 이 있는 로컬 배열이 손실되지 않는다는 것을 추가할 것입니다(반대하는 것이 아니라 추가로). 즉, 조건이 허용하는 경우 전역 수준에서 선언하지 않고 수행할 수 있습니다.

 
P./S.: 물론 내 자신의 "이기적인" 관심에 따라 보충합니다.))). 유효한 경우 static 과 함께 local 을 사용할 수 있기 때문입니다.
 
Vitaly Muzichenko :

이전에는 주기 내부에 일반적인 Ask 및 Bid가 있었고 모든 것이 완벽하게 작동했지만 이제는 상위 5개까지 천천히 다시 작성하고 있습니다. 가격이 매우 빠르게 변할 수 있고 그 수준이 허용 정지 수준보다 낮아져 오류가 발생하는 상황이 발생한다는 것을 의미합니다.

나는 이 " SymbolInfoTick " 모자가 최신 가격을 얻는 데 필요하다는 것을 이해합니다.

따라서 mql4에서 실제 Ask 및 Bid를 얻으려면 어쨌든 새로 고침을 호출해야 했습니다. 그리고 SymbolInfoTick()을 호출하는 것과 비교하여 로드가 변경될 가능성이 낮은 것으로 나타났습니다.

여기에만 이러한 추가 사항이 있습니다. 현재 가격을 오류 없이 수신하기 위해 이러한 주기에서 SymbolInfoTick()을 씁니다.

         do
         while (! SymbolInfoTick ( _Symbol , mqlTick));

처음에 정상 가격을 얻는다면 이 주기는 실행 시간을 증가시키지 않습니다. 그리고 어떤 종류의 실패가 있으면 현재 가격 대신에 반복하는 것이 지옥보다 낫습니다.

 
Alexey Viktorov :

따라서 mql4에서 실제 Ask 및 Bid를 얻으려면 어쨌든 새로 고침을 호출해야 했습니다. 그리고 SymbolInfoTick()을 호출하는 것과 비교하여 로드가 변경될 가능성이 낮은 것으로 나타났습니다.

여기에만 이러한 추가 사항이 있습니다. 현재 가격을 오류 없이 수신하기 위해 이러한 주기에서 SymbolInfoTick()을 씁니다.

         do
         while (! SymbolInfoTick ( _Symbol , mqlTick));

처음에 정상 가격을 얻는다면 이 주기는 실행 시간을 증가시키지 않습니다. 그리고 어떤 종류의 실패가 있으면 현재 가격 대신에 반복하는 것이 지옥보다 낫습니다.

분명히, 하지만 사이클 내부 또는 이전에 어디에 둘 것인가?
 
Vitaly Muzichenko :
분명히, 하지만 사이클 내부 또는 이전에 어디에 둘 것인가?
따라서 이것은 실제 가격이 수신될 때까지 별도의 주기입니다. 그리고 당신이 그것을 어디에 두었는지는 이미 논의되었습니다. 관련 없는 가격의 매복 변형이 있는 경우 주문 주기에 넣어야 합니다.
 
Alexey Viktorov :

따라서 mql4에서 실제 Ask 및 Bid를 얻으려면 어쨌든 새로 고침을 호출해야 했습니다. 그리고 SymbolInfoTick()을 호출하는 것과 비교하여 로드가 변경될 가능성이 낮은 것으로 나타났습니다.

여기에만 이러한 추가 사항이 있습니다. 현재 가격을 오류 없이 수신하기 위해 이러한 주기에서 SymbolInfoTick()을 씁니다.

         do
         while (! SymbolInfoTick ( _Symbol , mqlTick));

처음에 정상 가격을 얻는다면 이 주기는 실행 시간을 증가시키지 않습니다. 그리고 어떤 종류의 실패가 있으면 현재 가격 대신에 반복하는 것이 지옥보다 낫습니다.

그가 전혀 이해하지 못한다면? 주기를 어떻게 늦추나요?
 
Artyom Trishkin :
그가 전혀 이해하지 못한다면? 주기를 어떻게 늦추나요?

예, 논리적으로 예를 들어 터미널이 연결이 끊어졌을 수 있습니다. 여기에는 여러 가지 이유가 있습니다. 저에게는 하루에 50번 연결이 끊어집니다.

순 트롤 어업의 경우 최신 가격을 얻는 동시에 자원 집약도를 줄이는 것이 더 나은 방법입니다.

 
Vitaly Muzichenko :

예, 논리적으로 예를 들어 터미널이 연결이 끊어졌을 수 있습니다. 여기에는 여러 가지 이유가 있습니다. 저에게는 하루에 50번 연결이 끊어집니다.

순 트롤 어업의 경우 최신 가격을 얻는 동시에 자원 집약도를 줄이는 것이 더 나은 방법입니다.

10 페이지를보십시오 - 뒤로, 좋은 shemka가 있습니다
 
trader781 :
10페이지 뒤를 봐, 좋은 계획이 있어
나는 그것을 찾지 못했고 여기에서 그것을 기억하지 못합니다.