전체 자막 보기
안녕하세요.
FX 마진 자동 매매 프로그래밍 과정 11번째 시간입니다.
어 이제부터는 기본적인 FX 마진 코딩에 대한 기초적인 과정은 끝났고요.
이제 소스 분석부터 시작해서 실제 코딩에 들어가는 과정에 들어가게 됩니다.
어, FX 마진 같은 경우에는 C 정도만 기본적인 내용을 알고 계시면 충분히 코딩을 하실 수가 있어요.
코딩하실 때 코딩을 배우는 것도 중요하지만 실제로 FX 맞은 브로커와 그리고 실제로 MT4가 어떻게 작동되는지 어떤 원리로 프로그램이 가동되면서 거리가 이루어지는지 이에 대한 이해가 굉장히 중요합니다.
어 무조건 스프레이드 낮 낮고 광고를 많이 하는 브로커를 이용해서 거래하는 것보다 어 내가 원하는에 맞춰 주는 브로커를 잘 선정하셔야 되고 장난치지 않는 브로커를 찾는 것도 아주 중요합니다.
뭐 여러분들께서는 아직 그런 경험이 적으시겠지만 FX 마진을 하다 보면 실제로 자기도 모르게 손해가 나고 있지만 모르는 경우가 되게 많습니다.
아주 간단한 예를 들면 처음 가입한 브로커에서 웰컴 보너스를 준다든가 입출금할 때 수수료를 면제해 준다든가 이런 혜택이 많고 스프레드가 낮게 제공한다는 것은 결국은 그 브로커의 품질을 의심해 봐야 된다는 얘기입니다.
특히 브로커가 라이센스를 여러 곳에 가지고 계신 어 가지고 있다고 공부하는 브로커들이 있어요.
뭐 영국도 있고 뭐 호주도 가지고 있고 뭐 다른 나라도 가지고 있고 쉐도 가지고 있고 뭐 이런 여러 가지 브로커를 가지고 있다고 하는 데는 오히려 더 조심하셔야 돼요.
내 자금이 정확하게 어디에서 거래되고 있는지 알 수가 없기 때문이에요.
호주, 영국, 미국 같은 경우에는 레버리지를 1대 20으로만 제공하기 때문에 호주 브로커라고 하더라도 1대 20으로 거래하지 않고 레버레지를 1대 400으로 사용하고 있다면 실제 호주에서 거래하고 있는게 아닙니다.
즉 나의 돈이 나의 마진, 나의 달러가 그 브로코가 얘기하고 있는 호주의 자금이 예탁되지 않는다는 점입니다.
이런 점들을 잘 알고 계시면서 브로코 선정부터 EA 세팅, 운영 전반적인 내용을 다 이해하시는게 아주 중요합니다.
오늘은 기본적으로 MT4를 깔았을 때 제공해 주는이 두 개 중에 MAC 샘플과 무빙 에버레지.
요 두 가지 프로그램은 기본적으로 MQL4를 기본적으로 제공하고 있습니다.
그중에서 무빙 에버레지.
그러니까 추세 영웅이죠.
그러니까 이동 평균선을 이용해서 거래하는 방법에 대해서 코딩되어 있는 내용을 어 제가 소스 분석을 한번 해 드릴 텐데요.
이 소스는 2005년도에서 MT4가 시작했는데 2014년 정도에 마지막으로 완성된 버전으로 나와 있고요.
요즘에 하는 코딩 방법과는 약간 다르니까이 점 참고해서 알려 드릴테니까 전체적인 구조를 파악하는데 집중해 주시기 바랍니다.
우선 무빙 에버리지 MQ4의 구조에 대해서 말씀드리겠습니다.
총 일곱 가지로 나눴는데요.
헤더 부분.
헤더 부분은이 부분을 얘기합니다.
앞부분 그렇게 중요하지 않죠.
그다음에 인풋 변수 설정.
그러니까 이해를 작동하기 위해서 변수를 어떻게 세팅할 것이냐 뭐 간단하게 시스템 트레이딩 들어가 가지고 무빙 에버리지 실행을 시켰을 때 삽입에 나오는 여기 있는이 값들을 얘기합니다.
그리고 이제 사용자가 정의한 함수를 총네 가지로 나눠놨어요.
첫 번째 거는 칼큐레이트 current 오더스라고 해서 현재 거래 중인 내용을 확인하는 겁니다.
두 번째는 거래 라수를 최적화하는 겁니다.
그다음 세 번째는 거래 조건.
그러니까 거래를 해도 되는지 안 해도 되는지 체크하는 거고요.
네 번째는 거래를 닿는 조건을 체크하는 조건입니다.
총 어 실제로는 어 거래 조건 체크하고 생산 조건 체크하고 거래라수나 거래 중인 거는 중간에 그냥 집어넣어도 되는데 여기에서는 함수네 개로 뽑아 놨어요.
그리고 원틱 함수에서이네 가지를 실행하도록 되어 있습니다.
그러면 차분차분 알아볼 텐데요.
제가 소스 중에요 부분 커멘트요 부분을 추가해 달라고 어 제가 적어 놨습니다.
그래서 커멘트 계좌 전고 어카운트 밸런스 손익 어카운트 불핏이 부분을 추가하게 되면 143에 제가 추가를 해 놨는지 볼게요.
네.
추가해 놨네요.
코멘트, 장고, 소닉 추가되 있습니다.
그래서이 실제로 어떻게 작동되는지 한번 보여 드리기 위해서 요렇게 해 놨고요.
요거를 하나 더 복사해 가지고 앞부분을 땡트로 바꾸시면 이제 전략 테스트를 하실 때도이 프린트 문이 보이게 될 것입니다.
우선 원칙부터 볼게요.
이프 바스.
이 바스는 저번에 알려 드렸죠.
현재 차트에 있는 바가 100개 이하일 경우 또는 is스트레이드 all우 그러니까 어 거리가 가능하지 않을 경우에는 리턴 빠져나간다.
온틱을 빠져나간다.
거래하지 않는다.
이런 구분은 아닙니다.
뭐 요런 구문들은 요렇게 작성하셔도 됩니다.
정확하게는 요렇게 작성하셔도 되고요.
그래서 별로 그렇게 중요하지 않습니다.
간호 어 바차트가 100개가 안 될 경우에 트레이딩을 못 하게하겠다고 하는 건데 뭐 그렇게 많이 사용하지 않습니다.
그다음 두 번째 이품 칼큐레이트 코런트 오더스 심볼 그러니까 해당 심볼에 거래가 0이면 그러니까 무슨 말이냐면 만약에 유달 차트에 켜 놨으면 유달이 거래가 없을 경우에는 뭘 하라? 체크포 오픈.
그러니까 거래를 열기 위해서 체크를 해라.
정확하게는 어 요런 형식으로 해 주는게 좋습니다.
셀스 정확한 구분으로 하면 어 처음 하시는 분들은 요런 형식으로 그래서 만약 거래가 해당 신볼래 한 개 없으면 여는 거를 확 거래 시작할 것을 체크하고 하고 거래가 있으면 닿는 것을 확인해라.
그럴 끝입니다.
그러니까 뭐냐면 실제로 모든 걸 함수 체크하고 오픈할 것이 이제 결정하고 오픈돼 있으면 크로즈할 걸 결정하고 끝입니다.
그래서 틱이 돌아가고이 사용자 정의 함수를 옴 소스는 윗부분에 해 놨습니다.
체크로스, 체크 오픈, 그다음에 라스 거래하는 방법.
그리고 현재 거래가 진행되고 있는지 없는지 여부.
실제로는 저 같은 경우에는요 부분을 어떻게 많이 하냐면 온팅 밑으로 많이 냅니다.
요렇게 해서 어 뒷부분에 많이 넣습니다.
요렇게도 많이 합니다.
어 실행하는데 아무 지장이 없습니다.
그러면 다시 한번 소스로 돌아가서 보겠습니다.
헤더 중요상은 크게 크게 없습니다.
무빙 에버리지 NQ4라고 자동으로 작성되고요.
카피라이트 자동으로 작성되는데 2014년도에 작성된 거고요.
어 저번에 헤더 부분에서 알려 드렸지만이 부분은 그냥 어 파일에 대한 프로퍼티에 대해서 써 놓은 거기 때문에 그렇게 중요하지 않습니다.
여기서 처음 나오는게 나왔어요.
제가 알려 드리지 않았는데 디파인이라게 나왔습니다.
디파인 매직 MA 매직 넘버의 약자겠죠.
2013, 11월 11일 뭐 이런 형식으로 날짜를 해 가지고 매직 넘버를 상수로 지정했어요.
이 부분을 한번 볼게요.
실제로이 부분은 뭐하고 똑같냐면 인트 매직 2013 1111 이렇게 설정한 거 똑같습니다.
그래서 중간에 변수를 갖다 쓰는거나 상수로 갖다 쓰는거나 이렇게 해서 요거는 매직 MA를 상수로 사용하했다는 뜻입니다.
한번 찾아볼까요? 어디에서 사용했나? 여기 보시면 오더 매직 넘버에서 사용했고요.
그다음 거리에 들어갈 때 매직 넘버로 사용했습니다.
그렇기 때문에 뭐 굳이요 방식으로 사용하지 않더라도 인트형으로 사용할 수 있습니다.
일반 배수로 지정할 수 있다는 건 나타내고요.
그래서 헤더 부분은 그렇게 중요한 부분이 없습니다.
인풋 인풋 변수 설정은 익스턴으로 설정해도 됩니다.
예전에는 다 인풋으로 했었는데 요즘에 다 익스턴으로 많이 하거든요.
인풋신 익스턴으로 하면 됩니다.
인풋과 익스턴의 차이점은 앞에 강의에서 다루었기 때문에 또 다루지 않겠습니다.
인풋 같은 경우에는 뒤에 슬러시를 해 줘도 적용되지 않습니다.
이렇게 컴파일 해 가지고 오빙 버리지.
이 여기 보면 라스가 그대로 조용되지 않고 있습니다.
익스턴으로 바꾸면이 라수가 보입니다.
거래할 라수 0.
1로 1로 세팅을 해놓 놨네요.
그다음에 맥시멈 리스크.
그러니까 위험도를 2%로 설정했다는 뜻입니다.
2%.
뭐 이거 중요하지 않습니다.
이거는 개발자가 그냥 집어넣은 코드기 때문에 저는 별로 이렇게 사용하지 않는데 과거나 다른 외국 소스에 보면요 소스를 활용해서 많이 만들었기 때문에 어 라스 조정할 때 요걸 많이 사용하는데 그렇게 좋은 소스는 아닙니다.
이크리스 벡터 소닉 요소라고 그냥 해석해 봤어요.
소닉 요소.
그러니까 쉽게 얘기하면 무슨 말이냐면 요소입니다.
그러니까 무슨 말이냐면 어이 기법으로 계속해서 손실이 나면 어 라수를 조정하겠다는 겁니다.
왜 조정한다는 거죠? 아, 지금은 추세장이 아니라 행보장이기 때문에 계속 중간에서 따이가 나 손실이 나니까 라수 진입하는 라수를 조종하겠다.
이런 뜻입니다.
이거는 마틴일도 아니고요.
물타기도 아닙니다.
그다음에 무빙 별대 요거는 기간 설정을 해해 놨다는 얘기입니다.
무빙 시프트.
여기서 시프트는 어 수인데 0 1 2 3 4 5 6 그래서 봉이 0일 때 1이면 전봉, 2이면 전전봉, 3이면 전전전 봉처럼 시프트가 여섯 개면 현재부터 여섯 개의 봉을 뒤로 합치겠다는 뜻입니다.
이거는 MA 그니까 무빙 에버리지에서 나오는 대표적인 예니까요.
그냥 참고하시면 됩니다.
예를 들면 예 제가 이제 요거를 이제 이동 평균선의 간격이라고 표현을 했는데요.
무빙 에버리지를 가서 보게 되면 12 6 요렇게 되 있습니다.
심플 클로즈 그때 12 총 12개의 가격을 평균하겠다.
그리고 여섯 개의 가격을 뒤로 설정하겠다.
요런 뜻이거든요.
그래서 어 12 퓨어리어드 기간 12 보시면은 여기서 삽입 오조 지표 추세 지표 무빙 에버리지 이번값이 14로 되는데 12에 시프트를 6을 주겠다는 뜻입니다.
그렇게 하면 요런 선이 나타납니다.
네.
속성해 보면 기간은 12의 6.
12의 6과 제가 또 하나 더 해 볼까요? 삽입 보조 지표 무빙 에버리지 12에 0으로 해서 화이트 해서 한번 해 보겠습니다.
어때요? 약간 틀리죠? 그래서 시프트를 적용했을 경우에는 어 시프트를 적용하지 않는 것과 약간의 차이가 발생합니다.
그래서 약간 덜 둔감하게 약간 민감한 거 시프트가 없으면 민감하고요.
시프트가 있으면 약간 둔감해집니다.
어이 부분에 대해서는 MA에 대해서 공부하실 때 한번 알아보시고요.
우선은 여기에서는이 조건에서 12와 욕을 사용했다는 내용을 가지고 말씀드리겠습니다.
그다음에이 라을 계산하는 부분이 있는데 라을 계산하는 부분이 어디에 있냐면음 여기에 있어요.
라은 노멀라이즈 더블 어카운트 프리마진 곱하기 맥시멈 리스크 곱하기 1000의 소점 1 한번 계산을 해 볼게요.
노멀라이즈 더블은 더블 숫자를 어 노멀라이즈 만들어서 소수점 자리를 제한한다는 건데 소수점 자리 한 자리로 했습니다.
이이 무슨 말이냐면 0.
1이나 0.
2로만 거래하겠다는 뜻이에요.
0.
00 1 같은 경우였으면 소수점 자리를이 자리를 그 자리로 세팅했겠죠.
근데 여기는 최소 0.
1로 밀로 거리를 하게 해 놨고요.
계산을 하면 어카운터 프리마젠 프리마진 계산하기 쉽게 만 달러가 있다고 계산해 볼게요.
만 달러 곱하기 맥시멈 리스크 맥시멈 리스크 세팅을 얼마로 했냐면 0.
02로 했습니다.
그러면 0.
02 그러면은 계산기 두들어 보시면 만 * 0.
02을 2를 하면은 200이 됩니다.
그렇죠? 그리고 200을 얼마로 나누면 1000으로 나누면 얼마가 나오죠? 0점 2가 나옵니다.
그렇죠? 그러니까 결국 무슨 말이냐면 만불당 0.
2 이라 진입한다이 말입니다.
즉 5천불당 0점 1로 하겠다.
이 뜻입니다.
이해되셨죠? 그래서 계좌가 만불에서 시작하면 0.
2로 시작할 것이고 5,000불에서 시작하면 0.
1로 1로 시작할 겁니다.
이 부분에 대해서 지금 설명해 놓고 있는 부분입니다.
그래서 호리마준이 첨불이 있으면 0.
02가 되죠.
근데 0.
02는 디지트가 1이니까 0.
1밖에 안 되거든요.
그래서 실제로 0.
01을 요렇게 하면은 0.
0이 됩니다.
그래서 빠진이 5천불이 돼야지만 0.
1이 이 됩니다.
이 라을 계산하는 거는이 소스에서 사용하는 건데 쉽게 얘기하면 5천불당 내가 0.
1을 1을 진입하게 하겠다 하면은이 금액을 맞추면 되고요.
그러니까 맥시멈 리스크하고 여기 천불요 두 가지를 잘 세팅하시면 여러분이 원하는 대로 어 계산하실 수가 있습니다.
그래서 요걸 가지고 라스를 계산하게끔 자동으로 하는 방법을 사용합니다.
그다음에 이제 거래 중인지 확인하는 소스입니다.
칼큘레이트 오픈 포지션 인트값을 리턴합니다.
칼큘레이터 현재 오더 근데 스트링 심벌 그러니까 심을 받겠다는 뜻이죠.
왜냐면 여러 가지 통화상을 동시킬 수 있기 때문에 심볼값을 받겠다는 뜻입니다.
먼저 지역 변수 인트로 바이의 개수와 셀의 개수를 0과 0으로 세팅을 해 놨습니다.
이 폼은 중요하죠.
홈은 i는 0부터 i는 오더스 토탈까지 i뿔뿔 요건 기본형입니다.
요 근무는 무조건 외우셔야 됩니다.
그러니까 무슨 얘기냐면 전체 거래 개수만큼 0부터 해서 1 2 3 4 해서 선택하겠다는 거죠.
그래서 먼저 첫 번째 아이가 0일 때 5도 셀렉트를 할 겁니다.
뭘 셀렉트하냐면 0이면은 목록에 가장 먼저 만들어진 목록, 가장 오래된 목록부터 선택합니다.
셀렉트바이 포지션 거래 목록에서 보드 트레이드 거래하고 있는 거.
그런데 폴스 거리가 없으면 폴스겠죠.
홀수면 브레이크해서 폼은 빠져나갑니다.
이렇게 어 외국 소수를 보면 요런 코드가 많아요.
그러니까 선택 안 되면 빠져나가기 있는데 저가 같은 경우는요 코드를 별로 안 좋아해요.
어떻게 하냐면 저는 오도 셀렉트가 되면 거래하기.
그러니까 어 거리가 있으면 거래하고 참일 경우만 거래하는 소스를 많이 사용합니다.
요 부분에 대해서는 여러분들도 이제 많이 적용하다 보면은 차이점을 알 수 있는데요.
이 브레이크 문을 사용하거나 컨테이 문을 사용하는 경우에는 자에서 실수가 많아요.
그래서요 구문보다 저는 일 때만 거래하도록 하는 방법을 좋아합니다.
아무튼간 선택이 안 되면 빠져나가지만 선택이 됐다면 킹을 합니다.
선택된 거래 오더 심벌 그러니까 선택된 거래의 동화상과 현재 자태 동화상이 같고 오도의 매직 넘버와 매직 넘버 상수로 정해 준 것과 똑같으면 그 결국은 무슨 말이냐면 해당 통화상에 EA로 작동하는 매직 넘버로 된 거리가 맞으면 I일 경우 오더 타입을 가지고 확인합니다.
바이면 바이에다 1을 더해지고요.
셀이면 셀에 1을 더해 준다는 뜻입니다.
만약에 홍합상이 열 개다.
열 개 중에 세 개가 거래돼 있다.
그러면 되는데 심플당 한 개밖에 거래 안 하기 때문에 1이냐 0이냐 뿐입니다.
그게 더해 준다는 뜻입니다.
어이 부분은 이제 입부 바이가 0보다 클 때 그러니까 거리가 바이가 하나 있으면 바이를 리턴해 주고 바이가 없으면 셀을 리턴을 해 준다는 코드입니다.
저는이 코드 방식을 좋아하진 않아요.
그런데 이제 이거 같은 경우는 인트값으로 리턴값을 꼭 해 줘야 되기 때문에 if으로 리턴 바이와 리턴 셀스를 항상 할 수 있게끔 이렇게 해 놨었어요.
어 쉽게 얘기하면 이게 무슨 말이냐면 바이가 0보다 크면 바이가 한 개면 바이를 2를 리턴하면 되는데 바이가 같음 0이면 바이가 0이면 셀이 0일 수도 있고 1일 수도 있거든요.
그러면 리턴 세리를 해 주겠다 해서 어떤 값이든 무조건 리턴을 해 주겠다는 뜻이에요.
왜냐면 여기서 리턴 인트값이기 때문에 리 리턴 형태로 받아야 되거든요.
그래서 요렇게 코디 하는데 이렇게 저는 별로 이렇게 좋아하는 코도 진행 방식은 아니에요.
어차피이 소스 같은 경우에는 바위를 가지고 있냐 셀을 가지고 있냐에 따라서 거래 중인지 아닌지를 체크하는 건데 어 저 같은 경우에는 그냥 어 전역 변수를 선언해 가지고요.
이 함수 실행시키면 바이가 몇 개, 셀이 몇 개 이렇게 그냥 보이드 형식으로 많이 진행합니다.
요 요 부분은 나중에 이해하실 수 있으면 한번 자세히 한번 다뤄 보겠습니다.
제가 폴스이 코드 별로 안 좋아한다 그랬죠? 그럼 그냥 저는 어떻게 하냐면 오더 셀렉트 만약 오더가 0번에서 셀렉트 되면 브레이크하는 코딩 별로 안 좋아하고요.
실제 아래를 보면 거리가 없으면 진입 체크를 하므로 의미 없는 내용입니다.
오도 토도 알디나 거래 개수만 체크해도 되거든요.
실제로.
그래서이 거리 같은 경우에는 뭐 매직 넘버하고 수동 거리나 여러 가지 통합성을 하는 거에 대비해서 코딩했다는 내용의 차이일 뿐이고요.
그냥 한 통화상만 하고 자동 매매 하실 때는 뭐 굳이 그냥 오더스 토탈이 한 개이면 요렇게 해하셔도 됩니다.
사용자 정의함 거래 라수 계산하는 부분 라스 옵티마이즈 옵티마이즈다 어 거래 라스를 제적하는 함수들 지금 만들어 놨어요.
아까 봤던 거죠.
한번 보실게요.
우선 초기 세팅한 거래 라스로 라스를 세팅합니다.
여기서 라스는 제일 위에 헤더에서 세팅한 0.
1라을 밀을 받는 겁니다.
그다음에 오더는 히스토리 토탈이라고 해서 거래 내역에 있는 전체를 가지고 오더스에다가 변수를 집어넣고요.
로스는 연속 손실 개수를 체크하기 위한 만든 함수입니다.
그다음에 라은 지금 현재 남은 마진을 가지고 얼마의 라수를 가져갈 것인지에 대해서 계산하는 겁니다.
보시면은 저불은 0.
1로 1로 했었지만 여기서 만 부리면 0.
2가 되기 때문에이 낫은 0.
2가 2가 돼 있을 수도 있습니다.
그다음에 디크리스 벡터가 0보다 크면 지금 현재 디크리스 벡터라고 해서 손해 요소를 3으로 세팅했습니다.
그래서 3이면 0보다 크기 때문에요 부분이 실행될 겁니다.
전체 오드 히스토리입니다.
그러니까 히스토리 토탈 히스토리에 가지고 있는 총 거래 목록을 가지고 와서 제일 뒤에서부터 잡겠다는 뜻입니다.
요거는 최신 거래부터.
그러니까 거래 목록이 다섯 개가 있으면 최신에 종료된 5 4 3 2 1인데 이거는 인덱스로 할 때는 어떻게 하냐면 다섯 개가 있으면 4 3 2 1 0 그래서 여기서 뭐냐? 5 - 1네 번째 거부터 0 번째까지 작겠다는 뜻입니다.
이 뽑음문도 항상 사용하는 거니까요.
기본형 알고 계시고요.
여기서는 거래 목록이 없으면 프린트해라.
그러니까 결국은 무슨 말이죠? 거래 한게 없다라고 하는 거고요.
만약 이게 아니면 브레이크가 아니기 때문에 여기는 실행됐다는 뜻입니다.
그런데 뭐라고 돼 있냐면 오도 심볼과 다르거나 오도 타입이 오피셀 오피셀이 뭐냐면 바이가 0 셀이 1입니다.
그다음에 2번 3번부터는 리미트나 스톱거리들입니다.
그렇기 때문에 1보다 크다는 거는 뭐냐면 OP셀 리미트, OP바이 리미트, OP 스톱 바이스톱, OP셀스톱을 얘기하는 겁니다.
요 구은 처음에 잘 이해를 못 하시는데 제가 저번에 한번 말씀드렸어요.
OP바가 0, OP셀이 1, 그다음부터는 2 3 4 5 이렇게 돼 있기 때문에 1보다 크다는 거는 리미트나 스톱 거래를 탑거릴 경우에는 진행한다는 뜻입니다.
그까 다른 통화거나 어 바이나 셀거리가 아닌 것들은 계속 진행시키겠다는 뜻입니다.
이 진행시킨다는 무슨 말이에요? 빠져나가서 폼문을 다시 돌겠다는 뜻이에요.
그렇기 때문에 여기서 진행시킨다는 거 뒤를 실행시킨다는 뜻이 아니에요.
컨티뉴어 브레이크 헷갈리지 마시기 바랍니다.
그다음에 오더 프로핏이 0보다 크면 수익이었기 때문에 어 손해 놨다고 생각 안 하고요.
만약에 전 거래가 같은 심볼이고 OP바이거나 OP 셀인데 손실이었다.
마이너스였다.
그러면 뭘로 하면 되죠? 셀에 한 개씩 추가하면 됩니다.
이 소스는 잘못됐어요.
왜 그러냐면 지금 오도 프로필만 있는게 아니라 오도 수합도 있고요.
그다음에 오도 커미션도 있기 때문에 실제로 거래는 어떻게 되냐면 오더 프로핏 플러스 오도 수합 플러스 오도 어 커미션이 0보다 작으면 로스 요렇게 계산하셔야 돼요.
근데 아무튼간 뭐 옛날 소수여 가지고 수압도 없고 커미션도 없습니다.
그래서 요거는 잘못된 소스고요.
그래서 한 번 손해가 나면 라수를 계산할 때 빼 주니다.
여기 보면 만약에 라수가 0.
2인데 루수가 2다.
그러면 그 개수만큼 현재 라소 0.
2 빼기라 곱하기 로스 2 나누 3 그래서 어 디크리스 벡터가 3이거든요.
그러면요 금액만큼 빼서 라수를 계산한다는 뜻입니다.
요거 잘 이해 안 되실 것 같으니까 한번 여기서 계산을 해 드리겠습니다.
이해를 들어서 해 드릴게요.
지금 마진이 5만 불이라고 치면 5만 불이 남아 있습니다.
그러면 5,불당 0.
1이기 때문에 5만 불이면 너 맞나? 예.
2만 불로 하겠습니다.
2만 불이면 5천 불이니까 0.
4가 될 겁니다.
그런데 1번 연습 손해가 났다고 칠게요.
그러면 라수는 현재는 0.
4고요.
고요.
거기에서 0.
4 곱하기 9번 연속 손해.
그러면 이거는 0.
8이 됩니다.
나누 3.
그러면 0.
8을 3으로 나누기 때문에 0.
8 나이니까 어 0.
2 미 얼마가 되거든요.
그러면 합치면 얼마냐면 0.
4에서 빼면 0.
13 정도 됩니다.
이거를 합 소수 한짜리로 얘기하니까 0.
1로 만들겠다는 뜻입니다.
즉 무슨 말이냐면 연속 두 번 어 연속 세 연속 두 번 소실이 나게 되면 0.
4로 거래하던게 0.
1로 밀로 줄어들린다는 뜻입니다.
요렇게 해서 손실이 연속 발생하게 되면 라스를 계속 줄인다는 뜻입니다.
단,이 구문은 꼭 집어넣야 됩니다.
이 구문은 만약에으면 라은 0.
1로 세팅을 하셔야 돼요.
그래서이 라수를 계산된 라수를 리턴해 줍니다.
결국은 무슨 말이냐면 이거는 우선 5천불당 0.
1씩 일식 진입하게끔 소스를 만들어 놓고 만약 손실이 일어날 때마다 나수를 줄이겠다는 뜻입니다.
뭐 보통 이렇게 안 하고요.
어떻게 하는 경우도 있냐면 그냥 0.
1씩 빼는 경우도 있어요.
뭐 간단하게.
그러니까 0.
4인데 손실이 연속 두 번 일어났다.
그러면 0.
1 계속 세 번 빼니까 0.
3을 빼는 거니까 0.
1이다.
미리다.
요런 형식으로 쉽게 코딩하셔도 됩니다.
복잡하게 안 하셔도 돼요.
그래서 아무튼간요 구문은 요렇게 돼 있고요.
리턴 여기서는 더블 0이기 때문에 0.
1 그 최하 0.
1로 세팅 해서 보내 주겠다.
그래서 최소 0.
1로.
왜 그러냐면 예전에는 0.
01이 없었어요.
0.
1밖에 없었어요.
그렇기 때문에 마이크로라 지원하지 않을 때 나온 소수여 가지고 0.
1을 최적값으로 만들어 놓은 거고요.
요걸 0.
01로 01로 만들어서 한번 코드를 수정해 보시기 바랍니다.
이제라 조종하는 거 했고요.
이 부분이 이해 안 되면 여러 번 반복해서 보시기 바랍니다.
그다음에 이제 오픈하는 조건을 체크하겠습니다.
체크포 옵이드 아무것도 리턴하지 않겠다는 뜻이고요.
MA라고 더블로 지역 변수 선언했고요.
알리라고 해서 티켓 번호를 받아올 수 있게끔 선언해 놨어요.
if 볼륨 0이 1보다 크면 리턴이 말은 무슨 말이냐면 볼륨 0 이것은 무슨냐면이 분봉 차트의 첫 번째 틱이 오면 1이에요.
근데 1보다 크면 두 번째 틱이란 뜻이에요.
그래서 볼륨 0을 프린트해 보면 첫 번째 틱은 1.
어, 두 번째 틱은 2, 세 번째 틱은 3이라고 이거 한번 제가 강습해서 해 드렸던 내용입니다.
그래서 볼륨 0이 1보다 크면 그러니까 뭐냐면 본봉 차트가 막 만들어졌을 때 첫 번째 틱에서만 거래하고 그게 아니면 그냥 무시하겠다는 뜻이에요.
그래서 이건 무슨 얘기냐면 어이 봉에서 한 번만겠다.
만약에 제가 한시간 차트에서 해 놨으면 한시간 차트가 시작하는 첫째 번째 틱이 올 때만 거래요.
그러니까 한시간에 한 번만 거리가 들어갑니다.
15분 차트면 15분마다 거래하는 걸 체크하는 거고요.
그렇기 때문에 1보다 크면 두 번째 틱일 때는 무시합니다.
그 두 번째 틱에서 캔들 차트가 뭐 무빙 에버리지에서 조건일 형성되더라도 거래하지 않겠다는 겁니다.
그다음 IMA 널은 현재 동화상이 있고요.
여기 IMA 부분 한번 다시 한번 내용 IMA에서 꼭 확인해 보시고요.
오픈해서 IMA 널 심볼이고요.
0 타임프레임은 현재 차트고요.
무빙 피리오드는 지금 12 설정이고요.
시프트는 6 설정이 있고요.
모두 SMA는 12를 얘기하는 겁니다.
프라이스는 종이고 0은 현재 차트입니다.
현재 차트에 무빙 에버리지 값을 가져온다는 뜻입니다.
그래서 12에 6에 심플의 종가 평균 거를 가지고 와서이 MA값에 저장합니다.
이 MA는 더블값입니다.
그리고 MA가 1분의 이건 무슨 말이냐면 종가 그러니까 바로 전에 시가 종가가 아니죠.
바로 1분봉 전봉의 시가보다 크거나 나.
그러니까 무빙 에버리지보다 크다는 거는 뭐냐면 시작하는 봉이 무빙보다 위에 있다는 뜻입니다.
그리고 클로전 종가가보다 크면 이게 무슨 말이냐면 시가보다 작고 종가보다 크면 음봉이에요.
이게 먼저 이걸 먼저 잘 이해하셔야 돼요.
그게 무슨 말이냐면 봉이 음봉이 뜨면 한번 볼까요? 어, 확대 여기서음 요거는 필요 없으니까 삭제하고요.
요거 여기를 볼게요.
음봉.
그까 현재이 차트입니다.
이 차트이 차트에서 이걸 보는 거죠.
전뽕의 시작가 보다 MA가 시작가가보다 크죠.
시작가가 크죠.
MA보다 그리고 종가보다는 MA가 커요.
이 말이에요.
그러니까 전뽕이 음봉이고 가로 질러가면이 뜻입니다.
이해되셨죠? 음봉이고 가로 질러가면 그래서 이평선이 직전시가 음봉 가운데로 지나갈 때 세를 산다는 겁니다.
그 이게 무슨 얘기예요? 지금 요게 나타나면 여기서 세를 사겠다는 거야.
첫봉 시작가에서 셀을 샀다는 뜻입니다.
샀기 때문에 리턴에서이 거래를 체 체크하지 않고 완전히 빠져나갑니다.
오더 샌드하는 거죠.
같은 신볼에 셀 셀로 거래하고라 옵티머마이즈로 해 가지고 라스를 최적한 다음에 비드값 셀이니까 비드값으로 슬리피 어 스탑노스나 테크 프로피 없고 코멘트 없고 매직 넘버만 아까 정해 준 걸로 해서 유효 기관 없이 빨간색으로 해서 거래를 하고 빠져나간다는 뜻입니다.
반대로 양봉이면 그 똑같아요.
이제 어떤 걸 얘기하냐면 요거겠죠.
전뽕이 양봉 오픈 여기죠.
이게 클로즈고 오픈가보다 MA가 크죠.
그러니까 오픈가가보다 이제 오픈가보다 MA가 크고 종가보다 종가가 MA보다 크다.
그러니까요 상태 양봉을 얘기합니다.
시작가보다 MA가 크고 종가보다는 MA가 작을 때 이렇게 되게 되면 여기서 뭘 산다? 바를 산다.
바를 산다.
어때요? 이렇게 했을 때 여기 단뽕에서 바이 샀으면 손이 났겠죠.
이거 손절하는 거고요.
여기서 셀을 사면 요거 수익이 낫겠죠.
음.
요런 뜻입니다.
그래서 바이와 셀을 사는 조건.
요 요 조건은 여러분들이 이제요 조건을 많이 만드시면 돼요.
여러 가지를 넣으면 돼요.
여기에다가 정배열이면 사겠다.
뭐 역배열이면 사겠다.
골든 크루스가 나면 사겠다.
요런 형식으로 코드만 바꾸시면 되고선 여러 가지 여기다 세팅해 가지고 비교해서 오픈하게끔 만드시면 됩니다.
저는 보조 지표로만 코딩하는 경우 별로 그렇게 좋아하지 않고요.
오조 지표를 방금과 같이 여러 개 MA선을 뭐 단기, 중기, 장기를 만들어 가지고 정배열 역별로 계산해서 만드는 방법도 코딩하시면 됩니다.
여러 개 보조 지표를 활용하는 경우에는 여러 개의 보지표를 여기 앞부분에다 코딩 하고 변수값 집어넣어서 바이 바이나 셀을 하게 하면 됩니다.
어, 근데 뭐 보조 지표만으로 했을 때 수익내는 건 어렵기 때문에 아무튼간이 체크 오픈만 잘 활용하셔도 됩니다.
체크포 클로즈 같은 경우에는 반대의 조건이 일어났을 때 크로즈 하게끔 하는 방법이 있고요.
하나는 여기 있는 스톱로스나 테이크 플루피스를 세팅하여 가지고 값을 설정하여도 됩니다.
정산 이제 반대예요.
똑같은 거고요.
요것도 똑같습니다.
분봉이 만들어졌을 때 앞에 부분과 똑같습니다.
여기도 같습니다.
그런데 전체 거리가 있는만큼 포문을 돌아서 셀렉트가 안 되면 빠져나가고 매직 넘버가 같지 않거나 심볼이 같지 않을 때는 또 빠져나가서 볼을 다시 돌리는 거고요.
이제 맞으면 그러니까 무슨 말이냐면 거래가 선택돼 있고 매직 넘버도 같고 심플도 같을 경우에만 거래를 하는 겁니다.
오더 타입은 오피파이 그러니까 바일 경우인데 아까와 반대예요.
반대 조건이 나오면 정산하겠다는 거예요.
오더 클로스, 오더 티켓, 오더라스, 비드 3, 화이트이 오더 클로즈는 여기에서 이미 티켓 번호 거래가 선택돼 있기 때문에 그 거래에 선택된 티켓 번호를 가지고 오고 그 거래의 라수만큼 거래를 종료하겠다.
근데 종료가 안 될 경우에만 에러 메시지를 내고 거래가 정상적으로 되면은 그냥 브레이크 문으로 빠져나가겠다.
요런 뜻입니다.
오더 타입이 셀.
만약 셀인데 이제 이것도 반대예요.
아까 나왔던 거하고 반대 시그다이 나왔을 때 요거는 앞뒤 틀리 실제로 코딩할 때요 조건을 막 헷갈려 가지고 어 헷갈린 경우가 있어요.
여기 보면은 오픈이 MA보다 클 때 오픈이 MA보다 클 때 오픈이 MA보다 클 때 셀이 들어갔죠.
그러니까 무슨 얘기냐면 바이는 셀 조건이 나오면 청산하는 거고요.
셀이면 바이 조건이 나오면 청산하는 겁니다.
어,요 구문이에요.
그래서 요거 같은 경우는 이평선이 다시 반대로 되면 청산해라.
이런 뜻입니다.
쉽게 얘기하면 여기에서 셀을 샀습니다.
셀을 샀는데 반대 조건이 나타날 때는 여기거든요.
그러니까 어찌냐면 여기서 청산하는 겁니다.
그 실질은 어때요? 많이 먹지 못하죠.
실제로 여기서 먹는게 훨씬 더 많이 먹을 수도 있습니다.
바이러브 됐을 때 여기서 샀습니다.
근데 전봉으로 가면 여기니까 바로 운봉해서 손절할 겁니다.
그래서 어 손절은 바로 되고 익절은 얼마 안 됐어요.
그래서 저는 좋아하지 않는 코딩 방법이지만 아무튼간 클로즈 오픈 조건과 반대 조건이 일어났을 때 크로즈 하는 코딩에 대한 내용입니다.
온틱에서 다시 한번 확인하면 어 바가 100개가 안 되거나 트레이딩이 허가되지 않았을 경우에는 실행 안 한다는 뜻이고요.
그리고 심볼을 가지고 개수를 체크해서 큐레이트해 가지고 0일 경우에는 오프를 체크하고 0이 아니라 거리가 중이다.
1이나 -1이든 뭔가 갑이 리턴돼 있으면 종료되는 걸 체크한다는 뜻이고요.
커멘트로 확인해 보는 방법입니다.
그러면 실제로 F7번 넣고요.
실거리 가능해서 요렇게 놔두고 시스템 트레이딩 하면 거래는 진행이 되지만 실제로 뭐 오늘 같은 날은 차트도 안 움직인 날이기 때문에 거래 할 수가 없죠.
그래서 전략 테스트를 한번 돌려 보겠습니다.
뭐 간단하게 모빙 에버리지 한시간 차트 스프레이드는 요날 20% 놓고요.
그다음 날짜는 먼저 통화상부터 잡고요.
통화는 유달로 잡겠습니다.
그다음에 많이 안 잡게 안 잡을 거예요.
둘 다 우선 오늘로 잡고요.
그다음에 한 10월 1일부터 시각가해서 돌려 보겠습니다.
한시간 차트고요.
음 차트 다운로드 받고 있고요.
일로음 데이터를 다운 받으면서 이렇게 비주를 하면 커멘트가 나오죠.
지금 수익이 나고 있는데 청산 안 하고 있습니다.
그렇죠? 손해 났죠.
수익이었다가.
그렇기 때문에 트레일링 스톱이라든가 어 익절을 세팅하는 것도 좋은 방법입니다.
거리는 아직 종료가 안 돼서 나오지 않고 있고요.
아무튼간 0.
2 했습니다.
왜냐면 계좌 장고가 만불이기 때문에 0.
2로 미로 시작해야 됐다는 뜻입니다.
한시간 차트 현재 손실 났죠.
시체로는 수익이 났었었는데 결국은 손실이 나 버렸습니다.
이번에는 바이로 진입을 했네요.
첫봉 시작하자마자 들어가고요.
또 선절을 했네요.
이제 두 번 손절이 두 번 됐기 때문에 란수가 줄어서 거래되고 있다는게 보입니다.
평사 또 손절하겠죠.
안뽕 가며 예, 손절했습니다.
보시면 이렇게 이평선이 나갈 때에 맞춰서 거리가 들어갔고요.
어, 거리가 진행됐다는 거를 확인할 수 있습니다.
한 번만 더 보여 드리겠습니다.
A 손절했나요? 아니요.
살짝 수익 나고 끝났네요.
아까고 좀 다르죠.
왜 그냐면 봉이기 때문에 또 손절했고요.
확실히 자주 거리하게 되죠.
부터 많이 쫓아가서 많이 못 먹습니다.
이렇게 먹어야 되는데 이렇게 수익 났을 때 지금 150불 수익이 났는데도 안 먹고 있어요.
여기다 꺾일 때 이렇게 횡보하면 되는데 다시 급등해 버리면 어 방금 같은 경우에는 좀 많이 먹었습니다.
200불 정도 먹었습니다.
한시간 차트와 15분 차트가 굉장히 차이가 많이 나죠.
그래서 어 이런 전략 테스트를 통해서 여러분들이 보는게 어떻게 진행되는지 확인해 보실 수가 있어요.
이렇게 해서 비주얼로 체크해 보시고요.
비주얼을 빼시면 해당하는 내용을 이렇게 차트로 볼 수가 없기 때문에 어 이렇게 프린트를 해 놓은 걸 통해서이 보실 수가 있어.
방금 했던 거 똑같죠? 일부 플러스였다가 손실 났던 거.
그다음에 15을 먹었던 거 왔다 갔다 하는 것들 지금 현재 보이고 있죠? 네.
요런 형식으로 프린트문을 통해서 전략 테스트 해서 세팅값을 확인하실 수가 있어요.
그래서 기간별로 체크하셔 가지고이 거래가 어떻게 진행되는지 그래서 1년도 테스트해 보고요.
예.
예, 10년도 테스트해 보시고 여러 가지 테스트해 보시면 됩니다.
실제 코딩에서 어카운트 밸런스 같은 경우에는 제가 노멀라이즈 터프를 사용해서 어카운트 밸런스 디지털 두 자리 소수점 두 자리 정도 표시하게끔 사용하셔야 돼요.
안 그러면 실제로 어카운트 밸런스가 막 벌어지거나 손익 같은 경우 막 늘어났다 줄었다 그래요.
지금 현재 샘플로 제공되는 소스는 2013년에 만들어진 코드여 가지고 현재하고 좀 많이 차이가 나서 도움되지 않습니다.
하지만 한번 이렇게 외국 소스나 기본으로 제공하는 소스를 한번 분석하는 거는 굉장히 도움이 되기 때문에 한번 꼭 해 보실 필요가 있고요.
방금 했던 소스 내용을 완벽하게 이해할 수 있다라고 하시면 이제부터는 뭐 코딩을 들어가도 그렇게 어렵지 않게 코딩하실 수가 있고요.
어 이해가 안 된다 하시면 조금 더 앞부분을 다시 반복해서 보시기 바랍니다.
실제로 거래라스 최적화 함수는 저는 별로 그렇게 사용하지 않는데요.
자, 본진만에 맞는 최적화 함수를 만들어서 사용하시는게 좋고요.
이렇게 이제 라스로 물타기를 할 때나 요런 경우에는 이거를 계산하는 코딩은 제가 따로 추가해서 만들어 드리겠습니다.
방금과 같이 청산 함수를 꼭 쓸 필요는 없습니다.
익절이나 손절 방식으로 코딩해도 가능합니다.
제가 오더 샌드 할 때 스탑노스하고 테이크 프로피트 하는 부분을 넣어 놨기 때문에 그 부분을 참고해서 기본값을 세팅을 해서 하셔도 됩니다.
거래를 한 개만 하는 방법이 아닌 여러 개 진입하게 하고 전체 손절이나 전체 익절도 코딩해서 넣어 주시면 좋습니다.
통화상이나 매직 넘버를 체크하여 맞는 경우의 실행은 고도를 실제 많이 사용하지.
여기서는 어 홍합상이 아니면 브레이크, 매직 넘버 틀리면 브레이크 이렇게 했는데 브레이크나 컨티뉴 사용하지 마시고요.
그냥 맞았을 때 아까 여기서도 있었죠.
이 볼륨이 1보다 크면 카는데 저 같은 경우는 볼륨이 0이 1과 같을 때만 거리하도록 하는 코딩을 많이 사용합니다.
그래서 본인만의 스타일로 수정하면서 코딩해 보는 것이 중요합니다.
그래서 해당하는 소스 보시고요.
요 소스 가지고 공부도 하시다가 MACD 샘플요 소스를 보시면은 트레일링 스톱 부분 있고요.
그다음에이 부분도 똑같이 여러 가지 변수 선정해 선정해서 MACD 값을 가지고 업체하는 부분이 있고요.
온틱에서 아수 말고 뭐 하는 방법 세팅하는 거 여기 같은 경우에는 테이크 프로핏 하고 트레일링 스톱으로 수익 손절하게끔 해 놓는 방식으로 세팅하게끔 만들어 놓은 방식이에요.
그래서 MAC 샘플과 무빙 에버리지이 두 가지 소스를 한번 분석해 보시고요.
어 저는 이제 무빙 에버리지 소스를 분석해 드렸습니다.
조금 어려운 내용도 있고요.
음 실제 제가 코딩에서 사용하지 않는 방법도 있지만 한번 잘 활용해서 보시고요.
이 소스를 수정하고 본인의 스타일대로 만들어 보는 연습을 해 보시기 바랍니다.
오늘은 여기까지 하겠습니다.
출하셨습니다.