커뮤니티
시스템식 부탁드립니다.
2012-04-15 00:24:15
390
글번호 50048
90틱차트에서 300틱차트의 macd를 참고해서 매매하고 싶습니다.
매수조건:
300틱차트에서 macd가 0보다 크고, 상승추세이고 90틱차트의 macd가 골든크로스.
90틱에서 macd가 데드크로스에서 청산.
300틱 추세 안에서 재매수가능.
매도조건:
300틱차트에서 macd가 0보다 작고, 하락추세일때 90틱차트의 macd가 데드크로스.
90틱에서 macd가 골든크로스에서 청산.
300틱 추세 안에서 재매수가능.
답변 3
예스스탁 예스스탁 답변
2012-04-16 11:10:50
안녕하세요
예스스탁입니다.
다른주기의 값으로 계산할 수 있는것은 해당차트의 배수(180틱 270틱)가 될때입니다.
아래식은 270틱(90틱X3)으로 작성한 식입니다.
Input : Period1(12),Period2(26),Period3(9);
Var : Ep1(0), JISU1(0), DINDEX1(0), PreJISU1(0);
Var : Ep2(0), JISU2(0), PreJISU2(0);
Var : Ep3(0), JISU3(0), PreJISU3(0);
var : MACDVal(0),MACDSig(0),PreMACDval(0);
Ep1 = 2/(Period1+1);
Ep2 = 2/(Period2+1);
Ep3 = 2/(Period3+1);
var1 = dayindex%3;
if dayindex() == 0 or var1 < var1[1] Then{
DINDEX1 = DINDEX1 + 1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreJISU3 = MACDsig[1];
PreMACDval = MACDval[1];
}
if DINDEX1 <= 1 then {
JISU1 = C;
JISU2 = C;
}
else{
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
}
MACDVal = JiSu1-Jisu2;
if DINDEX1 <= 2 then
MACDsig = MACDVal;
else
MACDsig = MACDVal * EP3 + PreJISU3 * (1-EP3);
value1 = macd(Period1,Period2);
value2 = ema(value1,Period3);
if MACDval > 0 and MACDval > PreMACDval Then{
if crossup(value1,value2) Then
buy();
if CrossDown(value1,value2) Then
Exitlong();
}
if MACDval < 0 and MACDval < PreMACDval Then{
if CrossDown(value1,value2) Then
Sell();
if CrossDown(value1,value2) Then
ExitShort();
}
즐거운 하루되세요
> 파파 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 90틱차트에서 300틱차트의 macd를 참고해서 매매하고 싶습니다.
매수조건:
300틱차트에서 macd가 0보다 크고, 상승추세이고 90틱차트의 macd가 골든크로스.
90틱에서 macd가 데드크로스에서 청산.
300틱 추세 안에서 재매수가능.
매도조건:
300틱차트에서 macd가 0보다 작고, 하락추세일때 90틱차트의 macd가 데드크로스.
90틱에서 macd가 골든크로스에서 청산.
300틱 추세 안에서 재매수가능.
파파
2012-04-16 20:34:33
내용이 파악이 안되네요...
주석부탁드립니다. 제가 말씀드린 내용과 전혀 다른 신호가 나오고 있습니다.
틱계산 부분이 어디인지도 모르겠네요...dayindex는 분봉에서 봉번호 함수인데
왜 여기에 사용인 된것인지 그것도 궁금하네요..
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템식 부탁드립니다.
> 안녕하세요
예스스탁입니다.
다른주기의 값으로 계산할 수 있는것은 해당차트의 배수(180틱 270틱)가 될때입니다.
아래식은 270틱(90틱X3)으로 작성한 식입니다.
Input : Period1(12),Period2(26),Period3(9);
Var : Ep1(0), JISU1(0), DINDEX1(0), PreJISU1(0);
Var : Ep2(0), JISU2(0), PreJISU2(0);
Var : Ep3(0), JISU3(0), PreJISU3(0);
var : MACDVal(0),MACDSig(0),PreMACDval(0);
Ep1 = 2/(Period1+1);
Ep2 = 2/(Period2+1);
Ep3 = 2/(Period3+1);
var1 = dayindex%3;
if dayindex() == 0 or var1 < var1[1] Then{
DINDEX1 = DINDEX1 + 1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreJISU3 = MACDsig[1];
PreMACDval = MACDval[1];
}
if DINDEX1 <= 1 then {
JISU1 = C;
JISU2 = C;
}
else{
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
}
MACDVal = JiSu1-Jisu2;
if DINDEX1 <= 2 then
MACDsig = MACDVal;
else
MACDsig = MACDVal * EP3 + PreJISU3 * (1-EP3);
value1 = macd(Period1,Period2);
value2 = ema(value1,Period3);
if MACDval > 0 and MACDval > PreMACDval Then{
if crossup(value1,value2) Then
buy();
if CrossDown(value1,value2) Then
Exitlong();
}
if MACDval < 0 and MACDval < PreMACDval Then{
if CrossDown(value1,value2) Then
Sell();
if CrossDown(value1,value2) Then
ExitShort();
}
즐거운 하루되세요
> 파파 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 90틱차트에서 300틱차트의 macd를 참고해서 매매하고 싶습니다.
매수조건:
300틱차트에서 macd가 0보다 크고, 상승추세이고 90틱차트의 macd가 골든크로스.
90틱에서 macd가 데드크로스에서 청산.
300틱 추세 안에서 재매수가능.
매도조건:
300틱차트에서 macd가 0보다 작고, 하락추세일때 90틱차트의 macd가 데드크로스.
90틱에서 macd가 골든크로스에서 청산.
300틱 추세 안에서 재매수가능.
예스스탁 예스스탁 답변
2012-04-17 20:57:56
안녕하세요
예스스탁입니다.
지수이평의 계산공식은 아래와 같습니다.
EMA = 금일 종가 * EP + 전일의 지수 이동평균 * (1-EP)
※ EP(평활계수) = 2/(기간 + 1)
MACD는 단기지수이평-장기지수이평 (ema(C,Period1)-ema(C,period2))
MACD시그널은 MACD를 다시 지수이평 시킨 값입니다. ema(macd,Period3)
지수이평을 첫봉에서는 그봉의 종가이고
이후부터 위 공식에 의해 현재봉의 종가의 가중치를 부여한 값과 이전봉의 값에 가중치를 부여한 값을 합쳐서
만드는 평균방법입니다.가중치는 평활계수에 의해 부여됩니다.
위 계산식 내용을 숙지하신 후에 아래 주석으로 보셔야 합니다.
Input : Period1(12),Period2(26),Period3(9);
Var : Ep1(0), JISU1(0), DINDEX1(0), PreJISU1(0);
Var : Ep2(0), JISU2(0), PreJISU2(0);
Var : Ep3(0), JISU3(0), PreJISU3(0);
var : MACDVal(0),MACDSig(0),PreMACDval(0);
Ep1 = 2/(Period1+1);#단기평활계수값 2/(12+1) = 0.1538
Ep2 = 2/(Period2+1);#장기평활계수값 2/(26+1) = 0.0704
Ep3 = 2/(Period3+1);#시그널평활계수값 2/(9+1)= 0.2000
var1 = dayindex%3;#당일봉을 3개씩 분할한 값
#90틱 차트에서 봉을 3개씩 모아 270틱 간격으로 계산해야 하므로
#위와 같은 계산식으로 봉을 구별합니다.(0-1-2-0-1-2-0-1-2로 계속 번호가 부여됩니다.
#0-1-2가 90틱 차트에서 270틱을 만드는 하나의 구간임
#당일 첫봉이거나 var1이 2에서 0으로 변할때
if dayindex() == 0 or var1 < var1[1] Then{
DINDEX1 = DINDEX1 + 1;#전체 차트에서 구간의 갯수 구함
PreJISU1 = JISU1[1]; #바로 직전구간에서의 단기지수이평값
PreJISU2 = JISU2[1]; #바로 직전구간에서의 장기지수이평값
PreJISU3 = MACDsig[1];#바로 직전구간에서의 MACD시그널값
PreMACDval = MACDval[1];#바로 직전구간에서의 MACD값
}
#아직 구간이 한번도 생성되지 않았을때는 그봉의 종가값
if DINDEX1 <= 1 then {
#jisu1은 단기지수이평입니다.
#jisu2는 장기지수이평입니다
JISU1 = C;
JISU2 = C;
}
else{#구간이 하나이상 발생한 이후에는
#현재봉 종가*0.1538+직전봉의 지수이평*(1-0.1538)하여 단기지수이평값 계산
#현재봉 종가*0.0704+직전봉의 지수이평*(1-0.0704)하여 단기지수이평값 계산
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
}
#MACD는 단기지수이평-장기지수이평
MACDVal = JiSu1-Jisu2;
#MACD시그널은 MACD가 만들어진 이후에 게산되어야 MACD
#구간이 2개이상 발생하기 전에는 MACD
if DINDEX1 <= 2 then
MACDsig = MACDVal;
else
MACDsig = MACDVal * EP3 + PreJISU3 * (1-EP3);
#2개이상 발생한 후에는
#현재봉 MACD값*0.2000+직전봉의 MACDsig값*(1-0.1538)하여 단기지수이평값 계산
value1 = macd(Period1,Period2);#90틱봉에서 MACD값
value2 = ema(value1,Period3);#90틱봉에서 MACD 시그널값
#270틱MACD값이 0보다 크고 MACD가 직전구간최종값대비 상승일때
if MACDval > 0 and MACDval > PreMACDval Then{
if crossup(value1,value2) Then#90틱 MCAD가 MACD시그널을 상향돌파하면 매수진입
buy();
if CrossDown(value1,value2) Then#90틱 MCAD가 MACD시그널을 하향이탈하면 매수포지션 청산
Exitlong();
}
#270틱MACD값이 0보다 작고 MACD가 직전구간최종값대비 하락일때
if MACDval < 0 and MACDval < PreMACDval Then{
if CrossDown(value1,value2) Then#90틱 MCAD가 MACD시그널을 하향이탈하면 매도진입
Sell();
if Crossup(value1,value2) Then#90틱 MCAD가 MACD시그널을 상향돌파하면 매도포지션 청산
ExitShort();
}
지수이평은 위 계산공식에서 보신것과 같이
차트 봉수에 영향을 받는 평균방법입니다.
그러므로 차트는 최대로 5000개봉 조회하신 후에
적용하셔야 하며 90틱에서 당일 봉을 3개씩 묶어 계산하므로
너무 긴 기간을 Period로 설정하시면 값이 맞지 않을 수 있습니다.
틱차트는 참조데이터 사용이 가능하지 않아
위와 같이 수식적으로 계산해서 사용하는 방벙외에는 다른 주기의 값을 이용할 방법이 없습니다.
즐거운 하루되세요
> 파파 님이 쓴 글입니다.
> 제목 : Re : Re : 시스템식 부탁드립니다.
> 내용이 파악이 안되네요...
주석부탁드립니다. 제가 말씀드린 내용과 전혀 다른 신호가 나오고 있습니다.
틱계산 부분이 어디인지도 모르겠네요...dayindex는 분봉에서 봉번호 함수인데
왜 여기에 사용인 된것인지 그것도 궁금하네요..
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템식 부탁드립니다.
> 안녕하세요
예스스탁입니다.
다른주기의 값으로 계산할 수 있는것은 해당차트의 배수(180틱 270틱)가 될때입니다.
아래식은 270틱(90틱X3)으로 작성한 식입니다.
Input : Period1(12),Period2(26),Period3(9);
Var : Ep1(0), JISU1(0), DINDEX1(0), PreJISU1(0);
Var : Ep2(0), JISU2(0), PreJISU2(0);
Var : Ep3(0), JISU3(0), PreJISU3(0);
var : MACDVal(0),MACDSig(0),PreMACDval(0);
Ep1 = 2/(Period1+1);
Ep2 = 2/(Period2+1);
Ep3 = 2/(Period3+1);
var1 = dayindex%3;
if dayindex() == 0 or var1 < var1[1] Then{
DINDEX1 = DINDEX1 + 1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreJISU3 = MACDsig[1];
PreMACDval = MACDval[1];
}
if DINDEX1 <= 1 then {
JISU1 = C;
JISU2 = C;
}
else{
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
}
MACDVal = JiSu1-Jisu2;
if DINDEX1 <= 2 then
MACDsig = MACDVal;
else
MACDsig = MACDVal * EP3 + PreJISU3 * (1-EP3);
value1 = macd(Period1,Period2);
value2 = ema(value1,Period3);
if MACDval > 0 and MACDval > PreMACDval Then{
if crossup(value1,value2) Then
buy();
if CrossDown(value1,value2) Then
Exitlong();
}
if MACDval < 0 and MACDval < PreMACDval Then{
if CrossDown(value1,value2) Then
Sell();
if CrossDown(value1,value2) Then
ExitShort();
}
즐거운 하루되세요
> 파파 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 90틱차트에서 300틱차트의 macd를 참고해서 매매하고 싶습니다.
매수조건:
300틱차트에서 macd가 0보다 크고, 상승추세이고 90틱차트의 macd가 골든크로스.
90틱에서 macd가 데드크로스에서 청산.
300틱 추세 안에서 재매수가능.
매도조건:
300틱차트에서 macd가 0보다 작고, 하락추세일때 90틱차트의 macd가 데드크로스.
90틱에서 macd가 골든크로스에서 청산.
300틱 추세 안에서 재매수가능.
다음글