커뮤니티
재질문입니다.
2014-01-21 21:45:04
254
글번호 71700
이전 질문과 답변
=====================================================================
안녕하세요
예스스탁입니다.
TS를 사용하지 않아 해당 함수의 계산식이
저희쪽과 어떻게 다른지 모르겠습니다.
아래는 저희쪽 ema계산법입니다.
속도를 위해 내부함수로 되어 있는데 아래와 같은 로직으로 계산됩니다.
input : P(20);
var : EP(0),Emav(0);
EP = 2/(P+1);
if index <= 1 Then
EMAV = c;
Else
Emav = C*EP+Emav[1]*(1-EP);
plot1(emav);
plot2(ema(c,P));
예전에 시스템 트레이딩 관련 커뮤니티에서 본 TS의 XAverage에 관해 올라온 글인데
아래 내용 한번 참고해 보시기 바랍니다.
http://www.fntec.com/uploads/board/uboard.asp?id=t5&skin=board_fntec2&color=Black&code=&page=2&page_num=&order1=u_no&order2=desc&u_no=305&u=0
즐거운 하루되세요
> 궁그미 님이 쓴 글입니다.
> 제목 : 지표가 다르게 나오는 이유
> TS로 수식을 만들어서 이것을 예트로 옮겼는데요.
TS의 xaverage지표가 ema라고 생각해서 ema구문으로 수식을 짰는데 미묘하게 수치가 차이나서 매매신호가 TS와 다르게 나옵니다.
예를들면 TS의 xaverage(close,10)과 xaverage(close,50)이 골든크로스 할때 매수한다라고 하면 이것을 예트로 ema(close,10)과 ema(close,50)이 골든크로스 할때 매수라고 함수 이름만 바꿔서 짯는데 수치가 다르고 그래서 신호도 다르게 나옵니다.
둘다 읽어드리는 봉의 갯수는 예트가 5000개로 되어 있는것 같아서 동일하게 했구요...
뭐가 문제일까요?
==========================================================================
재질문입니다.
TS의 Xaverage의 함수식은 다음과 같습니다.
Inputs: Price(NumericSeries), Length(NumericSimple);
Variables: Factor(0);
If Length + 1 <> 0 Then Begin
If CurrentBar <= 1 Then Begin
Factor = 2 / (Length + 1);
XAverage = Price;
End
Else
XAverage = Factor * Price + (1 - Factor) * XAverage[1];
End;
현재의 문제는 위의 답변에서 제시해주신 예스트레이더의 ema함수식과 TS의 Xaverage함수식이 다르게 구현되고 있습니다. 제가 수식을 잘 볼줄 몰라 같은 지수이평인데 왜 다른지 예트로 진행이 되지 않고 있습니다... 그래서 밑에 두가지 수식 작성 요청을 드립니다.
요청
1. 위의 TS의 Xaverage의 함수식으로 짜여진 TS의 전략신호 " Xaverage 5일선이 Xaverage 20일선을 상향돌파시 매수신호"를 예스트레이더 전략식으로 짜 주시면 감사하겠습니다.
(예스트레이더로 ema 내장함수로 간단하게 "ema 5일선이 ema 20일선을 상향돌파시 매수신호"로 제가 작성해봤더니 TS의 신호와 달랐습니다...)
2. 가능하다면 반대로 예스트레이더의 "ema 5일선이 ema 20일선을 상향돌파시 매수신호"를 TS식으로 짜주시면 감사하겠습니다. (도대체 왜 다른지 두 프로그램 양측을 보고 수식 공부를 해보고 싶습니다.)
답변 미리 감사드립니다. 이렇게 어려운 수식들은 매일 답변하느라 노고가 많으십니다. 이공계 전공자가 아니라 수식을 너무 몰라서 꼭 부탁드려 봅니다...
답변 1
예스스탁 예스스탁 답변
2014-01-22 10:05:01
안녕하세요
예스스탁입니다.
아래 1번 내용을 사용자함수로 만드신 후에
2번 전략 적용하시면 됩니다.
1.
사용자함수명 : XAverage
반환값형 : 숫자형
함수식
Inputs: Price(NumericSeries), Length(NumericSimple);
Variables: Factor(0);
If Length + 1 <> 0 Then Begin
If CurrentBar <= 1 Then Begin
Factor = 2 / (Length + 1);
XAverage = Price;
End
Else
XAverage = Factor * Price + (1 - Factor) * XAverage[1];
End;
2.
var1 = XAverage(c,5);
var2 = XAverage(c,20);
if crossup(var1,var2) Then
buy("b");
if CrossDown(var1,var2) Then
sell("s");
TS에서 3번 함수를 만드신 후에 사용하시면 됩니다.
Inputs: Price(NumericSeries), Length(NumericSimple);
Variables: Factor(0);
If Length + 1 <> 0 Then Begin
If index <= 1 Then Begin
Factor = 2 / (Length + 1);
YesEma = Price;
End
Else
YesEma = Factor * Price + (1 - Factor) * YesEma[1];
End;
3,
지수이평 함수는 과거계산값이 현재봉에 영향을 주는 구조의 평균방법입니다.
봉이 경과될수록 과거 값의 영향이 줄어들다가 소멸하게 됩니다.
2개 함수의 차이는 계산을 시작하는 봉에서 차이가 발생하므로
초반의 신호가 다른 것입니다.
예스트레이더에서의 지수이평은 무조건 두번째 봉부터 계산을 시작하는데
TS함수는 수식안에 사용된 currentbar에 의해 계산에 필요한 봉갯수를 산정하고 그 이후부터 시작합니다.
필요한 봉갯수 전에는 해당봉의 종가를 리턴합니다.
그러므로 수식안에 다른 계산내용이 있으면 계산을 시작하는 봉이
Xaverage함수를 만드시고
아래 2개의 식을 예스트레이더 차트에 지표식으로 적용하신 후에
차트의 가장 앞쪽에서 2개의 식에서 지수이평이 출력되는 시점의
차이를 보시면 됩니다.
if crossup(var1,var2) Then
value1 = 1;
if CrossDown(var1,var2) Then
value1 = -1;
2개의 식 모두에서 뒤 내용이 있을 때와 없을때를 보시면
1번식은 있을때와 없을때 계산을 시작하는 시점이 달라지고
그에따라 값도 변하게 됩니다.
2번식은 관계없이 항상 계산을 시작하는 시점이 같습니다.
1
var1 = XAverage(c,5);
var2 = XAverage(c,20);
if crossup(var1,var2) Then
value1 = 1;
if CrossDown(var1,var2) Then
value1 = -1;
plot1(var1);
plot2(var2);
2.
var1 = ema(c,5);
var2 = ema(c,20);
if crossup(var1,var2) Then
value1 = 1;
if CrossDown(var1,var2) Then
value1 = -1;
plot1(var1);
plot2(var2);
즐거운 하루되세요
> 궁그미 님이 쓴 글입니다.
> 제목 : 재질문입니다.
> 이전 질문과 답변
=====================================================================
안녕하세요
예스스탁입니다.
TS를 사용하지 않아 해당 함수의 계산식이
저희쪽과 어떻게 다른지 모르겠습니다.
아래는 저희쪽 ema계산법입니다.
속도를 위해 내부함수로 되어 있는데 아래와 같은 로직으로 계산됩니다.
input : P(20);
var : EP(0),Emav(0);
EP = 2/(P+1);
if index <= 1 Then
EMAV = c;
Else
Emav = C*EP+Emav[1]*(1-EP);
plot1(emav);
plot2(ema(c,P));
예전에 시스템 트레이딩 관련 커뮤니티에서 본 TS의 XAverage에 관해 올라온 글인데
아래 내용 한번 참고해 보시기 바랍니다.
http://www.fntec.com/uploads/board/uboard.asp?id=t5&skin=board_fntec2&color=Black&code=&page=2&page_num=&order1=u_no&order2=desc&u_no=305&u=0
즐거운 하루되세요
> 궁그미 님이 쓴 글입니다.
> 제목 : 지표가 다르게 나오는 이유
> TS로 수식을 만들어서 이것을 예트로 옮겼는데요.
TS의 xaverage지표가 ema라고 생각해서 ema구문으로 수식을 짰는데 미묘하게 수치가 차이나서 매매신호가 TS와 다르게 나옵니다.
예를들면 TS의 xaverage(close,10)과 xaverage(close,50)이 골든크로스 할때 매수한다라고 하면 이것을 예트로 ema(close,10)과 ema(close,50)이 골든크로스 할때 매수라고 함수 이름만 바꿔서 짯는데 수치가 다르고 그래서 신호도 다르게 나옵니다.
둘다 읽어드리는 봉의 갯수는 예트가 5000개로 되어 있는것 같아서 동일하게 했구요...
뭐가 문제일까요?
==========================================================================
재질문입니다.
TS의 Xaverage의 함수식은 다음과 같습니다.
Inputs: Price(NumericSeries), Length(NumericSimple);
Variables: Factor(0);
If Length + 1 <> 0 Then Begin
If CurrentBar <= 1 Then Begin
Factor = 2 / (Length + 1);
XAverage = Price;
End
Else
XAverage = Factor * Price + (1 - Factor) * XAverage[1];
End;
현재의 문제는 위의 답변에서 제시해주신 예스트레이더의 ema함수식과 TS의 Xaverage함수식이 다르게 구현되고 있습니다. 제가 수식을 잘 볼줄 몰라 같은 지수이평인데 왜 다른지 예트로 진행이 되지 않고 있습니다... 그래서 밑에 두가지 수식 작성 요청을 드립니다.
요청
1. 위의 TS의 Xaverage의 함수식으로 짜여진 TS의 전략신호 " Xaverage 5일선이 Xaverage 20일선을 상향돌파시 매수신호"를 예스트레이더 전략식으로 짜 주시면 감사하겠습니다.
(예스트레이더로 ema 내장함수로 간단하게 "ema 5일선이 ema 20일선을 상향돌파시 매수신호"로 제가 작성해봤더니 TS의 신호와 달랐습니다...)
2. 가능하다면 반대로 예스트레이더의 "ema 5일선이 ema 20일선을 상향돌파시 매수신호"를 TS식으로 짜주시면 감사하겠습니다. (도대체 왜 다른지 두 프로그램 양측을 보고 수식 공부를 해보고 싶습니다.)
답변 미리 감사드립니다. 이렇게 어려운 수식들은 매일 답변하느라 노고가 많으십니다. 이공계 전공자가 아니라 수식을 너무 몰라서 꼭 부탁드려 봅니다...
다음글
이전글