커뮤니티
문의드림니다
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봉 이후가 힘듬니다. 부탁드립니다.
다음글
이전글