예스스탁
예스스탁 답변
2021-01-18 13:35:57
안녕하세요
예스스탁입니다.
올려주신 시스템을 적용해 보았지만
첨부한 그림과 같이 10시 이전에 발생하는 신호가 없습니다.
차트는 1분봉이고 당일청산15시, 손절은 2포인트로 지정했습니다.
수식에도 별도로 수정해 드릴부분이 없습니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 수식 답변 고맙습니다.
첨부파일은 아래수식 시뮬레이션 결과입니다
1분차트
data2 kp외국인순매수금액
data3 kp기관계순매수금액
문제점은
시작시간을 10시로 했을 경우 9시01분에 진입하는 경우들이 생깁니다.
수식 살펴주세요.
항상 고맙습니다.
**********************************************************************************
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의1
> 아래수식은 주차트에 사용하는 buy 수식입니다.
1. 보조차트2와 보조차트3을 이용해서 양합을 구합니다.
var : sum(0,Data1);
sum = Data2(c)+data3(c);
2. 구한 양합을 아래 수식에 따라 진입과 청산에 사용하고 싶습니다.
좌오비우오비
2021-01-18 13:53:24
맞습니다.
다른 경우들의 조합 (선물이나 옵션atm 등) 에서는 10시 이후에 진입해서
수식의 문제는 아닌 것 같다는 생각입니다.
하지만
예시한 경우. 즉 kospi 외국인순매수,기관순매수,개인순매수금액의 조합에서는
09시01분 진입이 발생합니다.
data2 kp외국인순매수금액
data3 kp기관계순매수금액
kospi 외국인순매수,기관순매수,개인순매수금액쪽 data 제공의 문제인지 살펴주세요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의
> 안녕하세요
예스스탁입니다.
올려주신 시스템을 적용해 보았지만
첨부한 그림과 같이 10시 이전에 발생하는 신호가 없습니다.
차트는 1분봉이고 당일청산15시, 손절은 2포인트로 지정했습니다.
수식에도 별도로 수정해 드릴부분이 없습니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 수식 답변 고맙습니다.
첨부파일은 아래수식 시뮬레이션 결과입니다
1분차트
data2 kp외국인순매수금액
data3 kp기관계순매수금액
문제점은
시작시간을 10시로 했을 경우 9시01분에 진입하는 경우들이 생깁니다.
수식 살펴주세요.
항상 고맙습니다.
**********************************************************************************
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의1
> 아래수식은 주차트에 사용하는 buy 수식입니다.
1. 보조차트2와 보조차트3을 이용해서 양합을 구합니다.
var : sum(0,Data1);
sum = Data2(c)+data3(c);
2. 구한 양합을 아래 수식에 따라 진입과 청산에 사용하고 싶습니다.
예스스탁
예스스탁 답변
2021-01-18 14:34:40
안녕하세요
예스스탁입니다.
데이타도 같이 검토해 보았지만 특별히 발견한 문제가 없습니다.
데이타는 좀더 살펴보도록 하겠습니다.
첨부하신 리포트와 제가 첨부해 드린 리포트의 신호위치가 모두 다른데
만약 첨부하신 수식과 실제 적용한 수식에 다른 내용이 있으시면
수식 내용을 한번 살펴봐 주시기 바랍니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : Re : Re : 문의
> 맞습니다.
다른 경우들의 조합 (선물이나 옵션atm 등) 에서는 10시 이후에 진입해서
수식의 문제는 아닌 것 같다는 생각입니다.
하지만
예시한 경우. 즉 kospi 외국인순매수,기관순매수,개인순매수금액의 조합에서는
09시01분 진입이 발생합니다.
data2 kp외국인순매수금액
data3 kp기관계순매수금액
kospi 외국인순매수,기관순매수,개인순매수금액쪽 data 제공의 문제인지 살펴주세요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의
> 안녕하세요
예스스탁입니다.
올려주신 시스템을 적용해 보았지만
첨부한 그림과 같이 10시 이전에 발생하는 신호가 없습니다.
차트는 1분봉이고 당일청산15시, 손절은 2포인트로 지정했습니다.
수식에도 별도로 수정해 드릴부분이 없습니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 수식 답변 고맙습니다.
첨부파일은 아래수식 시뮬레이션 결과입니다
1분차트
data2 kp외국인순매수금액
data3 kp기관계순매수금액
문제점은
시작시간을 10시로 했을 경우 9시01분에 진입하는 경우들이 생깁니다.
수식 살펴주세요.
항상 고맙습니다.
**********************************************************************************
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의1
> 아래수식은 주차트에 사용하는 buy 수식입니다.
1. 보조차트2와 보조차트3을 이용해서 양합을 구합니다.
var : sum(0,Data1);
sum = Data2(c)+data3(c);
2. 구한 양합을 아래 수식에 따라 진입과 청산에 사용하고 싶습니다.
좌오비우오비
2021-01-18 15:17:48
시뮬레이션에 사용한 수식입니다.
아래 수식을 그대로 사용했고
시작시간을 09시 했을 때가 첨부파일1
시작시간을 10시 했을 때가 첨부파일2
보조data
data2 kp 외국인 순매수금액
data3 kp 기관계 순매수금액
첨부파일2를 보시면 10시 진입인데 0901분 진입이
01 06일 발생
01 14일 발생
검토에 도움이 되었으면 합니다.
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 문의
> 안녕하세요
예스스탁입니다.
데이타도 같이 검토해 보았지만 특별히 발견한 문제가 없습니다.
데이타는 좀더 살펴보도록 하겠습니다.
첨부하신 리포트와 제가 첨부해 드린 리포트의 신호위치가 모두 다른데
만약 첨부하신 수식과 실제 적용한 수식에 다른 내용이 있으시면
수식 내용을 한번 살펴봐 주시기 바랍니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : Re : Re : 문의
> 맞습니다.
다른 경우들의 조합 (선물이나 옵션atm 등) 에서는 10시 이후에 진입해서
수식의 문제는 아닌 것 같다는 생각입니다.
하지만
예시한 경우. 즉 kospi 외국인순매수,기관순매수,개인순매수금액의 조합에서는
09시01분 진입이 발생합니다.
data2 kp외국인순매수금액
data3 kp기관계순매수금액
kospi 외국인순매수,기관순매수,개인순매수금액쪽 data 제공의 문제인지 살펴주세요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의
> 안녕하세요
예스스탁입니다.
올려주신 시스템을 적용해 보았지만
첨부한 그림과 같이 10시 이전에 발생하는 신호가 없습니다.
차트는 1분봉이고 당일청산15시, 손절은 2포인트로 지정했습니다.
수식에도 별도로 수정해 드릴부분이 없습니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 수식 답변 고맙습니다.
첨부파일은 아래수식 시뮬레이션 결과입니다
1분차트
data2 kp외국인순매수금액
data3 kp기관계순매수금액
문제점은
시작시간을 10시로 했을 경우 9시01분에 진입하는 경우들이 생깁니다.
수식 살펴주세요.
항상 고맙습니다.
**********************************************************************************
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의1
> 아래수식은 주차트에 사용하는 buy 수식입니다.
1. 보조차트2와 보조차트3을 이용해서 양합을 구합니다.
var : sum(0,Data1);
sum = Data2(c)+data3(c);
2. 구한 양합을 아래 수식에 따라 진입과 청산에 사용하고 싶습니다.
예스스탁
예스스탁 답변
2021-01-18 17:36:02
안녕하세요
예스스탁입니다.
원인을 찾았습니다.
data2 kp선물외국인순매수금액
data3 kp선물기관계순매수금액
제가 테스트한 데이타가 달랐습니다.
kp선물외국인순매수금액과 kp선물기관계순매수금액의 경우에는
첫데이타가 9시 30초부터 제공되어
1분봉에서 기본차트 첫봉과 data2,data3의 첫봉이 같은 시간이지만
kp외국인순매수금액과 kp기관계순매수금액은
9시 1분이후에 첫데이타가 생기므로 선물 첫봉아래에는 해당 데이타가 없습니다.
현재 수식에서 data2(stime >= 100000)으로 시간제한이 되어 있습니다.
봉완성이 다음봉 시가가 수신될때인데
data2의 전일마지막봉의 완성이 당일 9시 1분 이후에 완성이 됩니다.
즉 data1기준 아침첫봉완성시에는 data2의 전일마지막봉이 완성되는 타이밍으로
data2(stime>= 100000)이 만족하게 됩니다.
수식에서 시간조건을 data2대신에 data1로 사용하셔도 되고
혹은 각 진입식에 Data2(NextBarSdate == sDate)조건을 추가해주시면 됩니다
아래는 Data2(NextBarSdate == sDate)를 추가한 식입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF and Data2(NextBarSdate == sDate) Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF and Data2(NextBarSdate == sDate) Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : Re : Re : Re : Re : 문의
> 시뮬레이션에 사용한 수식입니다.
아래 수식을 그대로 사용했고
시작시간을 09시 했을 때가 첨부파일1
시작시간을 10시 했을 때가 첨부파일2
보조data
data2 kp 외국인 순매수금액
data3 kp 기관계 순매수금액
첨부파일2를 보시면 10시 진입인데 0901분 진입이
01 06일 발생
01 14일 발생
검토에 도움이 되었으면 합니다.
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 문의
> 안녕하세요
예스스탁입니다.
데이타도 같이 검토해 보았지만 특별히 발견한 문제가 없습니다.
데이타는 좀더 살펴보도록 하겠습니다.
첨부하신 리포트와 제가 첨부해 드린 리포트의 신호위치가 모두 다른데
만약 첨부하신 수식과 실제 적용한 수식에 다른 내용이 있으시면
수식 내용을 한번 살펴봐 주시기 바랍니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : Re : Re : 문의
> 맞습니다.
다른 경우들의 조합 (선물이나 옵션atm 등) 에서는 10시 이후에 진입해서
수식의 문제는 아닌 것 같다는 생각입니다.
하지만
예시한 경우. 즉 kospi 외국인순매수,기관순매수,개인순매수금액의 조합에서는
09시01분 진입이 발생합니다.
data2 kp외국인순매수금액
data3 kp기관계순매수금액
kospi 외국인순매수,기관순매수,개인순매수금액쪽 data 제공의 문제인지 살펴주세요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의
> 안녕하세요
예스스탁입니다.
올려주신 시스템을 적용해 보았지만
첨부한 그림과 같이 10시 이전에 발생하는 신호가 없습니다.
차트는 1분봉이고 당일청산15시, 손절은 2포인트로 지정했습니다.
수식에도 별도로 수정해 드릴부분이 없습니다.
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 수식 답변 고맙습니다.
첨부파일은 아래수식 시뮬레이션 결과입니다
1분차트
data2 kp외국인순매수금액
data3 kp기관계순매수금액
문제점은
시작시간을 10시로 했을 경우 9시01분에 진입하는 경우들이 생깁니다.
수식 살펴주세요.
항상 고맙습니다.
**********************************************************************************
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의1
> 아래수식은 주차트에 사용하는 buy 수식입니다.
1. 보조차트2와 보조차트3을 이용해서 양합을 구합니다.
var : sum(0,Data1);
sum = Data2(c)+data3(c);
2. 구한 양합을 아래 수식에 따라 진입과 청산에 사용하고 싶습니다.