QUIK용 거래 로봇 프로그래밍을 위한 알고리즘 언어 QPILE.
거래 로봇 은 프로그램 코드와 유사한 특정 언어로 작성할 수 있습니다. QPILE은 그 중 하나이며 이 기사에서는 이 언어를 고려하고 QPILE 및
LUA 언어 를 비교하며 이 언어로 된 로봇의 예도 제공합니다.
QPILE에 대한 일반 정보
QPILE은 QUIK Programmable Interface and Logic Environment의 약자입니다.
이것은 QUIK 워크스테이션에서 해석하는 일련의 명령입니다. 주로 증권 포트폴리오의 가격을 계산하는 데 사용됩니다. 언어는 다음에도 사용됩니다.
- 브로커의 데스크탑과 포트폴리오에 있는 클라이언트 자산 가격의 동적 재계산. 후자의 경우 총 가격도 다시 계산됩니다.
- 자체 알고리즘과 마진 대출 데이터를 사용하여 누락된 지표를 찾습니다.
- 올바른 거래 전략을 개발합니다.
언어는 테이블의 구조를 설명합니다: 열과 행의 지정, 공식. 후자의 경우 수학 연산, 변수, 다른 테이블의 데이터를 계산에 사용할 수 있습니다. QUIK 서버 또는 사용자 디스크에서 로드된 프로그램 코드는 수식의 값을 계산하는 언어 인터프리터에 의해 처리됩니다. 한 프로그램의 테이블에는 하나의 데이터 소스가 있지만 계산은 중복되지 않으며 시스템의 효율성에 영향을 미치지 않습니다. QUIK 테이블로 작업할 때 QPILE의 테이블에는 표준 기능이 있습니다. 직장의 QUIK에는 QPILE 코드 디버거가 장착되어 있습니다. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm 이 언어를 사용하면 주어진 구조로 새 테이블을 설명하고, 특정 값으로 셀을 강조 표시하고, 수학적 및 논리적 표현식을 기반으로 필드를 계산할 수 있습니다. 사용자는 소리 신호 또는 문자 메시지의 형태로 알림을 받습니다. QPILE의 테이블은 ODBC 및 DDE 서버를 통해 편집, 인쇄, 복사, 내보낼 수 있습니다. 초기 데이터는 QUIK 테이블에서 가져온 것입니다.
- 실행 및 비인격적인 거래를 포함한 거래;
- 장외 거래 및 주문에 대한 정지 주문을 포함한 주문 – 정산 거래에 대한 보고서;
- “고객 포트폴리오”, “구매/판매”
- 돈, 거래 계정, 상품별로 참가자의 위치 데이터.
QPILE 기반 테이블은 컨텍스트 메뉴를 통해 텍스트 파일로 복사하거나 기술 분석 시스템으로 내보낼 수 없으며 이를 기반으로 차트를 개발할 수 없습니다. QPILE 기반 테이블은 필터링하거나 정렬할 수 없습니다.
테이블 작업
프로그램 코드를 로드하려면 서비스 메뉴를 선택한 다음 QPILE 스크립트를 선택해야 합니다. Ctrl+F11 조합을 사용할 수도 있습니다. “추가”를 클릭하고 원하는 파일을 선택해야 하는 후. 확장자는 .qpl이며 해당 이름은 사용 가능한 스크립트 목록에 나타납니다.
프로그램에 오류가 있는 경우 시스템은 결함이 있는 파일의 이름과 오류가 있는 줄 번호가 포함된 “메시지 창”에 알림을 보냅니다. 파일에서 오류가 발견되지 않으면 다음 데이터가 필드에 표시됩니다.
- 테이블 이름;
- 열 및 클라이언트의 수;
- 식별자 및 클라이언트 목록
- 매개변수 목록과 파일의 소스 코드.
“로컬로 다운로드” 버튼을 사용하면 파일에서 테이블을 가져올 수 있고 “서버에 업로드” 버튼을 누르면 모든 사용자가 액세스할 수 있도록 프로그램을 서버로 보냅니다. 테이블을 생성하려면 테이블 생성을 클릭합니다. “사용 가능한 스크립트”에서 실행해야 하는 프로그램을 선택하고 “클라이언트 필터”를 통해 줄 수를 설정하고 필요한 열과 순서를 정의합니다.
계산 일시 중지 및 재개, 계산 다시 시작 및 디버그 모드, 설명을 파일에 저장, 수식 시연 및 스크립트 매개변수는 컨텍스트 메뉴에서 사용할 수 있습니다.
QPILE 구성
데이터 유형
- 문자열 – 문자열.
- Double은 부동 소수점 숫자입니다.
- 컬렉션 – 컬렉션입니다.
- Map – 연관 배열 – 키별로 정보를 얻을 수 있는 일련의 쌍입니다.
식
덧셈, 뺄셈, 곱셈, 나눗셈의 산술 연산이 적용됩니다. 논리적 표현 “and”, “or”, equals, more, less, inequalities, 조건부 구성 “if … then …”도 사용됩니다.
기능
함수는 프로그램의 어느 위치에나 있을 수 있으며 다른 이름을 가질 수 있습니다. 총 18개의 수학 함수 및 함수 그룹을 사용하여 테이블 및 매개변수, 연관 배열, 테이블 목록 및 기타 작업의 값을 얻을 수 있습니다. 1학년:
- 인수의 사인, 코사인, 탄젠트, 코탄젠트 값을 반환하고 인수의 지수를 계산하고 난수를 생성하는 등의 수학 함수
- 일반 명령 : NEW_GLOBAL은 전역 변수를 초기화하고 MESSAGE는 메시지를 엽니다.
작업할 함수:
- 개체 컬렉션(컬렉션) . 이를 통해 새 컬렉션을 만들고, 필요한 수의 요소를 반환하고, 원하는 값을 바꾸거나 삽입할 수 있습니다.
- 연관 배열(MAP) . 어레이 생성 및 관리를 지원합니다.
- 파일 – 프로그램의 로그 로그를 유지 관리하는 텍스트 파일 작업. 파일 이름에 경로가 포함될 수 있습니다.
- 문자열 .
- 그래프 . GET_CANDLE 함수는 양초 데이터에 액세스하고 GET_CANDLE EX는 연관 배열을 반환합니다.
- 응용 프로그램 . 주문을 생성하고 거래 시스템으로 보냅니다.
- 태그 . 차트에 건설 및 설치. 하나 또는 모든 레이블 추가, 삭제, 특정 레이블에 대한 매개변수 가져오기 및 설정.
다음을 위한 기능도 있습니다.
- 임의의 QUIK 테이블 행과 사용 가능한 매개변수 목록에 액세스합니다 . 작업장 테이블 데이터에 대한 액세스. 여기에는 MAP을 반환하는 GET_ITEM과 항목 수를 반환하는 GET_NUMBER_OF가 포함됩니다.
- 프로그래밍 가능한 테이블로 작업하려면 . 이 명령은 OWN 테이블에서 작동합니다. 이전 단락의 표준 기능과 이러한 기능으로 읽을 수 있습니다. 이 그룹에는 인덱스가 있는 행을 추가, 수정 및 삭제하고 OWN 테이블을 완전히 지우는 명령이 포함됩니다.
값을 얻으려면 다음을 사용하십시오.
- 현재 거래 테이블 . GET_PARAM(_EX) 명령을 사용하여 교환 정보 매개변수를 가져옵니다.
- 견적 창 . 악기 따옴표의 값을 얻습니다.
- 상품 및 화폐별 포지션 테이블 . 코드별로 클라이언트, 회사, 도구, 예금 계좌에 대한 데이터를 얻습니다.
서비스 기능 – 현재 거래 세션의 날짜, 연관 시리즈, 현재 날짜 및 시간 반환, 연결 상태 결정, 계산 모드 중단.
디버깅 프로그램
프로그램 작동에 대한 단계별 제어는 “디버그” 창에서 수행됩니다. 컨텍스트 메뉴 “디버그 모드에서 계산 시작”에서 열립니다. breakpoint() 명령으로 열 수도 있으며 프로그램 행은 빨간색으로 강조 표시됩니다. 이 창에는 프로그램 코드와 변수 값이 있는 필드가 있습니다. 창 하단에는 “다음 단계”, “실행 계속”, “계산 중지” 버튼이 있습니다. F5를 누르면 프로그램 실행이 계속되고 Shift + F5 조합은 디버깅을 중지하고 F10 키는 다음 줄로 이동합니다.
QPILE 또는 LUA?
LUA는 거래 로봇을 만들기 위한 새로운 프로그래밍 언어입니다. QPILE과 마찬가지로 QUIK 터미널에서 구현됩니다. https://articles.opexflow.com/programming/lua.htm 거래용 거래 로봇 개발 전용 사이트는 QPILE보다 LUA 언어의 장점을 보여줍니다. 따라서 개발자 도구와 객체 지향 프로그래밍 메커니즘을 갖춘 컴파일되지 않은 스크립트 및 바이트 코드로 기능할 수 있습니다. 다른 프로그래밍 언어로 작성된 개체는 LUA 프로그램에 연결할 수 있습니다. LUA는 메타테이블을 포함하여 8가지 데이터 유형을 제공합니다. LUA 언어는 다중 스레드이며 빠르며 트랜잭션 및 터미널 이벤트는 비동기식입니다. LUA는 QPILE보다 더 일반적이며 이를 위해 많은 확장이 작성되었습니다.
QPILE 언어는 이제 더 이상 사용되지 않습니다. 포럼의 전문가들은 LUA 사용을 권장합니다. 유용하고 효과적인 프로그램이 여전히 사용되고 있지만.
그러나 QPILE 언어는 LUA에 비해 단순하므로 프로그래밍 경험이 없다면 QPILE을 선택하는 것이 좋습니다. 이 언어에서는 복잡한 계산을 수행할 필요가 없는 경우 간단한 로봇을 작성할 수 있습니다.
QPILE에서 거래 로봇을 만드는 방법은 무엇입니까?
거래 고문을 만들려면 다음 프로그램이 필요합니다.
- ITS 퀵.
- 메모장++ 코드 편집기.
- QPILE에 대한 안내입니다.
- 메모장++에서 코드 감지를 위한 XML 플러그인.
이 프로그램을 다운로드하여 설치하십시오. C:\Users\User\ AppData\Roaming\Notepad++\ 경로에 userDefineLang.xml을 배치하여 언어 구문을 활성화합니다.
먼저 다음과 같은 거래 전략을 만들어 보겠습니다. 스크립트는 매분 마지막 몇 개의 캔들에 대해 Hi 및 Low를 계산해야 하며, 기기의 현재 가격을 확인해야 합니다. 상품 가격이 해당 기간의 최대 또는 최소 값에 도달하면 포지션이 필요한 방향으로 열립니다. 매도 신호가 수신되면 매수 포지션이 자동으로 닫힙니다. 로봇은 GAZP 도구를 사용하며 시간 프레임은 1분으로 설정됩니다. 하이-로우 측정 깊이는 5개의 양초로 설정됩니다. Long을 입력하려면 해당 기간의 최대 값의 현재 가격과 교차 규칙이 설정됩니다. 현재 가격이 이 5개의 캔들에 대한 최소값을 초과하면 로봇은 매도에 진입합니다. 기본 설정과 서버 날짜 및 시간을 사용하여 메모장++에서 코드 블록을 작성합니다. 이 코드는 아래 그림에 나와 있습니다.
코드의 처음 4줄은 프로그램 헤더를 형성합니다. 6행과 44행 사이에는 로봇의 내용이 포함된 프로그램 본문이 있습니다. 라인 7 – 12에는 기기, 그룹 및 클라이언트의 코드, MICEX의 계정 번호가 포함된 사용자 설정이 포함되어 있습니다. 이 값은 프로그램 실행 중에 변경되지 않습니다. 13-16행은 변수의 초기값입니다. 각 반복 패스에서 0으로 재설정됩니다. 17 – 21행에는 서버 날짜 및 시간을 사용하라는 표시가 포함되어 있습니다. 이 데이터는 DATETIME 함수에 전달되어 텍스트 형식으로 변환됩니다. 라인 22 – 29는 수신된 데이터를 테이블로 보냅니다. 코드를 저장하고 qpl 확장자를 지정해야 합니다.
Ctrl+F10을 누르고 생성된 qpl 파일을 선택하여 QUIK에서 프로그램을 엽니다. Ctrl+F11 조합을 사용하여 “포트폴리오 작업” 창을 열고 포트폴리오 계산 기간을 5분으로 설정합니다. Ctrl+F12를 눌러 테이블에 표시할 열을 설정합니다. 그림은 로봇의 작업 결과를 보여줍니다.
프로그램에 몇 가지 기능과 조건을 더 추가해 보겠습니다.
“사용자 설정” 블록은 마지막 N개 막대를 얻는 기능에 사용되는 NUMBER 및 INTERVAL 변수로 보완됩니다. DATETIME 함수는 서버 날짜와 시간을 설정하고 현재 날짜와 시간 함수인 CURDATE와 CURTIME을 호출한다. 현재 시간은 24행에서 숫자로 변환됩니다. 26행은 UTC 10:00:01에서 18:40:00까지 알고리즘이 실행되는 시간을 설정합니다.
대부분 지표, 오실레이터, 통계 계산은 차트의 마지막 N 캔들로 계산됩니다. QPILE에는 이처럼 N 주기 전의 캔들 개수를 모으는 기능이 없지만, 차트의 캔들에 날짜와 시간별로 텍스트 형식으로 접근하는 GET_CANDLE 함수가 있다. 우리 코드에는 마지막 N개의 막대 OHLC()를 가져오는 함수가 포함되어 있습니다. COLLECTION 목록에 중첩된 마지막 촛불의 매개변수를 사용하여 컬렉션을 생성합니다. 프로그램은 INTERVAL 값을 확인하고 0~60 범위에 속하지 않으면 값이 허용 범위와 일치하지 않는다는 메시지가 표시됩니다. 양초가 있는 MAP 컬렉션이 88행에 생성됩니다. 새 양초에서 이전 양초까지의 INTERVAL 단계로 차트를 필요한 깊이까지 폴링하는 FOR 루프. 90행에서 주기가 선언된 후 로봇은 일정 간격으로 되돌아갑니다. GET_CANDLE로 양초를 얻으면 INSERT_COLLECTION_TEAM 함수를 사용하여 BARLIST 컬렉션에 배치합니다. OHLC() 명령의 작동 결과로 BARLIST는 NUMBER의 양만큼 기기 차트의 마지막 캔들로 보충됩니다. 컬렉션의 요소 수는 GET_COLLECTION_COUNT() 명령에 의해 요청되고 BARCOUNT 변수에 의해 보고됩니다. 서버 날짜, 시간, INSTRUMENT 및 BARCOUNT 변수의 값은 OUTPUT의 SET_VALUE() 함수에 의해 보고됩니다. 이 배열은 CREATE_MAP() 명령에 의해 생성됩니다. 데이터는 아래 사진에서 볼 수 있는 사용자 정의 테이블에 포함됩니다. INSTRUMENT 및 BARCOUNT 변수의 값은 OUTPUT의 SET_VALUE() 함수에 의해 보고됩니다. 이 배열은 CREATE_MAP() 명령에 의해 생성됩니다. 데이터는 아래 사진에서 볼 수 있는 사용자 정의 테이블에 포함됩니다. INSTRUMENT 및 BARCOUNT 변수의 값은 OUTPUT의 SET_VALUE() 함수에 의해 보고됩니다. 이 배열은 CREATE_MAP() 명령에 의해 생성됩니다. 데이터는 아래 사진에서 볼 수 있는 사용자 정의 테이블에 포함됩니다.
QPILE의 거래 로봇 – 기성 솔루션
이동 평균 로봇
실제 거래에 적합하지 않은 데모 로봇.
로봇에는 5개의 매개변수가 있습니다. DATE, TIME, PRICE 식별자 값은 레벨 30으로 설정됩니다. MOVING 및 TP 식별자는 정밀도가 0으로 설정됩니다. QPILE에서 작성된 이동 평균의 로봇 코드:
N. Moroshkin 위치 계산기
현재 매도호가와 매수호가에서 롱포지션과 숏포지션의 목표와 최대 허용 드로다운 수준을 계산하는 프로그램입니다. 레벨은 포지션 엔트리 볼륨의 2가지 값에 대해 계산됩니다. 로봇은 바의 위쪽 방향으로 포지션을 오픈하는 계산과 함께 시가에서 한 단계에서 스탑 오더를 할당할 때 허용 포지션 볼륨을 찾습니다. 발견된 레벨은 터미널 창에 입력되고 이후에 가격 차트에 반영됩니다. 거래는 주어진 상품에 대해 고정되어 있습니다. 위치가 열리면 로봇이 매개변수 계산을 시작합니다. 위치 변경에 따라 할당된 순서가 조정됩니다.
볼륨 필터
양초 볼륨의 산술 평균을 계산하고 이를 X 계수로 평균 제품과 비교하기 위한 로봇 포트폴리오 선택한 기간의 플롯 차트에서 올바르게 작동합니다.
옵션 그리스
옵션의 “그리스”를 계산하고 표시하기 위한 포트폴리오. Black-Showers 방식과 다릅니다.
QUIK용 TRIX 거래 로봇
이 프로그램은 TRIX 지표를 기반으로 합니다. 표시기가 0선, 지정된 수준 위에서 닫히면 로봇은 긴 위치를 취합니다. 포지션은 이익실현, 손절매 또는 후행 정지로 마감됩니다.
M4 전처리기
QPILE 및 Lua와 함께 작업하기 위한 프로그램입니다. 실행 파일이 포함된 아카이브, 문서 및 정규식 구문 분석이 포함된 DLL 파일이 포함됩니다. 프로그램을 사용하려면 실행 파일의 압축을 풀고 C:\Windows 경로에 regexp2를 넣어야 합니다. QUIK용 QPILE 강의: https://youtu.be/vMTXwDUujpI Quik 터미널의 QPILE에 스크립트 설치: https://youtu.be/0B7qL8Svh7I 내장된 QPILE 알고리즘 언어의 사용을 설명하는 github 섹션 링크에 있는 QUIK 시스템 워크스테이션 – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE은 구식 언어이지만 초보자 트레이더도 매우 간단하고 액세스할 수 있습니다. 오랫동안 스스로를 입증한 거래 로봇과 프로그램이 계속해서 작업하고 있습니다. 그러나 더 복잡한 작업의 경우 LUA를 사용하는 것이 좋습니다.
0к