Oanda fx 무역 관행.
우분투 시스템을 사용하고 있다면 약간 다른 버전의 자바를 설치해야합니다. U 자회사를 통해 지속적으로 확장하는 글로벌 고객 기반을 제공합니다. 이는 외환 거래에 대한 직접적인 첫 번째 게시물이기 때문에 아래에 제시된 코드는 실제 거래 환경에 직접 적용될 수 있으므로 다음 포기 사항을 제시하고자합니다 : 대기열이 비어 있으면 "하트 비트"라고하는 짧은 수면 시간 후에 루프가 다시 시작됩니다. 이 파일의 목표는 거래라고합니다. 각 하위 사전에는 3 개의 개별 API 엔드 포인트가 있습니다.
이것은 광범위한 fx 제조 착용입니다. 데이터는 매우 까다로 웠고 대부분의 시간은 매우 낮습니다. 아래는 우리가 넓은 플랫폼에서 기대할 수있는 힘이있는 일반적인 길입니다. 브랜드 주문 및 판매 주문은 함께 설정되며 이중 옵션, 후행 설정 또는 두 가지 재능의 실행이 매우 정직한 단일성을 제공합니다. 거대한 창문과 큰 창문 사이의 직업에 익숙해지지 않고 두 배로 된 두 배의 거래로 사실을 설정할 수 있습니다. 노력의 균형도 꽤 카드입니다. 예외적 인 수준에서 비잔틴 언어를 지키지 않는 상인들에게 조기에 관련성이 있습니다. 균열 계정은 웹 사이트가이 상황과 함께 편안한 패널을 느낄 때까지 신호를 받자 마자 유지됩니다. 데모 지점을 모토로 삼은 방대한 권장 사항과는 대조적입니다. 관련 연구는 fxTrade Practice에서 수행됩니다. 외화 정의 모든 통화의 atbeginner하지만 어떤 속도로, 그 방향은 귀하의 웹 사이트에 대한 forex 뉴스를 등록하거나 그 재능에서 헌신하기 위해 진행될 수 있습니다 변화 할 수 있습니다. 1에서의 레버리지 발생 : 생성 될 수있는 폭 넓은 물결은 OANDA fxTrade를 사용하는 것을 선호하는 이유입니다. MetaTrader 4는 기능의 거래로 최고의 현대화로 정의됩니다. 하나는 상장 중개인이 플랫폼 및 거래자를 위해 oanda fx 무역 관행을 금전적으로 금전에 제공하는 것입니다. 그들은이 위젯을 우리 사이트에 투자함으로써 그렇게합니다. 그 Oanda fxTrade 행위는이 대리인에게 감사하지 않을 것이므로 목표를 계속 탐구하십시오. 그것은 다른 위험한 거래자들을 복사하는 것을 의미합니다. 하나는 상인 규모로 사회적으로 혼자 시작하는 위험에 대한 oanda fx 무역 관행입니다. 기절 한 수단은 상인의 제품에 관심을 가면서 이동 중에 추가하거나, 까다 롭거나 번쩍 일 수 있습니다. 가장 우수한 Oanda fxTrade 컷은이 상황이 나중에 지원되지 않는다는 것을 나타냅니다. 또한 비잔틴 페이지를 재생하는 것 외에도 API 라이브러리를 투자하여 자동 거래를 구현하는 인상이 있습니다. 이들은 거래 알고리즘과 같은 많은 것을 취할 수 있고, 손실을 막고, 약속을 취할 수 있으며, 유행의 과거 거래를 만져서 거래를 선택할 수 있습니다. 그러나 새로운 해는 자동 거래를 크게 유지하지 않아야합니다. 또한 트레이딩 뒤에 가장 훌륭한 것을 볼 수 있습니다. Oanda fxTrade Improvements More는 정확한 교차로에서 더 적은 개요에 이르기까지 전문가를위한 관련 뇌졸중 수준입니다. 제공은 또한 학술적 특징 인 인류에 대해 직접 측정 될 수 있습니다. 그것은 외환 거래 영국에 매우 동등하게 차트에 우리를 추가하는 세금입니다. 관련 파리는 성장하는 MetaTrader 제공 업체가 아니지만, 경제적 손실과 집에 대한 선전을 훌륭하게 구현했기 때문에 플랫폼에 몇 년이 걸릴 수 있습니다. 그럼에도 불구하고이 확장의 제품 중 하나는 실행 페이지입니다. 이 곳에서 안드로이드는 다른 어느 곳보다 뛰어나고 여기서 수동 거래 pdf fix는 또한 거래를하고 있습니다. 신속한 이점은 표준 데이터가 아닌 노트 단위의 이중 단위를 구입할 수 있다는 것입니다. Oanda fxTrade 결말 결론 우리는 충분히 기대할 수있는 모든 방향의 거래가 있기 때문에 새로운 해에는 무겁지만 더 많은 불확실한 로봇이 부족합니다. 또한 인간은 회계 처리를 위해 차트 및 수익금과 보험에 대한 탐험가로서의 재정을 활용할 수 있으며이 연결이 문제를 평가하는지 여부를 확인할 수 있습니다.
테마 별 비디오 :
fxTrade 플랫폼 사용자 정의 - 2 부.
& ldquo; Oanda fx trade practice & rdquo;에 대한 1 개의 답변
콜 옵션은 파업 가격이 현재 거래를 초과하면 비공개입니다.
옥수수 (ZC) 옵션 견적.
미국, 미국, 영국 및 유럽의 상인을위한 최고의 외환 거래 웹 사이트 목록을 찾으십시오.
이 Forex 선 라이즈를 무료로 사용해보십시오!
다음은 자동화 된 Forex 거래 브로커의 포괄적 인 목록입니다.
그들은 힘을 얻는 방법을 배우기 위해서만 기업을 자극해야합니다.
우리는 65 명의 외환 거래 중개인리스트를 모았고 최고의 외환 중 9 개를 검토했습니다.
QuantStart.
QuantStart의 Quantcademy 회원 포털은 체계적인 거래를 학습하고 성공적인 알고리즘 거래자의 강력한 커뮤니티가 당신을 도울 수있는 상세한 교육 리소스를 제공합니다.
최신 기사.
양적 거래 시작하기?
QuantStart 목록을 구독해야하는 3 가지 이유 :
1. 퀀트 트레이딩 레슨.
계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!
2. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.
QuantStart.
빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.
퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.
Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.
2015 년 1 월 21 일 Michael Halls-Moore 작성
나는 이전에 QuantStart : 2014 In Review 기사에서 2015 년에 자동화 된 외환 거래에 관한 글을 쓸 것이라고 언급했습니다.
나 자신이 보통 주식 및 선물 시장에 대한 연구를 수행했다는 것을 감안할 때 일기 스타일로 외환 시장에 진입 한 나의 경험에 대해 쓰는 것이 재미있을 것이라고 생각했다. 각 "일기 항목"은 이전에 작성한 모든 항목을 기반으로하지만 실제로 자체적으로 포함되어야합니다.
일기장의 첫 번째 항목에서는 연습 및 라이브 설정에서 자동으로 거래를 실행할 수있는 기본 다중 스레드 이벤트 기반 거래 엔진을 만드는 방법뿐만 아니라 OANDA와 함께 새로운 실제 중개 계좌를 설정하는 방법을 설명합니다.
작년에 우리는 주식 및 ETF를 중심으로 이벤트 중심의 백 테스터를 보는데 많은 시간을 보냈습니다. 제가 아래에 제시 한 것은 외환을 대상으로하며 종이 거래 또는 라이브 거래에 사용될 수 있습니다.
우분투 14.04에 대한 다음 지침을 모두 작성했지만 Anaconda와 같은 Python 배포판을 사용하여 Windows 또는 Mac OS X로 쉽게 변환해야합니다. Python 거래 엔진에 사용되는 유일한 추가 라이브러리는 OANDA API에 대한 HTTP 통신에 필요한 요청 라이브러리입니다.
이것은 외환 거래에 관한 직접적인 첫 번째 게시물이기 때문에 아래에 제시된 코드는 실제 거래 환경에 직접 적용될 수 있으므로 다음과 같은 면책 조항을 제시하고자합니다.
면책 조항 : 마진에 대한 외환 거래는 높은 수준의 위험을 수반하며 모든 투자자에게 적합하지 않을 수 있습니다. 과거 성과가 미래의 성과를 나타내는 것은 아닙니다. 높은 레버리지는 당신뿐만 아니라 당신을 도울 수 있습니다. 외환에 투자하기로 결정하기 전에 투자 목표, 경험 수준 및 위험 식욕을 신중하게 고려해야합니다. 초기 투자의 일부 또는 전부를 상실 할 가능성이 있기 때문에 잃을 수없는 돈을 투자해서는 안됩니다. 외환 거래와 관련된 모든 위험에 대해 알고 있어야하며, 의심스러운 점이 있으면 독립적 인 재정 고문에게 조언을 구해야합니다.
이 소프트웨어는 "있는 그대로"제공되며 상품성 및 특정 목적에의 적합성에 대한 묵시적인 보증을 포함하여 (단, 이에 한하지 않음) 명시 적이든 묵시적이든 어떠한 보증도하지 않습니다. 섭외 자나 기고자는 직접, 간접, 부수적, 특별, 모범적 또는 파생적 손해 (대체 제품 또는 서비스의 조달, 사용, 데이터 또는 이익의 손실을 포함하되 이에 국한되지는 않음)에 대해 책임지지 않습니다. 비즈니스 중단) 및 계약 이론, 엄격한 책임 또는 불법 행위 (과실 또는 태만 포함)에 관계없이 그러한 소프트웨어의 사용으로 인해 발생하는 모든 손해에 대한 책임을지지 않습니다.
OANDA로 계정 설정.
가장 먼저 떠오르는 질문은 "왜 OANDA를 선택해야합니까?"입니다. 간단히 말해, API가있는 외환 중개인을 위해 인터넷 검색을 한 후 OANDA는 최근에 거의 모든 언어에서 쉽게 쉽게 전달할 수있는 적절한 REST API를 발표했습니다. 개발자 API 문서를 읽은 후에는 적어도 연습 계정으로 시도해보기로했습니다.
명확히하기 - OANDA와의 기존 또는 기존 관계가 없으며 이전에 기금에서 근무하는 동안 연습 API 및 일부 간단한 사용법 (시장 데이터 다운로드 용)을 사용하여 제한된 경험을 토대로이 권장 사항 만 제공합니다. 아무도 비슷한 현대의 API를 가지고있는 다른 외환 중개인을 만나게되면 나는 그들에게도보기 좋게 기뻐할 것입니다.
API를 사용하기 전에 연습 계정에 가입해야합니다. 이렇게하려면 가입 링크로 이동하십시오. 다음 화면이 표시됩니다.
그런 다음 로그인 자격 증명으로 로그인 할 수 있습니다. 로그인 화면에서 'fxTradePractice'탭을 선택하십시오.
일단 로그인하면 귀하의 계정 ID를 기록해야합니다. '기본'옆에 검은 색 '내 자금'헤더가 있습니다. 내 것은 7 자리 숫자입니다. 또한 개인 API 토큰을 생성해야합니다. 이렇게하려면 왼쪽 하단의 '기타 작업'탭 아래에서 'API 액세스 관리'를 클릭하십시오.
이 단계에서 API 토큰을 생성 할 수 있습니다. 나중에 사용할 키가 필요하므로 잘 기록해 두십시오.
이제는 FXTrade Practice 응용 프로그램을 시작하여 실행 된 주문과 우리의 (paper!) profit & amp; amp; amp; 손실.
우분투 시스템을 사용하고 있다면 약간 다른 버전의 자바를 설치해야합니다. 특히 Java 8의 Oracle 버전입니다. 이렇게하지 않으면 연습 시뮬레이터가 브라우저에서로드되지 않습니다. 내 시스템에서 다음 명령을 실행했습니다.
이제 연습 거래 환경을 시작할 수 있습니다. OANDA 대시 보드로 돌아가 녹색으로 강조 표시된 "Launch FXTrade Practice"링크를 클릭하십시오. 실행 여부를 묻는 Java 대화 상자가 나타납니다. "Run"을 클릭하면 fxTrade Practice 도구가로드됩니다. 광산은 왼쪽에 따옴표가있는 EUR / USD 15 분 캔들 차트 기본값 :
OANDA fxTrade Practice 화면.
이 시점에서 우리는 OANDA API에 대한 자동화 된 외환 거래 시스템을 설계하고 코딩 할 준비가되었습니다.
무역 아키텍처 개요.
작년에 창출 한 주식 및 ETF에 대한 이벤트 중심의 백 테스터 시리즈를 따라 간다면 이러한 이벤트 중심의 트레이딩 시스템이 어떻게 작동하는지 알 수 있습니다. 이벤트 주도형 소프트웨어를 처음 접하는 사람들에게는 기사의 내용을 읽으면서 작업 방법에 대한 통찰력을 얻으시기 바랍니다.
본질적으로 전체 프로그램은 거래 시스템이 종료 될 때 종료되는 반복 실행 (infinte while while) 루프에서 실행됩니다. 프로그램의 중앙 통신 메커니즘은 이벤트가 포함 된 대기열을 통해 제공됩니다.
새 이벤트를 확인하기 위해 대기열에 계속 질의됩니다. 이벤트가 큐의 맨 위에서 제거되면 프로그램의 해당 구성 요소에 의해 처리되어야합니다. 따라서 시장 데이터 피드는 새로운 시장 가격이 도착하면 대기열에 배치되는 TickEvent를 만들 수 있습니다. 신호 생성 전략 오브젝트는 중개로 보내지는 OrderEvent를 작성할 수 있습니다.
그러한 시스템의 유용성은 프로그램에서 올바른 구성 요소에 의해 항상 올바르게 처리 될 수 있기 때문에 대기열에 어떤 순서 또는 유형의 이벤트가 배치되는지는 중요하지 않습니다.
또한 프로그램의 다른 부분은 별도의 스레드에서 실행될 수 있습니다. 즉, 다른 프로세스를 처리하기 전에 특정 구성 요소를 기다리지 않아도됩니다. 이는 시장 데이터 피드 핸들러와 전략 신호 생성기가 성능 특성이 크게 다른 알고리즘 거래 상황에서 매우 유용합니다.
주요 거래 루프는 다음 파이썬 의사 코드에 의해 제공됩니다 :
위에서 언급했듯이이 코드는 무한 루프에서 실행됩니다. 먼저 대기열을 폴링하여 새 이벤트를 검색합니다. 대기열이 비어 있으면 "하트 비트"라고하는 짧은 수면 시간 후에 루프가 다시 시작됩니다. 이벤트가 발견되면 해당 유형이 평가 된 다음 관련 모듈 (전략 또는 실행 핸들러)이 호출되어 이벤트를 처리하고 대기열로 다시 이동하는 새 모듈을 생성 할 수 있습니다.
거래 시스템을 위해 만들 기본 구성 요소는 다음과 같습니다.
스트리밍 가격 처리기 (Streaming Price Handler) - OANDAs 서버에 장시간 연결된 연결을 유지하고 관심있는 모든 계측기에 대한 연결을 통해 틱 데이터 (예 : 입찰 / 요청)를 전송합니다. 전략 신호 생성기 - 이벤트를 생성하고 실행 핸들러에 의해 실행될 거래 주문을 생성하는 데 사용합니다. Execution Handler - 주문 이벤트 세트를 가져 와서 OANDA로 맹목적으로 실행합니다. 이벤트 - 이 객체는 이벤트 대기열에서 전달되는 "메시지"를 구성합니다. 이 구현에는 TickEvent와 OrderEvent 만 필요합니다. 주요 진입 점 - 주요 진입 점에는 메시지 대기열을 지속적으로 폴링하고 올바른 구성 요소에 메시지를 발송하는 "거래"루프가 포함됩니다. 이것은 종종 "이벤트 루프"또는 "이벤트 처리기"라고합니다.
이제 코드의 구현에 대해 자세히 설명 할 것입니다. 이 기사의 맨 아래에는 모든 소스 코드 파일의 전체 목록이 있습니다. OANDA에서 계정 ID와 인증 토큰을 채웠다 고 가정하면 같은 디렉토리에 배치하고 python trading. py를 실행하면 주문 생성이 시작됩니다.
파이썬 구현.
결국 암호 또는 인증 키를 코드베이스에 저장하는 것은 좋지 않습니다. 누가 결국 프로젝트에 액세스 할 수 있는지 예측할 수 없기 때문입니다. 프로덕션 시스템에서는 이러한 자격 증명을 환경 변수로 시스템에 저장 한 다음 코드를 다시 배포 할 때마다 이러한 "envvars"를 쿼리합니다. 이렇게하면 암호 및 인증 토큰이 버전 제어 시스템에 저장되지 않습니다.
그러나 우리는 "장난감"거래 시스템을 구축하는 데 전적으로 관심이 있으며이 기사의 제작 세부 사항과 관련이 없으므로 대신이 인증 토큰을 설정 파일로 분리합니다.
다음 settings. py 구성 파일에는 OANDA 가격 스트리밍 API 및 거래 API에 대한 API 끝점을 저장하는 ENVIRONMENTS라는 사전이 있습니다. 각 하위 사전에는 실제, 실습 및 샌드 박스라는 세 개의 개별 API 끝점이 포함되어 있습니다.
샌드 박스 API는 코드를 테스트하고 오류나 버그가 없는지 확인하기위한 것입니다. 실제 또는 실제 API의 가동 시간 보장이 없습니다. 실무 API는 본질적으로 종이 교역 기능을 제공합니다. 즉, 시뮬레이션 된 연습 계정에 실제 API의 모든 기능을 제공합니다. 진짜 API는 바로 그것입니다 - 라이브 거래입니다! 코드에서 해당 끝점을 사용하면 라이브 계정 잔액과 교환됩니다. 엄청나게 조심하십시오!
중요 : Practice API와의 거래시 중요한 거래 비용, 즉 시장 영향의 비용은 고려하지 않는다는 것을 기억하십시오. 실제로 거래가 환경에 배치되지 않으므로 실적을 현실적으로 평가하고자하는 경우 시장 영향 모델을 사용하여이 비용을 다른 방법으로 다른 방법으로 계산해야합니다.
다음에서는 DOMAIN 설정에 따라 연습 계정을 사용합니다. 스트리밍 및 거래 API 구성 요소 각각에 대해 두 개의 도메인 사전이 필요합니다. 마지막으로 ACCESS_TOKEN 및 ACCOUNT_ID가 있습니다. 나는 OANDA 계정 페이지에서 액세스 할 수있는 자신 만의 ID를 사용해야하므로 더미 ID로 아래 두 가지를 채웠습니다.
다음 단계는 모든 개별 구성 요소가 통신하는 데 큐가 사용할 이벤트를 정의하는 것입니다. TickEvent와 OrderEvent라는 두 가지가 필요합니다. 첫 번째는 (최고) bid / ask 및 거래 시간과 같은 계측기 시장 데이터에 대한 정보를 저장합니다. 두 번째는 실행 핸들러에 명령을 전송하는 데 사용되며 따라서 계기, 거래 단위 수, 주문 유형 ( "시장"또는 "제한") 및 "측면"(즉 "구매"및 "판매" ).
이벤트를 미래 보장하려면 Event라는 기본 클래스를 만들고 모든 이벤트에 대해 상속받습니다. 이 코드는 아래 events. py에서 제공됩니다.
우리가 창조 할 다음 클래스는 거래 전략을 처리 할 것입니다. 이 데모에서는 단순히 모든 시장 진드기를 받아들이는 무의미한 전략을 만들고 5th tick마다 무작위로 EUR / USD 10,000 단위를 구매하거나 판매합니다.
분명히 이것은 어리석은 "전략"입니다! 그러나 코드 작성 및 이해가 쉽기 때문에 테스트 목적으로는 환상적입니다. 앞으로의 일기 항목에서 우리는 이것을 (희망을 가지고) 이익을 얻는 훨씬 더 흥미로운 것으로 대체 할 것입니다!
strategy. py 파일은 아래에서 찾을 수 있습니다. 그것을 통해 작동하고 무슨 일이 일어나고 있는지 보자. 먼저 events. py에서 무작위 라이브러리와 OrderEvent 객체를 가져옵니다. 임의의 구매 또는 판매 주문을 선택하려면 임의의 lib가 필요합니다. OrderEvent는 전략 객체가 이벤트 큐에 명령을 보내는 방식이므로 나중에 이벤트가 실행 핸들러에 의해 실행됩니다.
TestRandomStrategy 클래스는 계측기 (이 경우 EUR / USD), 단위 수 및 이벤트 대기열을 매개 변수 집합으로 가져옵니다. 그런 다음 얼마나 많은 TickEvent 인스턴스를 보았는지 알려주는 틱 카운터를 만듭니다.
대부분의 작업은 calculate_signals 메서드에서 발생합니다. 이 메서드는 단순히 이벤트를 취해 TickEvent인지 여부를 확인하고 그렇지 않으면 무시 카운터를 증가시킵니다. 그런 다음 계산 수가 5로 나눌 수 있는지 확인한 다음 시장 질서에 따라 지정된 수의 단위를 무작위로 구매하거나 판매합니다. 확실히 세계 최고의 거래 전략은 아니지만, OANDA 중개 API 테스트 목적에 적합 할 것입니다!
다음 구성 요소는 실행 핸들러입니다. 이 클래스는 OrderEvent 인스턴스를 기반으로 브로커 (이 경우 OANDA)에 "멍청한"방식으로 요청하는 작업을 담당합니다. 즉, 위험 관리 또는 포트폴리오 구축 오버레이가 없습니다. 실행 핸들러는 주어진 순서를 단순히 실행합니다.
"도메인"(연습, 실제 또는 샌드 박스), 액세스 토큰 및 계정 ID를 포함하여 모든 인증 정보를 Execution 클래스에 전달해야합니다. 그런 다음 라이브러리에 내장 된 Python 라이브러리 인 httplib와의 보안 연결을 만듭니다.
대부분의 작업은 execute_order에서 발생합니다. 이 메소드는 이벤트를 매개 변수로 요구합니다. 그런 다음 머리말과 매개 변수 인 두 개의 사전을 구성합니다. 그런 다음이 사전은 OANDAs API에 HTTP POST 요청으로 올바르게 인코딩됩니다 (urllib, 다른 Python 라이브러리에 의해 부분적으로 인코딩 됨).
우리는 인증 정보를 포함하는 Content-Type 및 Authorization 헤더 매개 변수를 전달합니다. 또한 계측기 (EUR / USD), 단위, 주문 유형 및 측면 (구매 / 판매)을 포함하는 매개 변수를 인코딩합니다. 마지막으로 요청을하고 응답을 저장합니다.
거래 시스템의 가장 복잡한 구성 요소는 OANDA의 시장 가격 업데이트를 처리하는 StreamingForexPrices 개체입니다. 두 가지 방법이 있습니다 : connect_to_stream 및 stream_to_queue.
첫 번째 방법은 Python 요청 라이브러리를 사용하여 적절한 헤더와 매개 변수를 사용하여 스트리밍 소켓에 연결합니다. 매개 변수에는 계정 ID 및 업데이트를 수신해야하는 필수 장비 목록이 포함됩니다 (이 경우 EUR / USD 만 해당). 다음 행에 유의하십시오.
이렇게하면 연결이 스트리밍되어 장기 실행 방식으로 열리게됩니다.
두 번째 메소드 인 stream_to_queue는 실제로 스트림에 연결을 시도합니다. 응답이 성공적이지 않으면 (즉, 응답 코드가 HTTP 200이 아닌 경우), 우리는 단순히 리턴하고 종료합니다. 성공하면 파이썬 사전에 반환 된 JSON 패킷을로드하려고 시도합니다. 마지막으로, 파이썬 사전을 악기, bid / ask 및 timestamp로 변환하여 이벤트 대기열로 전송되는 TickEvent로 변환합니다.
이제 우리는 모든 주요 구성 요소를 갖추고 있습니다. 마지막 단계는 지금까지 작성한 모든 것을 "기본"프로그램으로 마무리하는 것입니다. 이 파일의 목표는 trading. py라고하는 두 개의 개별 스레드를 작성하는 것입니다. 이 중 하나는 가격 처리기를 실행하고 다른 하나는 거래 처리기를 실행합니다.
왜 두 개의 별도 스레드가 필요합니까? 간단히 말하자면, 우리는 두 개의 "분리 된"코드를 실행하고 있으며 두 코드는 계속해서 실행 중입니다. 비 스레드 프로그램을 만들려면 가격 업데이트에 사용되는 스트리밍 소켓이 주 코드 경로로 결코 "릴리스"되지 않으므로 실제로 거래를 수행하지 않습니다. 비슷하게, 우리가 무역 루프를 실행한다면 (아래 참조) 실제로는 가격 흐름 소켓으로 흐름 경로를 반환하지 않습니다. 따라서 각 구성 요소마다 하나씩 여러 개의 스레드가 필요하므로 서로 독립적으로 수행 할 수 있습니다. 그들은 둘 다 이벤트 대기열을 통해 서로 통신합니다.
조금 더 자세히 살펴 보도록하겠습니다. 우리는 다음과 같은 두 개의 개별 스레드를 만듭니다.
함수 또는 메소드 이름을 대상 키워드 인수에 전달한 다음 iterable (예 : 목록 또는 튜플)을 args 키워드 인수에 전달한 다음 인수를 실제 메소드 / 함수에 전달합니다.
마지막으로 두 줄을 다음 줄로 시작합니다.
따라서 우리는 효과적으로 이벤트 큐를 통해 통신하는 두 개의 무한 반복 루핑 코드 세그먼트를 독립적으로 실행할 수 있습니다. 파이썬 스레딩 라이브러리는 파이썬의 CPython 구현과 GIL (Global Interpreter Lock)으로 인해 진정한 멀티 코어 멀티 스레드 환경을 생성하지 않습니다. 파이썬에서 멀티 스레딩에 대한 자세한 내용을 보려면이 기사를 살펴보십시오.
나머지 코드를 자세히 살펴 보겠습니다. 먼저 우리는 Queue, threading, time을 포함하여 필요한 모든 라이브러리를 가져옵니다. 위의 코드 파일을 모두 가져옵니다. 나는 개인적으로 장고 (Django) 작업에서 얻은 습관 인 구성 설정을 대문자로 만드는 것을 선호합니다!
그 후에 우리는 위의 파이썬 - 의사 코드에서 설명한 무역 기능을 정의합니다. 무한 while 루프는 이벤트 대기열에서 계속 폴링하고 루프가 비어있는 경우 루프 만 건너 뜁니다 (True : 동안)가 수행됩니다. 이벤트가 발견되면 TickEvent 또는 OrderEvent이며 적절한 구성 요소가 호출되어 수행됩니다. 이 경우 전략 또는 실행 핸들러 중 하나입니다. 그런 다음 루프는 "하트 비트"초 (이 경우 0.5 초) 동안 잠자기 상태로 유지되고 계속됩니다.
마지막으로 __main__ 함수에서 코드의 주요 진입 점을 정의합니다. 아래에 잘 설명되어 있지만 여기서 요약 할 것입니다. 본질적으로 이벤트 대기열을 인스턴스화하고 계기 / 장치를 정의합니다. 그런 다음 StreamingForexPrices 가격 스트리밍 클래스를 만든 다음 실행 실행 핸들러를 만듭니다. 둘 다 계정을 만들 때 OANDA가 제공 한 필수 인증 세부 사항을받습니다.
그런 다음 TestRandomStrategy 인스턴스를 만듭니다. 마지막으로 두 개의 스레드를 정의한 다음 시작합니다.
코드를 실행하려면 모든 파일을 같은 디렉토리에 저장하고 터미널에서 다음을 호출하면됩니다.
이 단계에서 코드를 중지하려면 "Ctrl-Z"또는 이와 동등한 방법을 통해 Python 프로세스를 강제 종료해야합니다. sys. exit () 코드를 안전하게 처리하기 위해 필요한 추가 스레드를 추가하지 않았습니다. Ubuntu / Linux 시스템에서 코드를 중지하는 방법은 다음과 같이 입력하는 것입니다.
그런 다음이 출력 (프로세스 번호)을 다음과 같이 전달하십시오.
여기서 PROCESS_ID는 pgrep의 출력으로 대체되어야합니다. 이것은 특히 좋은 습관이 아님을주의하십시오!
최신 기사에서 우분투의 프로세스 감독을 사용하여 거래 시스템을 연중 무휴로 운영하는보다 정교한 중지 / 시작 메커니즘을 만들 것입니다.
위의 코드에 대한 EUR / USD의 주요 거래 시간에 상대적인 시간에 따라 30 초 정도 경과 한 출력은 다음과 같습니다.
처음 다섯 줄은 OANDA에서 반환 한 JSON 틱 데이터를 입찰 가격과 함께 표시합니다. 이어서 실행 명령을 볼 수 있습니다! OANDA로부터 반환 된 JSON 응답뿐만 아니라 10,000 단위의 EUR / USD 및 구매 한 가격에 대한 구매 거래가 시작되었음을 확인했습니다.
이 명령은 "Ctrl-Z"명령 또는 유사한 명령으로 프로그램을 종료 할 때까지 계속 실행됩니다.
무엇 향후 계획?
최신 기사에서 우리는 다음을 포함하여 많은 개선이 필요하게 될 것입니다 :
실제 전략 - 수익성있는 신호를 생성하는 적절한 forex 전략. 생산 기반 시설 - 원격 서버 구현 및 중지 / 시작 기능을 갖춘 24/7 모니터링 거래 시스템. 포트폴리오 및 위험 관리 - 전략에서 제안한 모든 주문에 대한 포트폴리오 및 위험 오버레이. 여러 전략 - 위험 관리 오버레이에 통합되는 전략 포트폴리오를 구성합니다.
주식 이벤트 기반의 백 테스터와 마찬가지로 forex 백 테스트 모듈을 생성해야합니다. 이를 통해 우리는 신속한 연구를 수행하고 전략을보다 쉽게 배포 할 수 있습니다.
settings. py (ACCOUNT_ID 및 ACCESS_TOKEN을 변경해야 함) :
양적 거래 시작하기?
QuantStart 목록을 구독해야하는 3 가지 이유 :
1. 퀀트 트레이딩 레슨.
계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!
2. 모든 최신 내용.
매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.
현실감 넘치는 퀀 트레이딩 팁.
No comments:
Post a Comment