예스스탁
예스스탁 답변
2020-08-12 11:24:28
안녕하세요
예스스탁입니다.
1
17시는 장종료를 알리는 명목상 시간입니다.
Plot1(stime);
Plot2(time);
위 지표 적용해 보시면 해당봉의 시작과 끝시간 확인하실수 있습니다.
종합환경설정에서 [차트 X축 시간표시]를 봉 시작시간기준으로 설정하시면
320분봉에서 첫봉은 9시, 두번쨰 봉은 14시 20분으로 표시됩니다.
리포트의 시간은 신호가 발생한 봉의 대표시간입니다
두번째 봉에 미완성시에 중간에 신호가 발생해서
X축시간표시가 봉 끝시간 기준이면 17시로 표시되게 되고
X축을 시작시간기분으로 변경하시면 14시 20분으로 표시됩니다.
랭귀지에서는 일반적으로 시간은 stime을 이용하므로
차트의 시간표시를 봉시작시간으로 셋팅하시면 비교가 용이합니다.
2
현재 수식에서 시간제한은 if stime < 145000 then 으로 되어 있습니다.
320분봉에서
당일첫봉의 stime은 9시(90000),
두번쨰봉의 stime은 14시20분(142000)으로
2개봉 모두 stime < 145000에 충족됩니다.
그러므로 실제 해당 조건으로 제외되는 봉은 없고
첫번째봉, 두번째봉에도 모든 진입과 청산이 발생할 수 있습니다.
실제 임의종목으로 data1,data2 지정하고 적용해 보면 진입도 두번째 봉에서 발생합니다.
3
if문은 봉완성시(다음봉시가수신)에 조건을 체크합니다.
또한 수식에서 사용하는 atlimit 신호타입은
봉완성시에 가격을 셋팅하고 그 다음봉에서셋팅된 가격과 현재가를 비교해 가격조건충족하면 즉시 신호가 발생합니다.
그러므로 작성하신 식은 봉완성시에 if조건이 만족하면 가격을 셋팅하고
그다음봉의 현재가와 비교해 즉시 신호가 발생합니다.
320분봉은 당일 봉이 2개이고 항상 첫봉에만 신호가 발생하기 위해서는
두번째 봉에서만 if문이 충족해야 다음봉인 다음날 첫봉에서만 신호가 나오게 할수 있습니다.
input : 기준평균봉값(80);
input : 일차매수금액(100);
input : 이차매수금액(200);
input : 삼차매수금액(300);
input : 사차매수금액(400);
input : 오차매수금액(500);
input : 육차매수금액(500);
input : 최초진입하락폭(0.94);
input : 추가진입하락폭(0.96);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
var : mav(0,data2),MM(0,data1),SS(0,data1);
var : MMM(0,Data2),SSS(0,Data2);
mav = data2(ma(c,기준평균봉값));
MM = data1(mfi(MFI기간));
SS = data1(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
if NextBarSdate != sDate then
{
if MarketPosition == 0 and data2(CrossDown(c,mav*최초진입하락폭)) then
buy("b1",atlimit,C,Floor(일차매수금액*10000/min(NextBarOpen,C)));
if MarketPosition == 1 then
{
if MaxEntries == 1 then # 85
buy("b2",AtLimit,LatestEntryPrice(0)*추가진입하락폭,Floor(이차매수금액*10000/c));
if MaxEntries == 2 then # 80
buy("b3",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.04),Floor(삼차매수금액*10000/c));
if MaxEntries == 3 then # 75
buy("b4",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.07),Floor(사차매수금액*10000/c));
if MaxEntries == 4 then # 70
buy("b5",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.09),Floor(오차매수금액*10000/c));
if MaxEntries == 5 then # 65
buy("b6",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.10),Floor(육차매수금액*10000/c));
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
exitlong("청산",atlimit,C);
}
}
Else
SetStopProfittarget(0);
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 국내 주식 수식인데요...
> 종목 :삼성전자
data1 320봉
data2 일봉
국내 주식 입니다.
아래 수식 처럼 2시 50분이면 매수 진입하지 못하게 설정한 이유는
320분봉으로 하면 하루에 2시 20분에 한봉이 끝나고 나머지 봉이 17시에 끝나는 봉이 생김니다.
성능보고서를 보면 매수진입은 2시20분에 끝나는 봉에 진입하는데
매수 청산은 2시 20분 봉에 청산되는 것도 있지만 17시에 청산되는 봉도 나오네요..
실제로 장은 15시 30분에 마감되기 때문에 17시에 청산되는 것은 활성화가 안되지 않나요?
매수도 매도도 2시 20분봉에 진입-청산하는 수식 부탁드리겠습니다.
320분봉은 유지하면서요
input : 기준평균봉값(80);
input : 일차매수금액(100);
input : 이차매수금액(200);
input : 삼차매수금액(300);
input : 사차매수금액(400);
input : 오차매수금액(500);
input : 육차매수금액(500);
input : 최초진입하락폭(0.94);
input : 추가진입하락폭(0.96);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
var : mav(0,data2),MM(0,data1),SS(0,data1);
var : MMM(0,Data2),SSS(0,Data2);
mav = data2(ma(c,기준평균봉값));
MM = data1(mfi(MFI기간));
SS = data1(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
if stime < 145000 then
{
if MarketPosition == 0 and data2(CrossDown(c,mav*최초진입하락폭)) then
buy("b1",atlimit,C,Floor(일차매수금액*10000/min(NextBarOpen,C)));
if MarketPosition == 1 then
{
if MaxEntries == 1 then # 85
buy("b2",AtLimit,LatestEntryPrice(0)*추가진입하락폭,Floor(이차매수금액*10000/c));
if MaxEntries == 2 then # 80
buy("b3",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.04),Floor(삼차매수금액*10000/c));
if MaxEntries == 3 then # 75
buy("b4",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.07),Floor(사차매수금액*10000/c));
if MaxEntries == 4 then # 70
buy("b5",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.09),Floor(오차매수금액*10000/c));
if MaxEntries == 5 then # 65
buy("b6",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.10),Floor(육차매수금액*10000/c));
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
exitlong("청산",atlimit,C);
}
}
Else
SetStopProfittarget(0);