전략 테스터에 대한 나의 불만. MQL 개발자에게 - 페이지 2

 
Alexey Volchanskiy :

Renat, 이번 기회에 여기 있는지 물어보겠습니다. 새 빌드에 서비스가 있습니까? 아니면 지금 연기됩니까?

나중에.

그 동안, 그것들이 없으면 합성 기기에 대한 데이터 피드를 작성할 수 있습니다.

 
Renat Fatkhullin :

나중에.

그 동안, 그것들이 없으면 합성 기기에 대한 데이터 피드를 작성할 수 있습니다.


나는 멀티 스레딩을 원하고 어떻게 든 서비스와 함께 그것을 할 수 있다는 희망이있었습니다. 개인적으로 아직 데이터 피드가 필요하지 않습니다.

 

모두에게 좋은 하루.

아니요, 이 게시물은 누군가가 여기에 쓴 것처럼 완전한 쓰레기가 아닙니다.

나는 한창이다.

프로그래머가 작성하고 작동한다고 말하는 것을 이해하지만 죄송합니다.

우리 모두가 브로커에서 잘못된 데이터로 작업하면 생각은 즉시 사라지고 내 결과는 잘못된 것이 아닙니다.

사실은 아이러니하게도 대학에서 통계 엔지니어로 공부했습니다.

따라서 저에게 잘못된 데이터는 기본적으로 각각 잘못된 데이터입니다. 제가 보는 것이 99%라고 말하면 통계의 사람으로서 저는 모릅니다. 여러분과 이 게시물을 읽는 모든 사람들은 같은 말을 할 것입니다.

이에 대한 해결책은 제가 위에 쓴 것입니다.

누구나 진드기 수집을 간단한 로봇/알고리즘으로 만들 수 있습니다.

그러나 사실은 4 MQL이 아닌 5에서 전략을 테스트하는 데 사용해야 하는 시장 데이터가 없다는 사실입니다.

나는 장기 전략을 주장하지 않지만 거기에는 로봇이 필요하지 않습니다.

그러나 진드기에 작용하는 모든 것 또는 수익의 순간은 잘못된 결과입니다. - 그리고 나에게 적어도 진드기는 진드기이지만, 나 자신은 진드기 생활에서 묻고 입찰하는 연구에 대한 흥미로운 아이디어를 가지고 있습니다.

너무 바빠서 답변이 길어 죄송합니다!

감사합니다. Ivan S.

 
Alexey Volchanskiy :

예, 한 번 썼습니다. 이제 찾을 것입니다.

5 개용 https://www.mql5.com/en/code/18046

4 개용 https://www.mql5.com/en/code/18047

6개의 경우 https://www.mql5.com/ru/code/


당신은 놀랄 것입니다. 그러나 5와 4에서는 같은 것입니다.

나는 4와 5를 동시에 말할 수 있다!


알고리즘의 전체 코드를 읽지는 않았지만 코드의 이 부분을 저장해야 하지만 이제 이 질문을 재현하고 전략 테스터가 표시하도록 해야 합니다.

프로그래머 중에 이런 걸 할 수 있는 사람이 있으면 아주 주의 깊게 들어요!

 
Renat Fatkhullin :
내가 틀리지 않았다면 MT5에서 테스터는 실제 틱에 있습니다. 실제 입찰/매도 요청은 어디에 있습니까?

Renat은 mql5가 작동하는지 확인하고 자체적으로 고정 스프레드를 설정합니다. 4mql처럼

 
Ivan Stepanenko :

Renat은 mql5가 작동하는지 확인하고 자체적으로 고정 스프레드를 설정합니다. 4mql처럼


문제가 해결되었습니다

1. MQL5는 약 1년 동안 실제 틱에서 테스트되었으며 틱 데이터는 거래하는 DC에서 직접 다운로드됩니다. 적어도 터미널이나 뭔가를 공부해야합니다 ...

2. MQL4 대신 자체 틱 .fxt 파일을 사용할 수 있습니다. 가장 쉬운 방법은 TickStory Lite를 사용하는 것입니다. dukas에서 실제 진드기를 다운로드합니다.

 
Ivan Stepanenko :

Renat은 mql5가 작동하는지 확인하고 자체적으로 고정 스프레드를 설정합니다. 4mql처럼


거짓말

SaveTicks 틱을 기록하기 위해 Expert Advisor를 사용하고 위의 CodeBase에 링크를 제공하고 "실제 틱 기반 틱" 모드에서 테스터에서 실행합니다. 출력 파일에 무엇이 있는지 살펴봅니다. 제 경우에는 \Tester\Agent-127.0.0.1-3000\MQL5\Files\EURUSD_SaveTicks.csv입니다.

2017.11.28 09:11:16,1.1895,1.18952

2017.11.28 09:11:16,1.1895,1.18952

스프레드 2

2017.11.28 09:11:26,1.18947,1.18951

2017.11.28 09:11:26,1.18947,1.18951

퍼짐 4
 

기호 브라우저를 보면 기호에 대한 눈금이 있습니다.

이 실제 진드기는 테스터에서 사용됩니다.

 
Ivan Stepanenko :

모두에게 좋은 하루.

아니요, 이 게시물은 누군가가 여기에 쓴 것처럼 완전한 쓰레기가 아닙니다.

나는 한창이다.

프로그래머가 작성하고 작동한다고 말하는 것을 이해하지만 죄송합니다.

우리 모두가 브로커에서 잘못된 데이터로 작업하면 생각은 즉시 사라지고 내 결과는 잘못된 것이 아닙니다.

사실은 아이러니하게도 대학에서 통계 엔지니어로 공부했습니다 .

따라서 저에게 잘못된 데이터는 기본적으로 각각 잘못된 데이터입니다. 제가 보는 것이 99%라고 말하면 통계의 사람으로서 저는 모릅니다. 여러분과 이 게시물을 읽는 모든 사람들은 같은 말을 할 것입니다.

이에 대한 해결책은 제가 위에 쓴 것입니다.

누구나 간단한 로봇/알고리즘으로 진드기 수집을 만들 수 있습니다.

그러나 사실은 4 MQL이 아닌 5에서 전략을 테스트하는 데 사용해야 하는 시장 데이터가 없다는 사실입니다.

나는 장기 전략을 주장하지 않지만 거기에는 로봇이 필요하지 않습니다.

그러나 진드기에 작용하는 모든 것 또는 수익의 순간은 잘못된 결과입니다. - 그리고 나에게 적어도 진드기는 진드기이지만, 나 자신은 진드기 생활에서 묻고 입찰하는 연구에 대한 흥미로운 아이디어를 가지고 있습니다.

답변이 길었고 시간이 매우 바빴습니다!

감사합니다. Ivan S.

당신의 문법은 어떻습니까? // 그건 그렇고...

글쎄, 모든 것이 너무 심각하기 때문에 귀하의 질문에 대한 해결책은 다음과 같습니다.

통계 수집, 견적 내역 및 작업, Alexey Volchansky는 이미 귀하와 귀하를 위한 모든 것을 찾고 위의 링크를 제공했습니다.

Ask와 관련하여 DucasCopy(google it)에서 질문 및 입찰가가 포함된 스토리를 다운로드할 수 있습니다.

행운을 빕니다!
 

다음은 흥미로운 기사입니다.


또한 MetaQuotes-Demo에서 업그레이드할 수 있는 어제의 MetaTrader 5 베타에는 사용자 정의 상품을 만들기 위한 본격적인 공식 시스템이 있습니다.

하나 이상의 기존 금융 상품을 기반으로 하는 합성 금융 상품을 생성하는 기능이 추가되었습니다. 견적 계산을 위한 공식을 설정하기만 하면 플랫폼이 실시간으로 합성 악기의 눈금을 생성하고 분 내역을 생성합니다.

어떻게 이런 일이 일어납니까?

  • 합성 악기를 만들고 공식을 설정합니다.
  • 플랫폼은 초당 10번의 빈도로 틱을 계산합니다(공식에 포함된 하나 이상의 상품 가격이 변경된 경우에만).
  • 플랫폼은 공식에 포함된 악기의 분 막대를 기반으로 분 막대의 이력(지난 2개월 동안)을 계산합니다. 모든 새로운 막대(현재 및 후속)는 합성 기기의 생성된 틱을 기반으로 실시간으로 구축됩니다.
예를 들어, 달러 인덱스(USDX) 를 표시하는 상품을 생성할 수 있습니다. 공식은 다음과 같습니다.
 50.14348112 * pow (ask(EURUSD),- 0.576 ) * pow (USDJPY, 0.136 ) * pow (ask(GBPUSD),- 0.119 ) * pow (USDCAD, 0.091 ) * pow (USDSEK, 0.042 ) * pow (USDCHF, 0.036 )
참고: 원래 달러 인덱스 공식은 USDEUR 및 USDGBP 쌍을 사용합니다. 플랫폼에는 역통화 쌍만 있기 때문에 합성 상품 공식은 입찰 가격 대신 음수 지수와 매도호가를 사용합니다.

실시간으로 플랫폼은 중개인이 제공한 6개의 다른 상품의 견적을 기반으로 새 상품의 가격을 계산합니다. Market Watch와 차트에서 가격이 어떻게 변하는지 볼 수 있습니다.



새 사용자 정의 도구를 만들고 사양을 열고 공식을 지정합니다.




편의를 위해 수식 편집기는 도구 및 기능의 이름을 입력할 때 가능한 옵션 목록을 표시합니다.

마켓 워치에 추가되면 합성 상품의 눈금 및 분 막대 계산이 시작됩니다. 동시에 계산에 필요한 모든 기호는 "시장 감시"에 즉시 자동으로 추가됩니다. 계산 시작에 대한 항목이 플랫폼 로그에 추가됩니다. 합성 기호 USDX: 처리가 시작되었습니다.
  • 합성 상품의 계산은 Market Watch에서 숨겨지면 중지됩니다.
  • 현재 합성 상품을 계산하는 데 사용되는 기호는 Market Watch에서 숨길 수 없습니다.

실시간 견적 계산
100ms(초당 10회)마다 공식에 포함된 하나 이상의 상품 가격이 변경되었는지 확인합니다. 그렇다면 합성 상품의 가격이 계산되고 틱이 생성됩니다. 계산은 Bid, Ask 및 Last price에 대한 세 가지 스트림에서 병렬로 수행됩니다. 예를 들어 공식에 EURUSD*GBPUSD가 포함된 경우 합성 상품 가격은 다음과 같이 계산됩니다.

  • 입찰가 — 입찰가(EURUSD)*입찰가(GBPUSD)
  • 묻다 — 묻다(EURUSD)*묻다(GBPUSD)
  • 마지막 - 마지막(EURUSD)*마지막(GBPUSD)

변경 여부는 각 가격에 대해 개별적으로 확인됩니다. 예를 들어, 다음 계산 중에 원래 상품의 입찰 가격만 변경된 경우 변경이 이루어진 가격만 합성 상품의 틱에 대해 계산됩니다.

미닛 바의 역사를 구축하다
실시간으로 진드기를 수집하는 것 외에도 플랫폼은 합성 기기의 1분 기록도 생성합니다. 따라서 거래자는 기존 상품과 동일한 방식으로 차트를 보고 개체 및 지표를 사용하여 차트에 대한 기술적 분석을 수행할 수 있습니다.

거래자가 Market Watch에 합성 상품을 추가하자마자 플랫폼은 계산된 1분 기록이 있는지 확인합니다. 그렇지 않은 경우 지난 60일 동안 생성되며 이는 약 50,000바입니다. 최대 매개변수의 플랫폼 설정에 있는 경우. 막대 창에 더 낮은 값이 표시되면 이 제한이 사용됩니다.

이 기간 동안 일부 바가 이미 구축된 경우 플랫폼에서 새 바를 추가합니다. 차트에서 해당 기간을 보려고 할 때만 더 깊은 기록이 생성됩니다(뒤로 스크롤하거나 MQL5 프로그램에서 기록을 요청하는 경우).

합성 기호의 미세 막대의 이력은 공식에 포함된 도구의 미세 막대(틱 아님)를 기준으로 계산됩니다. 예를 들어, 합성 상품의 분봉 시가를 계산하기 위해 플랫폼은 공식에 포함된 상품의 시가를 취합니다. 마찬가지로 고가, 저가 및 종가에 대한 계산이 이루어집니다.

공식에서 상품에 필요한 분 막대가 없는 경우 플랫폼은 계산을 위해 이전 막대의 종가를 사용합니다. 예를 들어 EURUSD, USDJPY 및 GBPUSD의 세 가지 상품이 사용됩니다. 12:00분에 해당하는 막대를 계산할 때 USDJPY 상품에 대한 분 막대가 없는 경우 다음 가격이 계산에 사용됩니다.

  • 오픈 - EURUSD 오픈 12:00, USDJPY 마감 11:59, GBPUSD 오픈 12:00
  • 고가의 경우 — EURUSD 고가 12:00, USDJPY 종가 11:59, GBPUSD 고가 12:00
  • 낮은 경우 — EURUSD 낮은 12:00, USDJPY 마감 11:59, GBPUSD 낮은 12:00
  • 종가 — EURUSD 종가 12:00, USDJPY 종가 11:59, GBPUSD 종가 12:00

공식의 모든 기기에 대한 분 막대가 누락된 경우 합성 기기의 해당 분 막대는 계산되지 않습니다.

새로운 분 막대 만들기
합성 기기의 모든 새 막대(현재 및 후속)는 생성된 눈금을 기반으로 생성됩니다. 막대가 표시되는 가격은 사양의 "차트" 매개변수에 따라 다릅니다.





도구 공식에서 사용할 수 있는 작업
가격 데이터는 공식에 사용될 수 있으며 기존 기호의 일부 속성(브로커 제공)도 사용할 수 있습니다. 이렇게 하려면 다음을 지정합니다.

  • 기호 이름 — 계산되는 합성 상품의 가격에 따라 지정된 상품의 Bid, Ask 또는 Last price가 공식에 사용됩니다. 예를 들어 EURUSD*GBPUSD를 지정하면 Bid는 bid(EURUSD)*bid(GBPUSD)로 계산되고 매도호가는 Ask(EURUSD)*ask(GBPUSD)로 계산됩니다.
  • bid(심볼 이름) — 지정된 기호의 입찰가는 합성 상품의 입찰가를 계산하는 데 사용됩니다. 실제로 이 옵션은 이전 옵션에 해당합니다(가격 유형을 지정하지 않음).
  • Ask(기호 이름) — 지정된 기호의 Ask 가격은 합성 상품의 입찰 가격을 계산하는 데 사용됩니다. 반대로 매도호가를 계산할 때는 지정된 상품의 매수호가가 사용됩니다. 종가를 계산하려면 지정된 상품의 종가가 사용됩니다. 예를 들어, ask(EURUSD)*GBPUSD를 지정하면 다음과 같이 계산됩니다.
    • Вid = 물가(EURUSD)*입찰가(GBPUSD)
    • 매도 = 입찰(EURUSD)*매도(GBPUSD)
    • 마지막 = 마지막(EURUSD)*마지막(GBPUSD)
  • last(기호 이름) — 지정된 기호의 마지막 가격은 모든 합성 상품 가격(Bid, Ask 및 Last) 계산에 사용됩니다. 예를 들어 last(EURUSD)*GBPUSD를 지정하면 다음과 같이 계산됩니다.
    • Вid = 마지막(EURUSD)*입찰가(GBPUSD)
    • 묻다 = 마지막(EURUSD)*묻다(GBPUSD)
    • 마지막 = 마지막(EURUSD)*마지막(GBPUSD)
  • volume(symbol name) — 지정된 기호의 눈금 볼륨이 공식에 사용됩니다. 지정된 악기에 대한 볼륨 정보가 방송되는지 확인하십시오.
  • point(기호 이름) — 지정된 상품의 최소 가격 변동 금액이 공식으로 대체됩니다.
  • 숫자(기호 이름) — 지정된 상품 가격의 소수 자릿수가 공식으로 대체됩니다.

기호에 복잡한 이름(하이픈, 점 등 포함)이 있는 경우 따옴표로 묶어야 합니다. 예: "RTS-6.17".
더하기(+), 빼기(-), 곱하기(*), 나누기(/) 및 나머지(%) 공식에서 산술 연산을 사용할 수 있습니다. 예를 들어 EURUSD+GBPUSD는 가격이 EURUSD와 GBPUSD 가격의 합으로 계산됨을 의미합니다. 단항 빼기를 사용하여 공식의 기호를 변경할 수도 있습니다(예: -10*EURUSD).

산술 연산의 경우 실행 우선 순위가 있습니다.

  • 곱하기, 나누기, 나머지 연산을 먼저 수행한 다음 덧셈 및 뺄셈 연산을 수행합니다.
  • 작업은 왼쪽에서 오른쪽으로 수행됩니다. 수식에서 우선 순위가 동일한 여러 연산(예: 곱하기 및 나누기)을 사용하는 경우 왼쪽에 있는 연산이 먼저 수행됩니다.
  • 괄호( 및 )를 사용하여 연산의 우선 순위를 변경할 수 있습니다. 괄호 안의 표현식은 계산에서 가장 높은 우선 순위를 가집니다. 그들에게는 왼쪽에서 오른쪽으로의 원칙도 적용됩니다. 왼쪽 공식에 있는 괄호 안의 첫 번째 표현식이 평가됩니다.

공식에서 상수를 사용할 수도 있습니다.

  • 숫자(점이 있는 정수 및 실수). 예: EURUSD*2+GBPUSD*0.7.
  • 기호 속성 _Digits 및 _Point. 사양의 사용자 정의 기호 속성을 공식으로 대체합니다. _Digits — 상품 가격의 소수점 이하 자릿수, _Point — 상품 가격의 최소 변동 크기.

MathSrand, MathRand 및 MathIsValidNuber를 제외하고 MQL5에서 지원되는 모든 수학 함수 를 공식에서 사용할 수도 있습니다. 모든 함수에는 fabs(), acos(), asin() 등의 짧은 이름만 사용됩니다.