안녕하세요
도대체 안되는 이유를 모르겠어서 도움 요청합니다.
순서대로 지표적용 하고 시스템적용 매매옵션 설정하고 정상적으로 된거 같은데
조건이 충족 되었는데도 매수체결이 안되네요.
논리적 오류가 있는건지.. 도움주시면 감사하겠습니다.
파일 첨부합니다.
답변 2
예스스탁
예스스탁 답변
2025-06-18 09:27:15
안녕하세요
예스스탁입니다.
올려주신 수식은 1분봉에 적용하면 신호가 발생합니다.
5분봉에 적용하면 신호가 발생하지 않는데
5분봉 time은 09:14:59, 09:19:59와 같이 끝나게 되므로
TimeToMinutes(Time)로 분단위값만 보면 554, 559가 됩니다.
stime,time,nextbarstime
예스랭귀지에서 봉의 시간은 3가지가 제공되며
봉의 끝시간(마지막시세의 시간)은 유동적이라 일반적으로 time은 잘 사용하지 않습니다.
봉의 시작시간인 stime으로 지정하시거나
봉의 완성(다음봉시가수신)시간으로 지정하시려면 NextBarStime을 사용하시면 됩니다.
Vars:
pivotPrice(0); // 기준가 저장
// 1. 기준가 계산
// 전일 종가가 전일 시가보다 작으면: (저가+저가+고가+종가)/4
// 전일 종가가 전일 시가보다 크면: (저가+고가+고가+종가)/4
// 전일 종가가 전일 시가와 같으면: (저가+고가+종가+종가)/4
if DayClose(1) < DayOpen(1)then
{
pivotPrice = (DayLow(1) + DayLow(1) + DayHigh(1) + DayClose(1)) / 4;
}
else if DayClose(1) > DayOpen(1) then
{
pivotPrice = (DayLow(1) + DayHigh(1) + DayHigh(1) + DayClose(1)) / 4;
}
else
{
pivotPrice = (DayLow(1) + DayHigh(1) + DayClose(1) + DayClose(1)) / 4;
}
// 2. 시간 조건에 따른 매매 신호 생성
// 09:15일 때
if TimeToMinutes(NextBarStime) == 9 * 60 + 15 then // 9시 15분 바 종가 시점 체크
{
// 종가가 기준가보다 크면 매수, 작거나 같으면 매도
if C > pivotPrice then
{
Buy("매수_0915", OnClose, C, 1); // 09:15 기준 매수
}
else
{
Sell("매도_0915", OnClose, C, 1); // 09:15 기준 매도
}
}
// 15:10일 때
if TimeToMinutes(NextBarStime) == 15 * 60 + 10 then // 15시 10분 바 종가 시점 체크
{
// 종가가 기준가보다 크면 매수, 작거나 같으면 매도
if C > pivotPrice then
{
Buy("매수_1510", OnClose, C, 1); // 15:10 기준 매수
}
else
{
Sell("매도_1510", OnClose, C, 1); // 15:10 기준 매도
}
}
즐거운 하루되세요
> 레일맨 님이 쓴 글입니다.
> 제목 : 조건에 도달해도 매수체결이 안됩니다
> 안녕하세요
도대체 안되는 이유를 모르겠어서 도움 요청합니다.
순서대로 지표적용 하고 시스템적용 매매옵션 설정하고 정상적으로 된거 같은데
조건이 충족 되었는데도 매수체결이 안되네요.
논리적 오류가 있는건지.. 도움주시면 감사하겠습니다.
파일 첨부합니다.