어학/컴퓨터

외환 자동매매 프로그래밍

크게보기

외환 자동매매 프로그래밍

외환거래 전략분석 및 자동매매 프로그램 작성 안내서

저자
피터 전
출판사
서영
발행일
2016.11.28
정가
50,000 원
ISBN
9788997180677|
판형
186*237
면수
472 쪽
도서상태
판매중

구매하기

 21세기 금융시장은 무한한 확장성을 가지고 전세계에서 활발한 거래를 한다. 외환마진, 또는‘포렉스(forex)’라고도 하는 FX는 환율을 기준으로 이루어지는 거래이므로‘외환 파생’상품이며, ‘증권거래소’라는 정해진 장소에서 거래가 이루어지는 주식시장과 달리, FX는 모든 참가자들이 동시에 이용하는 특정한 거래소가 없으므로‘장외’상품이라고 한다. 대신, 사전에 계약을 맺은 은행, 증권사, 선물사, 법인 및 개인들 간에 거래가 이루어진다.

상품들은 주로 유로/달러(EUR/USD), 파운드/달러(GPB/USD), 달러/엔(USD/JPY) 등 수십 개의 통화쌍으로 이루어진다. 트레이더들은 이중 하나의 통화쌍만 거래하거나 다수의 통화쌍을 거래할 수도 있다. 현재 가장 많은 거래가 이루어지는 통화쌍은 EUR/USD이다. 시장의 특성을 살펴보면 우리나라 시간 기준 월요일 오전 7시부터 토요일 오전 7시까지(서머타임 기간 중에서는 월요일 오전 6시부터 토요일 오전 6시까지) 5일간 24시간 내내 전세계에서 거래가 이루어진다. 본서 <외환 자동매매 프로그래밍>는 이러한 금융거래 당사자들의 편의와 이익 증대를 위하여 쓰여진 도서다. 






 저자 피터전

10여년간 외환 거래 전략 분석과 프로그래밍 업무를 하였다.
컴퓨터 네트워크와 보안 관련에 대한 10여권의 저서가 있으며, 명지전문대학에서 프로그래밍, 네트워크, 보안을 강의하였다.





 제1장 메타 트레이더와 메타 에디터

FX 개요_18
상품/시장의 특성_18
주요 용어_18
FX 자동거래 프로그램 개요_19
메타 트레이더_20
메타 트레이더4 설치_20
메타 트레이더4의 주요 창_25
메인 창_27
메뉴 창_31
도구 창_32
종합 시세 창_35
탐색기 창_36
터미널 창_37
테스트 창_37
테스트 데이터 확보하기_38
메타 에디터_44
MQL4 마법사를 이용한 프로그램 틀 만들기_44
첫 번째 프로그램 만들기_49
EA를 테스트하는 방법_50
EA 전략 테스트_51
EA 라이브 테스트_53
파일의 종류와 위치_54

제2장 MQL4 기본 문법

MQL4 기본 문법_58
MQL4 문장_58
주석_59
식별자_59
예약어_60
변수_61
프로그램 동작 확인을 위한 Print() 함수_61
상수_64
MQL4 자료형_66
정수형_66
실수형_72
문자열 형_74
배열_75
자료형 변환_76
구조체_78
미리 정의된 구조체_80
전역 변수와 지역 변수_85
extrn 형과 input 형_85
연산과 연산식_88
연산식_88
수리 연산_88
할당 연산_89
관계 연산_89
부울 연산_90
연산간의 우선 순위_91
제어문_93
조건문_93
반복문_96
break와 continue 연산자_99

제3장 함수

사용자 정의 함수_102
함수의 정의_102
함수의 호출_104
반환값이 없는 함수_105
매개 변수가 없는 함수_106
특별 함수_108
OnInit 함수_109
OnDeinit 함수_110
OnTick 함수_110
OnCalculate 함수_111
OnStart 함수_111

제4장 계정 및 중개 서버 정보 획득

계정 정보 확인_114
계정 정보 함수 사용법_115
문자열형 계정 정보_115
고객명과 서버 이름 확인하기_116
중개회사 이름과 거래 통화명 확인하기_117
정수형 계정 정보_117
계좌 번호와 레버리지 확인_118
계정 활성화 여부 확인_119
자동 매매 프로그램 사용가능 여부 확인_119
실수형 계정 정보_120
예탁 잔고와 평가 예탁 잔고 확인_121
증거금과 증거금 잔액 확인_123
마진콜 경고 레벨과 강제 청산 레벨 확인_124
각종 실수형 계정 정보들의 관계_125
증거금과 마진콜 계산 방식 확인_129
시장 정보 획득_131
MarketInfo 함수_131
당일 최저가/최고가 확인하기_132
통화쌍의 포인트 값 및 소숫점 이하 자릿수 확인하기_133
포인트와 핍 가치 조정_135
1핍의 가치 확인하기_136
스프레드 확인하기_138
주문 가능 최소/최대 랏 수량과 주문 랏 단위_139
최소 스탑로스 값 확인_140

제5장 거래 진입, 수정 및 청산

거래 진입_142
거래 진입 함수_143
매수 주문하기(OP_BUY)_145
진입 실패 확인_149
매도 주문하기(OP_SELL)_149
테스트 창에서의 테스트_151
역지정가 매수(OP_BUYSTOP)_153
역지정가 매도(OP_SELLSTOP)_156
지정가 매수(OP_BUYLIMIT)_157
지정가 매도(OP_SELLLIMIT)_159
거래 정보 수집_162
특정한 주문 선택하기_163
과거 거래 정보 수집_163
현재 거래 정보 수집_168
예약 거래 정보 수집_170
거래 수정_173
인클루드 파일 만들기_174
진입된 거래의 손절값/익절값 수정하기_179
예약 거래 수정하기_181
트레일링 스탑로스 설정_183
스텝 트레일링 스탑로스 설정_187
인클루드 파일을 이용한 트레일링_189
거래 청산_193
OrderClose 함수를 사용한 거래 청산_193
지정가 예약 주문 삭제_195

제6장 메시지 생성과 전송

메시지 생성하기_200
팝업창 띄우기_202
차트의 왼쪽 상단에 메시지 출력하기_202
소리 파일 연주하기_204
로그 메시지 기록_204
양식화된 로그 메시지 기록_205
메시지 전송_207
EA에서 메일 보내기_207
EA에서 스마트 폰으로 메시지 전송하기_210

제7장 데이터 다루기

수 다루기_218
가장 가까운 높은 정수값_219
가장 가까운 낮은 정수값_219
두개의 수 중에서 큰 정수_220
두개의 수 중에서 작은 정수_221
가장 가까운 정수_221
절대치와 나머지 값 구하기_222
데이터 타입 변환_223
실수를 문자열로 변환시키기_224
시간을 문자열로 변환시키기_225
실수의 소숫점 이하 자릿수 지정하기_227
문자열을 실수로 변환시키기_227
실수를 datetime형으로 변환시키기_228
양식화된 문자열 만들기_229
배열 함수_232
배열의 선언 및 초기화_234
가장 큰 값을 가진 요소 번호_235
가장 작은 값을 가진 요소 번호_236
배열 복사_237
문자열 다루기_239
문자열 합치기_240
문자열 추출하기_241
문자열 탐색하기_242
문자열 바꾸기_242
대소문자 바꾸기_243
문자열 분해하기_244
파일 읽기와 쓰기_246
파일을 열고, 쓰고, 저장하기_249
파일 쓰기 _251
엑셀에서 CSV 파일 열기_254
파일 읽기_257

제8장 시간과 캔들 정보 다루기

날짜와 시간 다루기_262
서버 시간, 로컬 시간 및 GMT 시간_263
MqlDateTime 구조체_265
서버 시간의 연, 월, 일, 시, 분, 초_267
특정 시간의 연, 월, 일, 시, 분, 초_268
캔들 정보 다루기_270
PC에 저장된 캔들의 수량 확인하기_270
iBarShift, iHighest, iLowest_271
OHLC_272

제9장 기술적 지표와 커스텀 인디케이터

기술적 지표 함수_278
이동 평균_278
볼린저 밴드_282
스토캐스틱_284
RSI_286
커스텀 인디케이터_288
커스텀 인디케이터 마법사_288
인디케이터 헤더_290
인디케이터 초기 함수_292
인디케이터 메인 함수_293
커스텀 인디케이터 함수와 속성_297
커스텀 인디케이터 속성 지정 전처리자_299
커스텀 인디케이터 만들기_301
3개의 이동 평균선 인디케이터 만들기_301
적삼병/흑삼병 인디케이터 만들기_307
이동평균선 기울기 표시 인디케이터 만들기_314
EA에서 커스텀 인디케이터 값 불러오기_320

제10장 그래픽 오브젝트

그래픽 오브젝트 개요_326
그래픽 오브젝트 만들기_326
오브젝트 함수_330
오브젝트 타입_332
오브젝트 속성_334
오브젝트의 위치_339
그래픽 오브젝트 활용_346
MACD 상황에 따른 수직선 그리기_346
서버 신호 수신 불량 표시하기_351
라벨을 이용한 EA 동작 확인_356
숨겨진 스탑로스 표시하기_363

제11장 실전 EA 만들기

개발 환경 꾸미기_374
다수개의 메타 트레이더4 설치하기_374
데이터 폴더 위치 지정하기_380
과거 데이터 확보하기_382
상위 분봉 변환하기_387
기록실 복사하기_390
실전 EA 작성_391
거래의 진입, 수정 및 청산 계획_391
파일 계획_392
변수 파일과 공통 함수 파일_393
거래 진입 관련 파일_407
거래 수정 관련 파일_413
거래 청산 관련 파일_418
MyEa.mq4 파일_422
EA 동작시키기_425

제12장 전략 테스트와 최적화

전략 테스트_428
EA 전략 테스트_428
전략 테스트 결과 해석_431
전략 관찰 및 EA 수정_433
최적 변수값 찾기_437
EA 최적화_439
최적화시 고려사항_439
최적화 시행_440
TesterStatistics 함수_443
배열 변수의 최적화_449

부록

A1. 실전 EA 전체 코드_456
MyVar.mqh_456
MyCommon.mqh_458
MyOpen.mqh_464
MyModify.mqh_467
MyClose.mqh_469
MyEa.mq4_471 





 저자의 말 

서문  


본서는 다음과 같은 일을 할 수 있도록 기획되었습니다. ∙ 외환거래 전략 수립 및 검증 ∙ 외환 자동매매 프로그램 개발 외환 거래를 하면서 어떤 때에는 많은 수익을 올렸다가 한 순간에 다 날려버리는 일이 허다합니다. 그 이유는 여러 가지가 있겠지만 자신의 매매 전략을 과거 수년간의 환율 데이터에 적용해 보고 장단점을 파악할 수 있다면 수익을 최대화하고 손실을 최소화시키는 방향으로 개선할 수 있습니다. 본서는 이처럼 특정한 외환 매매 전략의 강점과 약점을 한 눈에 파악하고, 수익률, 승률 등을 수치로 판단할 수 있는 프로그램을 만드는 방법에 대한 안내서입니다. 24시간 거래가 이루어지는 외환 시장은 시장 참여자들의 특성상 런던과 뉴욕이 낮시간인 우리나라 시간으로는 오후 늦게부터 밤 늦게까지 변동성이 커집니다. 시장에 참여하기 위하여 밤을 새우다 보면 판단력을 비롯하여 여러 가지 문제가 발생할 수 있습니다. 본서는 이 같은 거래 외적인 장애요소를 가능한 한 배제할 수 있도록 자신만의 외환 자동매매 프로그램을 만드는 방법에 대하여 설명하고 있습니다. 외환 매매 전략을 개발하는 데는 많은 시간이 걸릴 수 있지만, 프로그래밍 방법은 짧은 시간내에 익힐 수 있습니다. 본서는 전세계적으로 가장 널리 사용되는 외환 매매 프로그래밍 언어인 MQL4를 기준으로 만들었습니다. MQL5가 나온지 수년이 지났지만 아직까지 대부분의 외환거래 중개회사들이 MQL4만 지원합니다. 따라서, 최근 거꾸로 MQL4에 MQL5의 기능을 넣어서 두 버전의 차이를 최소화시켰습니다. 이 책에 실린 여러 가지 프로그램 코드는 여러번 확인을 하였지만 그래도 찾아내지 못한 오류가 있을 수 있고, 프로그램의 특성상 환경이 달라지면 동작도 달라지기 때문에 독자 여러분들은 연습시 참고로만 하시기 바랍니다.  

2016년 10월 25일 저자 피터 전 드림




월드컵로36길 18 (우) 03938