답변완료
일봉 봉가정
안녕하세요.
아래 답변감사드립니다. 재 문의드립니다.
제 질문은 일봉에서의 청산함수 적용결과가 분봉에서의 결과와 다르게 나오는 이유에 관한것이었습니다.
다른 질문에서 답변을 듣기로, 청산함수(SetStopLoss,SetStopProfitTarget)는 일봉이든, 분봉이든 동일하게 분봉에서 적용한것 처럼 시뮬 결과를 보여준다고 하셔서, 일봉백테에서도 분봉과 같이 동일한 결과(즉, 동일하게 손절또는 익절되는)를 줄거라고 생각했습니다만, 아래 답변을 보면 일봉백테에서는 봉가정이 들어가서 분봉백테스트와는 결과가 틀려질수 있는것이 맞는건가요?
일봉시뮬이라도 분봉단위까지 데이터는 있으니까, 마치 분봉의 결과를 다 감안해서 백테결과를 보여주는게 아니었던가요?
그렇다면, 아래와 같이 분봉에서 적용한거와 동일하다는 하신건 어떤의미인가요??
(다른 질문에서의 주신답변내용:
'수식에서 SetStopLoss,SetStopProfitTarget등으로 강제청산 지정했다면
가격조건 만족시 즉시 신호가 발생하므로 분봉에서 적용하신거랑 같습니다.')
---------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
랭귀지의 각 봉안에는 모든 시세가 없습니다.
과거봉은 시고저종만으로 봉이 만들어지게 되고
실시간 봉이 아닌 과거봉은 시가에서 어떻게 움직여서 종가로 끝났는지 알수 없어
간단한 움직임 가설을 세우고 해당 가설과 같이 움직인것으로 보고 시뮬레이션 됩니다.
차트 과거봉에 대한 움직임가설은 도움말내용을 참고하시기 바랍니다.
랭귀지 도움말 --> 예스랭귀지 활용 --> 과거 데이타 움직임 가격
예를 들어 일봉에서는
시가-> 저가 -> 고가 -> 종가로 끝난 것으로 판정된 봉으로
매도진입후 가격이 하락하여 익절이 먼저 발생한것으로 시뮬레이션 되지만
분봉에서는 당일움직임을 세부적으로 알수 있고 실제 손절라인까지 먼저 움직였다면 손절이 먼저 발생하게 됩니다.
차트 과거봉 모두에 1틱단위의 시세가 모두 제공되면 시뮬레이션이 정확하겠지만
과거봉에 대해 1틱으로 모두 받으면 용량이 굉장히 크고 장시간의 데이타 로딩문제등이 있어
일반적으로 시뮬레이션들은 봉의 시고저종만 받고 움직임은 몇가지 규칙을 지정해
움직인것으로 보고 시뮬레이션이 됩니다.
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 일봉과 분봉백테 상이
> 아래와 같은 돌파 전략을 일봉에서 검증 후, 분봉에서도 검증해보고 있습니다.
-------------------------------------------------------------
PL = (((H+L+C) / 3) * 2) - H; //피봇1차 지지선
Sell("매도",AtStop, Lowest(PL,1) - entryRange);
SetStopLoss(0.2,PercentStop);
SetStopProfitTarget(3,PercentStop);
-------------------------------------------------------------
그런데, 종종 일봉에서는 손절없이 수익으로 결과가 나오는 것들이 분봉상에는 손절이 발생되는데 이해가 잘 되지 않습니다.
가령, micro 나스닥100선물대상으로 일봉상 백테에서는 7.12일에 12004.75에 진입하여 익절 3%작동한것으로 나오는데,
동일한 전략을 분봉에서 적용하여 보면, 7.11 15:10(일봉으로는 7.12일)에 12004.75에 동일하게 진입하여 15:33에 -0.2% 손절이 난것으로 처리되어 있습니다.
그래프를 확인해도 손절나는것이 맞는것 같은데, 왜 일봉백테에서는 익절로 처리가 되었는지 궁금합니다.
일봉백테는 결과가 좋았다가 막상 분봉으로 가니, 결과가 나빠져서, 일봉백테를 신뢰할수
가 없는것 같습니다... atstop과 청산함수등은 모두 일봉이든 분봉이든 값이 만족하는 즉
시 진입하고 청산되는걸로 알고 있었는데...아닌가요?
2022-08-05
1303
글번호 161336
시스템
답변완료
일봉과 분봉백테 상이
아래와 같은 돌파 전략을 일봉에서 검증 후, 분봉에서도 검증해보고 있습니다.
-------------------------------------------------------------
PL = (((H+L+C) / 3) * 2) - H; //피봇1차 지지선
Sell("매도",AtStop, Lowest(PL,1) - entryRange);
SetStopLoss(0.2,PercentStop);
SetStopProfitTarget(3,PercentStop);
-------------------------------------------------------------
그런데, 종종 일봉에서는 손절없이 수익으로 결과가 나오는 것들이 분봉상에는 손절이 발생되는데 이해가 잘 되지 않습니다.
가령, micro 나스닥100선물대상으로 일봉상 백테에서는 7.12일에 12004.75에 진입하여 익절 3%작동한것으로 나오는데,
동일한 전략을 분봉에서 적용하여 보면, 7.11 15:10(일봉으로는 7.12일)에 12004.75에 동일하게 진입하여 15:33에 -0.2% 손절이 난것으로 처리되어 있습니다.
그래프를 확인해도 손절나는것이 맞는것 같은데, 왜 일봉백테에서는 익절로 처리가 되었는지 궁금합니다.
일봉백테는 결과가 좋았다가 막상 분봉으로 가니, 결과가 나빠져서, 일봉백테를 신뢰할수
가 없는것 같습니다... atstop과 청산함수등은 모두 일봉이든 분봉이든 값이 만족하는 즉
시 진입하고 청산되는걸로 알고 있었는데...아닌가요?
2022-08-05
1414
글번호 161318
시스템
답변완료
변곡점마다 지정수치 및 도형이 나오도록수정부탁드립니다
Input:상승률(1),하락률(1);
Var:j(0),상승(100),하락(-100),양방향(2),색깔(0),파랑(-1),빨강(1),
기준고(0),기준저(0),기준고Bar(0),기준저Bar(0),추세(0),이중파동(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동 > 0 Then
{
Plot1(이중파동,"Zigzag",Iff(색깔==빨강,RED,BLUE));
이중파동 = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고 <= H || 기준고 == 0 || IsNaN(기준고) == True Then
{
기준고 = H;
기준고Bar = 0;
}
Else
기준고Bar = 기준고Bar + 1;
If 기준저 >= L || 기준저 == 0 || IsNaN(기준저) == True Then
{
기준저 = L;
기준저Bar = 0;
}
Else
기준저Bar = 기준저Bar + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고 * (1 - (하락률/100)) > H && 기준저 * (1 + (상승률/100)) < L Then
{
추세 = Iff(기준고Bar==기준저Bar,양방향,Iff(기준고Bar>기준저Bar,상승,하락));
}
Else If 기준고 * (1 - (하락률/100)) > H Then 추세 = 하락;
Else If 기준저 * (1 + (상승률/100)) < L Then 추세 = 상승;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세[1] == 상승 && 추세 == 하락 Then
{
For j = 18 DownTo 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
If 고[2] < 고[1] Then 색깔 = 빨강;
If 이중파동[1] > 0 Then 이중파동 = 고[1];
Else plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,BLUE));
}
If 추세[1] == 하락 && 추세 == 하락 &&
고[1] < 기준고 &&
기준고 * (1 - (하락률/100)) > H Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
If 저[2] > 저[1] Then 색깔 = 파랑;
plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,BLUE));
If 고[2] < 고[1] Then 색깔 = 빨강;
이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 상승 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
If 저[2] > 저[1] Then 색깔 = 파랑;
If 이중파동[1] > 0 Then 이중파동 = 저[1];
Else plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,BLUE));
}
If 추세[1] == 상승 && 추세 == 상승 &&
저[1] > 기준저 &&
기준저 * (1 + (상승률/100)) < L Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
If 고[2] < 고[1] Then 색깔 = 빨강;
plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,BLUE));
If 저[2] > 저[1] Then 색깔 = 파랑;
이중파동 = 저[1];
}
If 추세 == 양방향 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
추세 = 추세[1];
If 추세[1] == 상승 Then
{
If 고[2] < 고[1] Then 색깔 = 빨강;
Plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,BLUE));
If 저[2] > 저[1] Then 색깔 = 파랑;
이중파동 = 저[1];
}
Else
{
If 저[2] > 저[1] Then 색깔 = 파랑;
Plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,BLUE));
If 고[2] < 고[1] Then 색깔 = 빨강;
이중파동 = 고[1];
}
}
var : tx(0);
#==========================================#
# 마무리
#==========================================#
If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then
{
If 추세 == 상승 Then
{
If 고[1] < 기준고 Then 색깔 = 빨강;
// Plot1(기준고,"Zigzag",Iff(색깔==빨강,RED,BLUE));
tx = Text_New(Sdate,stime,기준고," ▲▲");
Text_SetColor(tx,RED);
Text_SetStyle(tx,0,2);
Text_SetSize(tx,20);
}
Else
{
If 저[1] > 기준저 Then 색깔 = 파랑;
//Plot1(기준저,"Zigzag",Iff(색깔==빨강,RED,BLUE));
tx = Text_New(Sdate,stime,기준저," ▼▼");
Text_SetColor(tx,BLUE);
Text_SetStyle(tx,0,2);
Text_SetSize(tx,20);
}
}
2022-08-05
2074
글번호 161311
지표