커뮤니티

시스템식 부탁드립니다.

프로필 이미지
파파
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틱 추세 안에서 재매수가능.