커뮤니티
이전글 추가 문의...
2016-02-03 22:01:42
102
글번호 95155
답변 감사합니다.
그런데, 적용해보니 문제점이 보입니다.
전일 매수신호가 뜨고, 다음날(전일+1일) 시초가가 전일 종가 대비 하락하면,
다음날 매수 신호가 아예 안뜹니다.
그리고, 다다음날(전일+2일) 시초가가 다음날 종가 대비 상승하면,
다다음날(전일+2일) 매수신호가 뜹니다.
-> 전일 매수 신호일때, 다음날 시초가가 전일 종가 대비 상승해야만 다음날
매수신호가 뜨고, 시초가 하락하면 매수신호 안뜹니다.
다다음날 시초가가 다음날 종가 대비 상승하면 그제서야 매수신호가 뜹니다.
(계속 D-1일 종가 대비 D 일 시초가가 상승할때까지 매수신호 안뜹니다)
-> 전일 매도신호일 때도 동일한 현상 발생합니다. 다음날 시초가가 전일종가
대비 하락해야만 매도신호 뜹니다.
(D-1일 종가 대비 D 일 시초가가 하락할때까지 계속 매도신호 안뜸)
==> 즉, 반대방향일때 신호가 안뜹니다. b1,s1만 뜨고, b2,s2가 아예 안뜸.
일단, 시스템이 "일봉" 기준이므로,
하루에 매매신호가 여러번 뜨는 경우는 거의 없는 관계로,
전일 매매신호를 무조건 따라가는 것으로 로직 변경합니다.
(수식 단순화 차원에서)
그리고, 위의 문제점들을 반영하여 수정 부탁합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템 문의..
> 안녕하세요
예스스탁입니다.
Inputs: VtyPercent(0.75),ATRperiod(5);
var : TH(0),TL(0),Sum(0),TR(0),DayATR(0),cnt(0),position(0),PredayPosition(0);
sum = 0;
for cnt = 0 to ATRperiod-1{
If DayClose(cnt+1) > dayhigh(cnt) then
TH = DayClose(cnt+1);
else
TH = dayhigh(cnt);
If DayClose(cnt+1) < DayLow(cnt) then
TL = DayClose(cnt+1);
else
TL = daylow(cnt);
TR = TH-TL;
Sum = Sum+TR;
}
DayATR = Sum/ATRperiod;
If position <= 0 and H >= DayClose(1) + (VtyPercent * DayATR) Then
position = 1;
If position >= 0 and L <= DayClose(1) - (VtyPercent * DayATR) Then
position = -1;
if date != date[1] Then{
PredayPosition = position[1];
if PredayPosition == 1 and dayopen > DayClose(1) then
buy("b1");
if PredayPosition == -1 and dayopen < DayClose(1) then
sell("s1");
}
if stime == 120000 or (stime > 120000 and stime[1] < 120000) Then{
if PredayPosition == 1 and dayopen < DayClose(1) Then
buy("b2");
if PredayPosition == -1 and dayopen > DayClose(1) Then
sell("s2");
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 시스템 문의..
> 연결선물지수를 Volatility percent 일봉 (day 봉)
으로 하고 있읍니다.
시스템 자동 매매신호를 하루씩 순연하여 받게 하고 싶은데,
가능하겠읍니까? (아래 참조)
"전일 매매신호"와 "당일 시초가의 방향(전일종가 대비 상승 or 하락)"이
같은 방향이면 시초가(or 9:10)에,
반대 방향이면 12시에 매매 체결
전일 매수신호이고, 당일시초가 상승(전일종가 대비)이면 같은 방향으로 보고,
당일시초가 하락(전일종가 대비)이면 반대 방향으로 봄.
전일 매도신호이고, 당일시초가 하락(전일종가 대비)이면 같은 방향으로 보고,
당일시초가 상승(전일종가 대비)이면 반대 방향으로 봄.
(매수는 상승을 같은 방향으로, 매도는 하락을 같은 방향으로 대응시킴)
정리하면,
전일 매수 => 당일시초가 상승(전일종가 대비) -> 시초가(or 9:10) 매수 (같은 방향)
당일시초가 하락(전일종가 대비) -> 12시 매수 (반대방향)
전일 매도 => 당일시초가 상승(전일종가 대비) -> 12시 매도 (반대방향)
당일시초가 하락(전일종가 대비) -> 시초가(or 9:10)매도 (같은 방향)
(매수=> 상승과 같은 방향, 매도 => 하락과 같은 방향으로 본 것임)
그리고, 전일에 여러번 매매신호가 뜬다면, 마지막 매매신호만 받아서
위와 같이 계산하여 당일 매매체결합니다.
예로, 전일 매수, 매도, 매수 이렇게 연달아 3회 매매신호가 떴다면,
마지막 매수 신호만 받아서 쓰고, 앞의 신호들은 무시합니다.
다만, 전일 마지막 신호가 기존 신호와 같을시는 그냥 통과합니다.(매매체결 안함)
(전일 매수, 매도 이렇게 떴다면, 마지막 매도신호를 따라가나,
원래 기존 신호가 매도이므로 실제 매매체결은 안함. 중복매매 방지)
예로, 전전일 매도 뜨고, 전일 매수,매도 뜨면, 당일은 그냥 통과(매도 체결 안함).
==> 전일 홀수 횟수 매매신호 뜨면, 마지막 신호 따라가고,
전일 짝수 횟수 매매신호 뜨면, 그냥 통과함.
이상입니다.
답변 1
예스스탁 예스스탁 답변
2016-02-04 11:43:13
안녕하세요
예스스탁입니다.
식을 수정했습니다.시스템식에 주석을 붙여드립니다.
참고하셔서 수정보완해 사용하시기 바랍니다.
시스템은 피라미딩을 설정하지 않으면
매수진입이 들어간 상태에서 매수진입이 발생하지 않고
매도진입이 들어간 상태에서 매도진입이 발생하지 않습니다.
시스템 적용시 피라미딩을 모든진입신호허용으로 설정하고 적용하시면
신호발생일 모든 신호 보실수 있습니다.
2번식은 지표는 전일마지막 신호의 포지션을 그리는 지표입니다.
1이면 매수, -1이면 매도, 전일 신호발생이 없으면 0입니다.
1.
Inputs: VtyPercent(0.75),ATRperiod(5);
var : TH(0),TL(0),Sum(0),TR(0),DayATR(0),cnt(0),position(0),PredayPosition(0);
#전일기준 일봉 ATR계산
sum = 0;
for cnt = 1 to ATRperiod{
If DayClose(cnt+1) > dayhigh(cnt) then
TH = DayClose(cnt+1);
else
TH = dayhigh(cnt);
If DayClose(cnt+1) < DayLow(cnt) then
TL = DayClose(cnt+1);
else
TL = daylow(cnt);
TR = TH-TL;
Sum = Sum+TR;
}
DayATR = Sum/ATRperiod;
#당일 첫봉
if date != date[1] Then{
#포지션 저장변수는 0
position = 0;
#전일포지션 저장변수에난 전일 마지막포지션값 저장
PredayPosition = position[1];
#전일포지션이 1이고 시초가가 전일종가보다 크면 매수
if PredayPosition == 1 and dayopen > DayClose(1) then
buy("b1");
#전일포지션이 -1이고 시초가가 전일종가보다 작으면 매도
if PredayPosition == -1 and dayopen < DayClose(1) then
sell("s1");
}
# 포지션이 0이나 -1일때 고가가 전일종가+일봉 ATR*0.75보다 크면 포지션은 1
If position <= 0 and H >= DayClose(1) + (VtyPercent * DayATR) Then
position = 1;
# 포지션이 0이나 1일때 저가가 전일종가-일봉 ATR*0.75보다 크면 포지션은 -1
If position >= 0 and L <= DayClose(1) - (VtyPercent * DayATR) Then
position = -1;
#12시에
if stime == 120000 or (stime > 120000 and stime[1] < 120000) Then{
#전일포지션이 1이고 시초가가 전일종가보다 낮으면 매수
if PredayPosition == 1 and dayopen < DayClose(1) Then
buy("b2");
#전일포지션이 -1이고 시초가가 전일종가보다 크면 매도
if PredayPosition == -1 and dayopen > DayClose(1) Then
sell("s2");
}
2.
Inputs: VtyPercent(0.75),ATRperiod(5);
var : TH(0),TL(0),Sum(0),TR(0),DayATR(0),cnt(0),position(0),PredayPosition(0);
sum = 0;
for cnt = 1 to ATRperiod{
If DayClose(cnt+1) > dayhigh(cnt) then
TH = DayClose(cnt+1);
else
TH = dayhigh(cnt);
If DayClose(cnt+1) < DayLow(cnt) then
TL = DayClose(cnt+1);
else
TL = daylow(cnt);
TR = TH-TL;
Sum = Sum+TR;
}
DayATR = Sum/ATRperiod;
if date != date[1] Then{
Position = 0;
PredayPosition = position[1];
}
If position <= 0 and H >= DayClose(1) + (VtyPercent * DayATR) Then
position = 1;
If position >= 0 and L <= DayClose(1) - (VtyPercent * DayATR) Then
position = -1;
plot2(Predayposition);
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 이전글 추가 문의...
> 답변 감사합니다.
그런데, 적용해보니 문제점이 보입니다.
전일 매수신호가 뜨고, 다음날(전일+1일) 시초가가 전일 종가 대비 하락하면,
다음날 매수 신호가 아예 안뜹니다.
그리고, 다다음날(전일+2일) 시초가가 다음날 종가 대비 상승하면,
다다음날(전일+2일) 매수신호가 뜹니다.
-> 전일 매수 신호일때, 다음날 시초가가 전일 종가 대비 상승해야만 다음날
매수신호가 뜨고, 시초가 하락하면 매수신호 안뜹니다.
다다음날 시초가가 다음날 종가 대비 상승하면 그제서야 매수신호가 뜹니다.
(계속 D-1일 종가 대비 D 일 시초가가 상승할때까지 매수신호 안뜹니다)
-> 전일 매도신호일 때도 동일한 현상 발생합니다. 다음날 시초가가 전일종가
대비 하락해야만 매도신호 뜹니다.
(D-1일 종가 대비 D 일 시초가가 하락할때까지 계속 매도신호 안뜸)
==> 즉, 반대방향일때 신호가 안뜹니다. b1,s1만 뜨고, b2,s2가 아예 안뜸.
일단, 시스템이 "일봉" 기준이므로,
하루에 매매신호가 여러번 뜨는 경우는 거의 없는 관계로,
전일 매매신호를 무조건 따라가는 것으로 로직 변경합니다.
(수식 단순화 차원에서)
그리고, 위의 문제점들을 반영하여 수정 부탁합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템 문의..
> 안녕하세요
예스스탁입니다.
Inputs: VtyPercent(0.75),ATRperiod(5);
var : TH(0),TL(0),Sum(0),TR(0),DayATR(0),cnt(0),position(0),PredayPosition(0);
sum = 0;
for cnt = 0 to ATRperiod-1{
If DayClose(cnt+1) > dayhigh(cnt) then
TH = DayClose(cnt+1);
else
TH = dayhigh(cnt);
If DayClose(cnt+1) < DayLow(cnt) then
TL = DayClose(cnt+1);
else
TL = daylow(cnt);
TR = TH-TL;
Sum = Sum+TR;
}
DayATR = Sum/ATRperiod;
If position <= 0 and H >= DayClose(1) + (VtyPercent * DayATR) Then
position = 1;
If position >= 0 and L <= DayClose(1) - (VtyPercent * DayATR) Then
position = -1;
if date != date[1] Then{
PredayPosition = position[1];
if PredayPosition == 1 and dayopen > DayClose(1) then
buy("b1");
if PredayPosition == -1 and dayopen < DayClose(1) then
sell("s1");
}
if stime == 120000 or (stime > 120000 and stime[1] < 120000) Then{
if PredayPosition == 1 and dayopen < DayClose(1) Then
buy("b2");
if PredayPosition == -1 and dayopen > DayClose(1) Then
sell("s2");
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 시스템 문의..
> 연결선물지수를 Volatility percent 일봉 (day 봉)
으로 하고 있읍니다.
시스템 자동 매매신호를 하루씩 순연하여 받게 하고 싶은데,
가능하겠읍니까? (아래 참조)
"전일 매매신호"와 "당일 시초가의 방향(전일종가 대비 상승 or 하락)"이
같은 방향이면 시초가(or 9:10)에,
반대 방향이면 12시에 매매 체결
전일 매수신호이고, 당일시초가 상승(전일종가 대비)이면 같은 방향으로 보고,
당일시초가 하락(전일종가 대비)이면 반대 방향으로 봄.
전일 매도신호이고, 당일시초가 하락(전일종가 대비)이면 같은 방향으로 보고,
당일시초가 상승(전일종가 대비)이면 반대 방향으로 봄.
(매수는 상승을 같은 방향으로, 매도는 하락을 같은 방향으로 대응시킴)
정리하면,
전일 매수 => 당일시초가 상승(전일종가 대비) -> 시초가(or 9:10) 매수 (같은 방향)
당일시초가 하락(전일종가 대비) -> 12시 매수 (반대방향)
전일 매도 => 당일시초가 상승(전일종가 대비) -> 12시 매도 (반대방향)
당일시초가 하락(전일종가 대비) -> 시초가(or 9:10)매도 (같은 방향)
(매수=> 상승과 같은 방향, 매도 => 하락과 같은 방향으로 본 것임)
그리고, 전일에 여러번 매매신호가 뜬다면, 마지막 매매신호만 받아서
위와 같이 계산하여 당일 매매체결합니다.
예로, 전일 매수, 매도, 매수 이렇게 연달아 3회 매매신호가 떴다면,
마지막 매수 신호만 받아서 쓰고, 앞의 신호들은 무시합니다.
다만, 전일 마지막 신호가 기존 신호와 같을시는 그냥 통과합니다.(매매체결 안함)
(전일 매수, 매도 이렇게 떴다면, 마지막 매도신호를 따라가나,
원래 기존 신호가 매도이므로 실제 매매체결은 안함. 중복매매 방지)
예로, 전전일 매도 뜨고, 전일 매수,매도 뜨면, 당일은 그냥 통과(매도 체결 안함).
==> 전일 홀수 횟수 매매신호 뜨면, 마지막 신호 따라가고,
전일 짝수 횟수 매매신호 뜨면, 그냥 통과함.
이상입니다.
이전글