MT용 Python으로 거래 시스템 만들기. - 페이지 4

 

모든 것이 준비되었으며 Python TS를 MT 터미널에 연결할 때입니다. 그러나 이를 위해서는 몇 가지 조치를 취해야 합니다.

우리의 미래 TS는 C:\PyTS 폴더에서 파일을 읽고 쓰지만, MT 터미널은 MQ의 알 수 없는 변덕으로 인해 자신의 디렉터리인 C:\<och. 많은 문자와 숫자>\Files, 그리고 다른 것은 없습니다. 물론 Python 코드에서 설정을 변경하고 기본 MT 폴더에서 교환하도록 할 수 있지만 터미널이 조급한 곳이 아니라 내가 필요한 곳에서 파일을 읽고 쓸 수 있는 터미널이 필요합니다. . 또한, 미래에는 필요할 것입니다.

사실, 이 문제는 몇 년 전에 내 주제인 https://www.mql5.com/ru/forum/79922 에서 해결되었습니다.

모든 것은 Windows를 통해 해결됩니다. 터미널 폴더 C:\<och. 많은 문자와 숫자>\Files, 링크는 C:\PyTS 폴더에 배치되며, 이 폴더는 터미널(및 OS도)이 Files\PyTS의 하위 폴더로 인식하고 터미널이 거기에 C:\에 씁니다. PyTS, 그 자체로.)

이것은 기본 Windows 유틸리티 MKLINK를 사용하여 명령줄에서 수행됩니다. 스스로 이해하기 어려운 사람들을 위해 다음과 같이 자세히 설명합니다.

run - cmd를 입력하거나 메뉴 - System-Windows -> Command Prompt에서 입력합니다. 우리는 고양이에게 창문을 얻습니다. MKLINK 또는 mklink를 입력합니다. 우리는 다음을 가지고 있습니다:


이제 행에 C:\가 포함될 때까지 cd ..를 여러 번 입력합니다.

이제 탐색기를 열고 C:\<och. 많은 문자와 숫자>\Files, 터미널은 고양이에게 파일을 쓰고 Ctrl-Ins 폴더에 경로를 선택하여 복사합니다.

명령 프롬프트 창으로 돌아가서 Shift-In을 사용하여 cd <space>를 쓰고 ... \Files 폴더의 경로를 붙여넣고 Enter를 누릅니다. 우리는 다음을 얻습니다:

이제 명령줄에서 mklink /D PyTS c:\PyTS 라고 쓰고 평소와 같이 Enter 키를 누릅니다. 우리는 다음을 얻습니다:

링크가 생성되었음을 알 수 있습니다. 우리는 그것이 ......\Files 폴더에 나타난 것을 보고 그 안으로 들어갑니다 - 우리는 C:\PyTS 폴더의 파일을 봅니다. )) 모두.

이제 터미널에서 ...Files\PyTS 폴더에 쓴 모든 파일은 실제로 C:\PyTS 폴더에 기록됩니다.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
이렇게 파일 교환이 끝났습니다. 모든 것이 작동하며 모든 출처는 첨부 파일에 있습니다. 다른 모든 것과 Python에서 MT로의 역 전송은 동일한 방식으로 수행되며 문제가 발생하지 않기를 바랍니다. 시작하려면 이전 게시물을 읽고 따르십시오. 다른 방법은 없습니다.))

MQL 코드도 첨부 파일에 있습니다. - MQL은 히스토리를 읽고 이를 Python 애플리케이션에 전달합니다. 파이썬은 수락하고 인쇄합니다. Python에서는 시작 버튼을 누르는 것을 잊지 마십시오. )

MQL 코드에 대한 주석을 작성할 필요가 없기를 바랍니다. 참조가 있습니다.) 예, MT에서 데이터 전송은 타이머로 수행됩니다. 이 단계에서는 더 편리합니다.

궁금한 사항은 전화주세요.)

지금은 그만하겠습니다. 이제 전략 문제를 해결해야 합니다. 제안이 있으면 검토하겠습니다.)

다시 한 번 반복합니다. 파일 공유는 전략을 개발하고 디버깅 할 때 이상적이기 때문입니다. 수정하려는 노력이 필요하지 않습니다. 대부분의 실제 전략의 경우 미래에 적합합니다. 그러나 필요한 경우 프로그램을 크게 변경하지 않고 1-2일이면 항상 다른 것으로 교체할 수 있습니다.

파일:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

나는 자주 쓰겠다고 약속한 것이 아니라 사용 가능해질 때만 썼습니다. 프로젝트는 다른 일로부터 자유 시간에 흔들리거나 롤하지 않고 백그라운드에서 수행됩니다.

시스템이 그래프를 표시하는 것이 좋을 것이라고 생각했습니다.

일반적으로 Python은 간단한 언어입니다. 배우는 데 며칠이면 충분합니다. 모듈을 다루는 것은 훨씬 더 어렵습니다. 수천 개의 모듈이 있으며 누가 무엇을 하고 왜 필요한지 명확하지 않습니다. 그것이 그래프에서 일어난 일입니다 - 그것을 알아내는 데 오랜 시간이 걸렸습니다. 그러나 결과는 다음과 같습니다.

프로그램은 CSV 파일을 읽고 플롯합니다.

차트는 약 50,000개의 캔들에 대한 닫기 가격을 표시합니다.

돋보기를 클릭하고 그래프 영역에서 직사각형을 선택하면 다음과 같이 됩니다.

그러면 그래프의 크기를 늘릴 수 있으며 다음을 얻습니다.

이 작업은 여러 번 수행할 수 있습니다. 그래프를 이동하여 그림으로 저장할 수도 있으며, 물론 전체 화면으로 확장할 수도 있습니다.

응용 프로그램에 필요한 모든 파일. 일부 폴더에 zip 압축을 풀고 CSVGraph.py 파일을 실행하여 실행합니다.

시작하기 전에 프로그램에서 가져온 모듈이 설치되어 있는지 확인하는 것을 잊지 마십시오.

파일:
CSVGraph.zip  582 kb
 
Python 학습의 연습으로 - 아마도. 그러나 실용적인 관점에서 볼 때 그것은 거의 쓸모가 없습니다 + 시간 낭비입니다. 물론 누구에게나 각자의 길이 있다. 행운을 빕니다
 

넌센스는 이웃님들과 아마추어 추리자들에게 맡기고, 예비 결과는 스스로 정리해보자.

주제를 이미 파악했다면 Python을 어느 정도 알고 있고 CSV 파일을 사용하는 방법을 알고 그래프를 작성하고 터미널과 통신하는 방법을 알고 있습니다. 이것은 이미 거래 전략을 개발, 시뮬레이션 및 테스트하기에 충분합니다. 전략이 틱을 사용하지 않고 1분 이상의 시간 프레임으로 작동하고 약 5-10초 간격으로 터미널에 액세스하면 이미 Phyton에서 직접 작업 전략을 세우고 터미널은 데이터를 제공하고 "실행"만 하도록 남겨둡니다. 당신의 주문.

또한 로컬 머신 러닝 옹호자들에게 인기 있는 R 언어 및 환경의 기능을 능가하는 Phyton 프로그래밍 및 환경 기술을 이미 보유하고 있습니다. 지금도 Python에서 매우 복잡한 지표 전략을 구축할 수 있지만 Python의 모든 기능(R과 유사)은 모듈을 사용하여 구현할 수 있습니다. 테마에서는 tkinter, numpy 및 matplotlib의 3개 모듈만 사용했습니다.

이제 Python이 기계 학습을 사용하여 더 고급 전략을 구축하는 데 필요한 것입니다. 이렇게 하려면 모듈 - scikit-learn 을 사용할 수 있습니다. scikit-learn사용 하면 다음 기능을 사용할 수 있습니다. 메소드 세트가 마음에 드시나요? - 베이지안 분류에서 랜덤 포레스트 및 신경망에 이르기까지 R에서 알려지지 않은 방법과 "머신 러닝"이라는 주제를 포함하여 이미 거의 모든 것이 있습니다.

이것은 Python의 기계 학습 모듈 중 하나일 뿐이며 약 12가지가 있습니다. scikit-learn 모듈은 그 중 최고가 아니며 가장 발전된 것도 아니라고 합니다. 이것이 필요한 사람입니다. 나머지는 온라인에서 쉽게 찾을 수 있습니다.


PS Python 작업을 시작하거나 막 시작하려는 사람들을 위한 것입니다.

나는 여러 Python 개발 환경을 시도했고 가장 초보자에게 친숙한(나 자신을 포함하여) Anaconda 에 정착했습니다. Python을 포함하여 필요한 모든 것이 이미 키트에 설치되어 있어 편리합니다. Spyder 를 사용하는 편집기는 Anaconda 와 함께 설치됩니다. 또한 VSCode 편집기를 설치하는 것이 좋습니다. 또한 매우 훌륭하고 Anaconda 에서 직접 설치했습니다.

아마도 전문가들은 내 선택에 만족하지 않을 것입니다.

 
4페이지의 주제가 끝나면 마침내 Python에서 선언된 전략으로 이동할 준비가 되었습니다. 이를 위해 모든 작업이 이미 완료되었습니다.
간단한 전략으로 시작해 보겠습니다. EMA의 교차점에서 거래가 가능하며 수정 사항이 있을 수 있습니다.
내가 신경망(NN)을 마스터했을 때 나는 간단한 작업으로 시작했습니다. NN은 EMA의 교차점을 결정해야 했습니다. 실무적으로는 전혀 무의미한 작업이지만, 시장 데이터를 국회에 제출하는 방법과 준비 방법을 결정할 수 있게 했고 많은 교육 문제를 해결했습니다.
이제 우리의 임무는 이익을 전혀 창출하지 않고 터미널에 연결하지도 않는 것입니다. 간단하지만 수익성있는 전략 없이는 무의미합니다. 이제 우리의 임무는 전략 템플릿을 만들고 테스트하는 방법을 배우는 것이며 모든 전략이 이를 수행할 것입니다. 또한 템플릿에 아무 템플릿이나 밀어넣고 테스트한 후 문제가 해결되면 터미널을 통해 특정 거래를 수행할 수 있습니다.

필요한 지표가 모두 준비되었습니다. Python으로 만든 그림을 참조하십시오(Python은 모든 종류의 그래프를 그리는 데 매우 편리하고 빠릅니다.). 이것은 단일 점프 - 1(t) 또는 전환 기능에 대한 응답입니다. 사실, 표준 테스트 중 하나입니다.


fm - 일반적인 이동 평균(교정에만 해당), f1 - EMA, 수정된 계수 계산 및 f2 - 비표준 표시기.

그러나 우리의 친구는 이렇게 말했습니다.

Igor Makanu :

글쎄, 나는 백만 번 말했고 아마도 같은 횟수를 반복 할 것입니다 ... MT 전달의 지표보다 낫습니다 (표준 ... 구 슬라브 지표, 말하자면 ... 이교도 !!!) 아니요 하나는 무엇이든 생각해 냈습니다.

따라서 과학으로 머리를 속이지 않기 위해 표준 EMA 및 전략 소스를 받게 됩니다. 그러나 나는 내 지표에 대한 전략을 만들고 테스트 할 것입니다. 아마도 나는 엿보는 눈에서 무언가를 숨길 것이지만 기능을 잃지는 않을 것입니다.

그러나 이 모든 것은 EMA를 건너기 위해서가 아니라 시작되었습니다. 이 모든 것의 목표는 기계 학습 전략입니다. 현재 다양한 분류 방법을 테스트하고 있습니다. 테스트 결과는 다음과 같습니다.

지금까지 최고의 Gauss, RBF SVM, Neural Networks 및 naive Bayesian 분류. Python 프로그램은 이미 준비되어 있고 인터넷 어딘가에 있지만 데이터 준비는 사용자에게 달려 있습니다.

가다.

 
Yuriy Asaulenko :
4페이지의 주제가 끝나면 마침내 Python에서 선언된 전략으로 이동할 준비가 되었습니다. 이를 위해 모든 작업이 이미 완료되었습니다.
우리는 간단한 전략으로 시작할 것입니다 - EMA 크로스오버에서 거래(가능한 수정).
내가 신경망(NN)을 마스터했을 때 나는 간단한 작업으로 시작했습니다. NN은 EMA의 교차점을 결정해야 했습니다. 실무적으로는 전혀 무의미한 작업이지만, 시장 데이터를 국회에 제출하는 방법과 준비 방법을 결정할 수 있게 했고 많은 교육 문제를 해결했습니다.
이제 우리의 임무는 이익을 전혀 창출하지 않고 터미널에 연결하지도 않는 것입니다. 간단하지만 수익성있는 전략 없이는 무의미합니다. 이제 우리의 임무는 전략 템플릿을 만들고 테스트하는 방법을 배우는 것이며 모든 전략이 이를 수행할 것입니다. 또한 템플릿에 아무 템플릿이나 밀어넣고 테스트한 후 문제가 해결되면 터미널을 통해 특정 거래를 수행할 수 있습니다.

필요한 지표가 모두 준비되었습니다. Python으로 만든 그림을 참조하십시오(Python은 모든 종류의 그래프를 그리는 데 매우 편리하고 빠릅니다.). 이것은 단일 점프 - 1(t) 또는 전환 기능에 대한 응답입니다. 사실, 표준 테스트 중 하나입니다.


fm - 일반적인 이동 평균(교정에만 해당), f1 - EMA, 수정된 계수 계산 및 f2 - 비표준 표시기.

그러나 우리의 친구는 이렇게 말했습니다.

따라서 과학으로 머리를 속이지 않기 위해 표준 EMA 및 전략 소스를 받게 됩니다. 그러나 나는 내 지표에 대한 전략을 만들고 테스트 할 것입니다. 아마도 나는 엿보는 눈에서 무언가를 숨길 것이지만 기능을 잃지는 않을 것입니다.

그러나 이 모든 것은 EMA를 건너기 위해서가 아니라 시작되었습니다. 이 모든 것의 목표는 기계 학습 전략입니다. 현재 다양한 분류 방법을 테스트하고 있습니다. 테스트 결과는 다음과 같습니다.

지금까지 최고의 Gauss, RBF SVM, Neural Networks 및 naive Bayesian 분류. Python 프로그램은 이미 준비되어 있고 인터넷 어딘가에 있지만 데이터 준비는 사용자에게 달려 있습니다.

가다.


그들이 신경망으로 전환한 것은 유감입니다. 그러나 대부분 매우 유용하므로 유용할 것입니다.

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

기계 학습 로봇

유리 아사울렌코 , 2018.09.21 00:45

그들은 할 수 없습니다. 최대값은 역사에 적합합니다.


 
Sergey Chalyshev :


그들이 신경망으로 전환한 것은 유감입니다. 그러나 대부분 매우 유용하므로 유용할 것입니다.

이 주제에서는 NS 및 기타 ML 방법으로 전환할 계획이 없습니다. 지금은 적어도.) 보자.

여기에서 시스템 템플릿이 Python으로 만들어집니다. 이 템플릿의 특정 콘텐츠는 특정 사용자의 비즈니스입니다.

글쎄요, 가끔 파이썬 라이브러리의 가능성을 보여주는 것은 불필요한 일이 아니라고 생각합니다.

 
추신: 예, FORTS(MOEX)를 위해 모든 전략을 수행하겠다고 말하지 않았습니다. 나는 Forex DC로 플레이하지 않습니다.
 
게임을 계속합시다. 오늘 우리는 준비되어 작동합니다.
2. 전략 템플릿.
3. 간단한 EMA 교차 전략이 템플릿에 배치됩니다.

프로그램이 시작되면 전략이 테스트되고 모든 거래에 대한 보고서가 CSV 파일에 저장되고 이익 차트가 콘솔에 표시되며 디스크에 저장할 수 있습니다(그림 참조).


테스트는 SBER MOEX 선물(3개월 간격, TF - 1m, 총 55,000개 양초)에 대해 수행되었습니다. 이 전략은 양초의 종가만 사용했습니다. 테스트 기간은 프로그램 시작부터 ~1분입니다. 이것은 양초당 약 1ms입니다.
SBER 미래의 기록을 포함하여 필요한 모든 프로그램 파일이 있는 폴더 - 첨부 파일을 참조하십시오.
프로그램을 실행하려면 main.py 파일을 실행하여 실행하십시오. 시작하기 전에 Python에 필요한 모든 패키지와 모듈이 설치되어 있는지 확인하십시오. Anaconda를 실행하는 경우 필요한 모든 모듈이 이미 설치되어 있습니다.
일반적으로 템플릿에 전략을 작성하고 테스트합니다.
이제 이 기술의 적용을 어떻게 상상할 수 있습니까?
신경망을 사용하여 입증된 전략을 Python 플랫폼에 약간의 업그레이드를 통해 이전하기로 결정했습니다. 이를 통해 최소한의 비용으로 Python에서 사용할 수 있는 ML 기술의 사용을 마스터하고 시스템을 터미널에 연결하고 직접 작동을 시작할 수 있습니다. 왜냐하면 나를 위해 주요 플랫폼은 MOEX이고 Forex는 보조 성격을 띠고 있으며 가까운 장래에 MT 터미널에 시스템을 연결할 계획은 없지만 주제의 시작 부분에서는 작업 옵션으로 가정했습니다. 밖으로.
그러나 포럼에는 원하는 경우 수행할 수 있는 전문가가 충분히 있습니다. 게다가 Python의 C API는 로컬 전문가들이 성공적으로 처리한 동일한 R의 API로 훨씬 간단합니다.
주제의 작업이 완전히 완료된 것으로 간주 될 수 있습니다.
파일:
Public.zip  683 kb