커뮤니티

문의드림니다

프로필 이미지
청량거사
2004-07-04 22:55:58
1134
글번호 4354
답변완료
macd를 이용하여 crossup시 매수, crossdown시 매도 진입 . 매수 진입후 10봉 이후에 crossdown시 매수 청산, 매도 진입후 10봉 이후에 crossup시 매도 청산하는 수식을 만들고 싶습니다. 진입 회수에는 제한을 두지 않고요. 10봉 이후가 힘듬니다. 부탁드립니다.
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2004-07-05 18:13:15

안녕하세요..예스스탁입니다. 문의하신 내용은 barssinceEntry(포지션 진입후 경과한 바 수를 나타내는 함수)를 이용하여 작성하실 수 있습니다. input : sp(12), lp(26), sigp(9); var : macdV(0), macdS(0); macdV = macd(sp, lp); macdS = ema(macdV,sigP); if CrossUp(macdV, macdS) then buy(); if CrossDown(macdV, macdS) then sell(); if barssinceEntry(0) >= 10 then { // 현재 진입한 포지션이 10봉이 경과했으면 if Crossdown(macdV, macdS) then exitlong(); if CrossUp(macdV, macdS) then exitshort(); } > 청량거사 님이 쓴 글입니다. > 제목 : 문의드림니다 > macd를 이용하여 crossup시 매수, crossdown시 매도 진입 . 매수 진입후 10봉 이후에 crossdown시 매수 청산, 매도 진입후 10봉 이후에 crossup시 매도 청산하는 수식을 만들고 싶습니다. 진입 회수에는 제한을 두지 않고요. 10봉 이후가 힘듬니다. 부탁드립니다.
프로필 이미지

청량거사

2004-07-06 01:08:27

10봉 이내에서는 crossup, crossdown이 일어나도 진입을 못하게 할 수는 없는지요. 10봉 이후로 정한 것은 잦은 매매를 피하기 위해서 입니다. 현재 만들어 주신 식은 10봉 이내에서 조건만 성립하면 진입합니다. 다시 한번 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 포지션 진입후 경과한 바 수 > 안녕하세요..예스스탁입니다. 문의하신 내용은 barssinceEntry(포지션 진입후 경과한 바 수를 나타내는 함수)를 이용하여 작성하실 수 있습니다. input : sp(12), lp(26), sigp(9); var : macdV(0), macdS(0); macdV = macd(sp, lp); macdS = ema(macdV,sigP); if CrossUp(macdV, macdS) then buy(); if CrossDown(macdV, macdS) then sell(); if barssinceEntry(0) >= 10 then { // 현재 진입한 포지션이 10봉이 경과했으면 if Crossdown(macdV, macdS) then exitlong(); if CrossUp(macdV, macdS) then exitshort(); } > 청량거사 님이 쓴 글입니다. > 제목 : 문의드림니다 > macd를 이용하여 crossup시 매수, crossdown시 매도 진입 . 매수 진입후 10봉 이후에 crossdown시 매수 청산, 매도 진입후 10봉 이후에 crossup시 매도 청산하는 수식을 만들고 싶습니다. 진입 회수에는 제한을 두지 않고요. 10봉 이후가 힘듬니다. 부탁드립니다.
프로필 이미지

예스스탁 예스스탁 답변

2004-07-06 09:09:15

안녕하세요.. 먼저 답변드린 내용은 청산의 경우만 진입후 10봉이 지나서 청산하도록 작성하였었습니다. 반대 방향의 진입을 10봉이 지나서 하려면 마찬가지로 barssinceentry함수를 이용할 수 있는데, 문제는 첫번째 진입의 경우와 그 이후의 진입을 나누어서 생각해야 한다는 것입니다. 당일 첫번째 진입의 경우는 보유하고 있는 포지션이 없기 때문에 barssinceEntry(0) > 10 과 같은 조건을 만족할 수 없기 때문에 첫번째 진입일 경우는 이와 같은 조건없이 진입하도록 하고 그 이후에는 이 조건에 의해서 진입하도록 하여야 합니다. 이때 첫번째 진입인지를 확인하기 위해서 아래 식에서 cnt변수를 이용하였습니다. 아래 작성한 식은 포지션 시스템을 예로 작성하였는데, 당일청산 시스템으로 적용하시려면 주석처리한 부분 까지 적용하면 당일청산용으로 사용할 수 있습니다. 즐거운 날 되세요.. input : sp(12), lp(26), sigp(9); var : macdV(0), macdS(0), cnt(0); macdV = macd(sp, lp); macdS = ema(macdV,sigP); /* 당일청산 시스템일 경우 적용 if date != date[1] then cnt = 0; */ if cnt == 0 then { if CrossUp(macdV, macdS) then {buy(); cnt = cnt + 1;} if CrossDown(macdV, macdS) then {sell();cnt = cnt + 1;} } else { if barssinceEntry(0) >= 10 then { if CrossUp(macdV, macdS) then buy(); if Crossdown(macdV, macdS) then sell(); } } > 청량거사 님이 쓴 글입니다. > 제목 : 한번 더 문의드림니다 > 10봉 이내에서는 crossup, crossdown이 일어나도 진입을 못하게 할 수는 없는지요. 10봉 이후로 정한 것은 잦은 매매를 피하기 위해서 입니다. 현재 만들어 주신 식은 10봉 이내에서 조건만 성립하면 진입합니다. 다시 한번 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 포지션 진입후 경과한 바 수 > 안녕하세요..예스스탁입니다. 문의하신 내용은 barssinceEntry(포지션 진입후 경과한 바 수를 나타내는 함수)를 이용하여 작성하실 수 있습니다. input : sp(12), lp(26), sigp(9); var : macdV(0), macdS(0); macdV = macd(sp, lp); macdS = ema(macdV,sigP); if CrossUp(macdV, macdS) then buy(); if CrossDown(macdV, macdS) then sell(); if barssinceEntry(0) >= 10 then { // 현재 진입한 포지션이 10봉이 경과했으면 if Crossdown(macdV, macdS) then exitlong(); if CrossUp(macdV, macdS) then exitshort(); } > 청량거사 님이 쓴 글입니다. > 제목 : 문의드림니다 > macd를 이용하여 crossup시 매수, crossdown시 매도 진입 . 매수 진입후 10봉 이후에 crossdown시 매수 청산, 매도 진입후 10봉 이후에 crossup시 매도 청산하는 수식을 만들고 싶습니다. 진입 회수에는 제한을 두지 않고요. 10봉 이후가 힘듬니다. 부탁드립니다.