커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7048
글번호 230811
답변완료
지표 수식(지표1, 지표2) 작성을 부탁드립니다.
담당자님, 안녕하세요.
작성해주신 지표 수식을 잘 활용하고 있습니다.
매우 감사드립니다.
지표를 검토하시고 수정해 주신 것도 감사드립니다.
새로운 지표의 수식을 또 부탁드리게 되었습니다.
제가 오래전 부터 계속 고민하던 지표(로직)입니다. 부탁드립니다.
(KOSPI200 주가지수 선물) 분봉 차트에서, 예를 들면 3분봉 차트에서
적용하는 지표라고 가정하고 다음과 같은 지표1, 지표2 수식의 작성을 부탁드립니다.
===========================================================
===========================================================
<지표 1>
(3분봉 차트에서 적용)
1) 당일(D) 이전인 (D-1) 부터 (D-30) 까지의 n일(n=30)의 기간에 대해
(D-1) 일봉 부터 시작해서 1일씩 과거 전일자로 순차적으로 소급하여 아래 조건으로 연산한 결과값을
'당일(D)에 표시될 수평라인 수치'로 선택함. (-> 이를 당일(D) 구간에 수평라인으로 표시하게 됨.)
cf. 당일(D)의 수치(가격)는 연산에 반영(포함)되지 않으며 (단, 당일 시가를 제약조건 판단에는 적용)
(D-1)일 부터 (D-30)일 까지의 30일간의 수치(가격)를 반영하여 산출함.
(중요)[ 2) ~ 6)에 공통 적용되는 제약조건] (D-2)~(D-30) 기간에 대해서는 각 일봉의 고가(H) 또는 저가(L)가
(당일(D) 시가 + 10.0) 보다 작거나 (당일(D) 시가 - 10.0) 보다 큰 경우에만 그 고가 또는 저가를
아래의 조건에 따라 추가되는 '수평라인 수치' 또는 '상하단 범위 기준'으로 선택하며
(당일(D) 시가 + 10.0) ~ (당일(D) 시가 - 10.0)의 범위를 벗어나는 고가 또는 저가는 선택 대상에서 제외
2) 우선 (D-1) 일봉의 고가(H1)과 저가(L1)을 모두 '당일(D)에 표시될 수평라인 수치'로 선택
* 즉, (D-1) 일봉의 H1과 L1은 무조건 선택함.
3) (i) (D-2) 일봉의 고가(H2), 저가(L2) 중에서 위의 [H1~L1] 상하단 범위 밖에 있는 것을 모두
'수평라인 수치'로 추가 선택 (즉, H2 또는 L2이 [H1~L1] 상하단 범위 안에 있으면 미선택)
(cf. H2, L2 중에서 1개 또는 2개가 선택되거나 H2, L2 2개 모두 미선택)
(ii) H1과 L1, 만약 (i)에서 선택되었다면 그 H2, L2를 포함하여 2~4개 중 가장 바깥 쪽에 있는 상단과 하단의
수치를 각각 1개씩 상하단 범위로 새로 정하고, 이를 (D-3) 일봉의 고가(H3), 저가(L3) 중에서
그 상하단 범위 밖에 있는 고가와 저가를 '수평라인 수치'로 추가 선택하기 위한 조건으로서
적용될 새로운 '상하단 범위 기준'으로 정함.
(cf. 만일 H2, L2 모두 '수평라인 수치'로 추가 선택되지 않았으면 상하단 범위 기준은 [H1~L1]으로 유지)
즉, H1과 L1을 포함해서 그 시점까지 '수평라인 수치'로 추가 선택된 (일봉) 고가, 저가 중에서
가장 바깥 쪽에 있는 상단과 하단을 각 1개씩 새로운 상하단 범위 기준으로 정하고
이 범위 밖에 있는 고점, 저점을 '수평라인 수치'로 계속 추가 선택하는 과정을 (D-30) 까지
과거 일자로 소급하여 반복하는 연산임. (30일 기간 중 조건에 부합하는 '수평라인 수치'를 모두 선택)
* 3)의 제약조건 : 만일 H2, L2가 (당일 시가+10.0)~(당일 시가-10.0)의 범위를 벗어나면 선택 대상에서 제외
-----------------------------------------------------------------------------------------------
(예시) (D-1) 일봉의 H1:350pt, L1:347pt 라고 할 때 -> (D-1)의 H1, L1은 무조건 '라인 수치'로 선택
(a) H2:354, L2:351 이면 // L1<H1<(H2), L1<H1<(L2) -> (i) H2, L2를 '라인 수치'로 추가선택
(ii) (D-3) 일봉에 적용할 상하단 범위는 H2:354~L1:347로 정함
(b) H2:346, L2:343 이면 // (H2)<L1<H1, (L2)<L1<H1 -> (i) H2, L2를 '라인 수치'로 추가 선택
(ii) (D-3) 일봉에 적용할 상하단 범위는 H1:350~L2:343로 정함
(c) H2:351, L2:348 이면 // L1<H1<(H2), L1<(L2)<H1 -> (i) H2를 '라인 수치'로 추가선택(L2 미선택)
(ii) (D-3) 일봉에 적용할 상하단 범위는 H2:351~L1:347로 정함
(d) H2:349, L2:346 이면 // L1<(H2)<H1, (L2)<L1<H1 -> (i) L2를 '라인 수치'로 추가선택(H2 미선택)
(ii) (D-3) 일봉에 적용할 상하단 범위는 H1:350~L2:346로 정함
(e) H2:349, L2:348 이면 // L1<(H2)<H1, L1<(L2)<H1 -> (i) H2, L2 모두 미선택
(ii) (D-3) 일봉에 적용할 상하단 범위는 H1:350~L1:347로 계속 유지
-------------------------------------------------------------------------------------------------
4) (i) (D-3) 일봉의 고가(H3), 저가(L3) 중에서 위 3) (ii)에서 새로 정해진 상하단 범위의 밖에 있는 것을
'수평라인 수치'로 추가 선택 (즉, 새로 정해진 상하단 범위 기준 안에 있으면 미선택)
(cf. (cf. H3, L3 중에서 1개 또는 2개가 선택되거나 H3, L3 2개 모두 미선택)
(ii) 위의 3) (ii)에서 정해졌던 상단과 하단 수치와 만약 4) (i)에서 선택되었다면 그 H3, L3를 포함하여
2~4개 중 가장 바깥 쪽에 있는 상단과 하단의 수치를 각각 1개씩 상하단 범위 기준으로 새로 정하고,
이를 (D-4) 일봉의 고점(H4), 저점(L4) 중에서 상하단 범위 밖에 있는 것을 '수평라인 수치'로
추가 선택하기 위한 새로운 상하단 범위 기준으로 정함.
* 4)의 제약조건 : 만일 H3, L3가 (당일 시가+10.0)~(당일 시가-10.0)의 범위를 벗어나면 선택 대상에서 제외
5) (D-4) 일봉 ..... (D-30) 일봉 까지 계속 전일자로 소급하여 위 (i), (ii)의 연산 과정을 진행하고
조건에 부합하는 '수평라인 수치'를 계속 추가 선택함.
* 제약조건 : 만일 고가, 저가가 (당일 시가+10.0)~(당일 시가-10.0) 범위를 벗어나면 선택 대상에서 제외
6) 위 과정을 통해 산출(선택)된 모든 '수평라인 수치'를 최종 결과로
'당일(D)의 장시작 ~ 장마감'의 기간에만 표시함.
cf. 과거 30일 기간의 결과는 과거 고저점 상황에 따라 최소 2개, 최대 60개 라인이 당일(D)에 표시됨.
(추가 요건) n일(n=30) 기간의 수치는 외부입력 변수로 적용
===========================================================
===========================================================
<지표 2>
(3분봉 차트에서 적용)
(D-1) 부터 (D-30) 까지의 n일(n=30)의 기간에 대하여
(일봉의 고가과 저가 대신에) 일봉의 시가와 종가를 적용하며
연산 조건과 그 외 요건은 지표1과 동일함.
즉,
1) <지표1>과 동일
(중요)[ 2) ~ 6)에 공통 적용되는 제약조건] (D-2)~(D-30) 기간에 대해서는 각 일봉의 시가(O) 또는 종가(C)가
(당일(D) 시가 + 10.0) 보다 작거나 (당일(D) 시가 - 10.0) 보다 큰 경우에만 그 시가 또는 종가를
아래의 조건에 따라 추가되는 '수평라인 수치' 또는 '상하단 범위 기준'으로 선택하며
(당일(D) 시가 + 10.0) ~ (당일(D) 시가 - 10.0)의 범위를 벗어나는 시가 또는 종가는 선택 대상에서 제외
2) 우선 (D-1) 일봉의 시가(O1)과 종가(C1)을 모두 '당일(D)에 표시될 수평라인 수치'로 선택
* (D-1) 일봉의 O1과 C1은 무조건 선택
3) (i) (D-2) 일봉의 시가(O2), 종가(C2) 중에서 위의 [O1~C1] 상하단 범위 밖에 있는 것을
'수평라인 수치'로 추가 선택 (즉, [O1~C1] 상하단 범위 안에 있으면 미선택)
(ii) O1과 C1, 만약 (i)에서 선택되었다면 그 O2, C2를 포함하여 2~4개중 가장 바깥 쪽에 있는 상단과 하단의
수치를 각각 1개씩 상하단 범위로 새로 정하고, 이를 (D-3) 일봉의 시가(O3), 종가(C3) 중에서
그 상하단 범위 밖에 있는 고가와 저가를 '수평라인 수치'로 추가 선택하기 위한 조건으로서
적용될 새로운 '상하단 범위 기준'으로 정함.
* 제약조건 : 만일 O2, C2가 (당일 시가+10.0)~(당일 시가-10.0) 범위를 벗어나면 선택 대상에서 제외
.......
이런 방식으로 6)까지 <지표1>의 (고가과 저가) 대신에 (시가와 종가)를 적용한 지표 수식입니다.
* 담당자님께서 지표1을 작성해 주시면 제가 시가와 종가를 적용한 수식으로 변형(수정)해 보려고 했지만
고민해 보니, 시가와 종가는 고가~저가 처럼 고가가 저가 보다 항상 큰 경우만 있는것이 아니라
시가가 더 클 때도 있고 종가가 더 클 때도 있어 수식의 부등호나 IF문, 함수 등을 제가 도저히 제대로
수정할 수 없을 거 같아서 <지표2>도 함께 담당자님께 문의 드리게 되었습니다.
혜량하여 주시기 바랍니다.
=============================================================
=============================================================
위와 같이 지표1과 지표2의 수식 작성을 부탁드립니다.
지표 작성해 주신 것에 대해 미리 감사드리며
항상 건강하고 건승하시기 바랍니다.
2022-02-21
1330
글번호 156443
답변완료
수식문의드립니다
수고 많으십니다 관리자님,
수식 부탁 드립니다.
매수 전봉 종가보다 5% 상향시 즉시 매수
매도 전봉 종가보다 5% 하락시 즉시 매도
2022-02-18
1216
글번호 156442
답변완료
지표 질문입니다
var1=DayHigh(1)-DayLow(1);
var2=DayOpen+var1;
Var3=DayClose(1)+var1;
Var4=DayLow+var1;
var5=DayOpen-var1;
Var6=DayClose(1)-var1;
Var7=DayHigh-var1;
var2,var3,var4 가운데 가장 높은 값(a)과 두번째 높은 값(b)의 대칭 상승값(a+(a-b))표시
var5,var6,var7 가운데 가장 낮은 값(c)과 두번때 낮은 값(d)의 대칭 하락값(c-(d-c))표시
감사합니다
2022-02-18
1213
글번호 156440
답변완료
문의 드립니다,..
늘 감사합니다..
다름이 아니오라 자동 매매를 할려고 합니다
그림과 같이 설정할려고 하는데 수식 도움 부탁 드립니다.
- 3분봉 기준
*매수 : 이전봉의 고가를 돌파하고 2틱 이상이면 매수
*매도 : 이전봉의 저가를 돌파하고 2틱 이상이면 매도
늘 행복한 날들이 가득 하시길 바랍니다...
2022-02-18
1211
글번호 156435
답변완료
수식 문의드립니다
안녕하세요? 왕초보 탱구리입니다.
가입하고 개발자님을 항상 존경하며 수식공부를 하다가 막히는 부분이 있어 질문을 드립니다.
바쁘신 와중에도 잠시만 봐주시면 정말 감사드리겠습니다.
제가 만든 코인 수식입니다. 부끄럽네요ㅜㅜ
작동은 잘 하는데 맞게 된건지 한번 살펴봐주세요.
기준선 돌파 이런 식입니다.
그런데 수익이 안나와서 식을 좀 수정해 보려고하는데 막히네용....ㅜㅜ
<제가 만든식>
Input: shortperiod(12), longperiod(24), sig(9);
var: value(0), signal(0);
Signal = Ema(value, sig);
# 매수/매도청산
If CrossUP(value, 0) Then
{
Buy();
}
If value > 0 and CrossUp(value, signal) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value, 0) Then
{
Sell ();
}
If value > 0 and CrossDown(value, signal) Then
{
Sell();
}
위 식을 첨부파일1 그림처럼 수정을 해보려고요.
ps. 복리를 추라하려고 넣었더니 BUY값이 이미 지정되었습니다. 라고 뜨네요(바이가 두번들어간게 수식이 잘못되었나요?) 복리추가도 같이 좀 봐주세욤.
input : 원금(100000),시작일(20200829),시작시간(90000);
var : Tcond(False),수량(0);
if sDate == 시작일 and sTime >= 시작시간 Then
Tcond = true;
수량 = IntPortion((원금+NetProfit())/C)+ FracPortion((원금+NetProfit())/C);
if Tcond == true Then
# 매수/매도청산
If CrossUP(value, 0) Then
{
Buy("매수",Atmarket,DEF,수량);
}
If value > 0 and CrossUp(value, signal) Then
{
Buy("매수",Atmarket,DEF,수량);
}
(바이가 두번 지정되었다고 나와서 아... 수식이 잘못되었구나 생각이 듬요.)
바쁘신 와중에 읽어주셔서 너무너무 감사드려용~~^^
2022-02-19
1104
글번호 156433
lbh1119 님에 의해서 삭제되었습니다.
2022-02-18
231
글번호 156425
답변완료
수식작성 부탁드립니다
항상 도움주셔서 감사드립니다~
아래의 수식에
진입신호가 발생하면,
지정한 익절이나 손절에 도달하면 표시되는 텍스트 출력이 아니라,
매수진입과함께 곧바로
익절가(35틱) 및 손절가(35틱)를
표시할수 있는수식 부탁드립니다
그리고,출력되는 텍스트에 색상,글씨두께,위치조정을 할수있는
수식도같이부탁드립니다.
1. onclose타입일 경우
input : 소숫점자리수(0);
if MarketPosition <= 0 and 매수진입조건 then
{
buy("b");
Text_New(sdate,stime,H+PriceScale*2,NumToStr(C,소숫점자리수));
}
2. atmeket 타입일 경우
input : 소숫점자리수(0);
if MarketPosition <= 0 and 매수진입조건 then
{
buy("b",atmarket);
Text_New(sdate,stime,H+PriceScale*2,NumToStr(NextBarOpen,소숫점자리수));
}
수고하세요
2022-02-18
1227
글번호 156424
답변완료
지표 수식(QA 75978번 지표3)의 추가 검토 부탁드립니다.
담당자님, 안녕하세요.
(Q&A 75978번에 대한 추가 질의입니다.)
지난번 Q&A 75978번에서 담당자님께서 검토해서 수정해 주신 수식을 잘 활용하고 있습니다.
그런데, 지표3의 시스템 산출 결과가 제가 의도했던 것과는 다른 결과가 산출됩니다.
<지표3>은 일자별로 절대값(종가-시가) 값이 가장 큰 30분봉 중에서 상위 3개의 30분봉을 선택하고
그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여 그 값을 당일(D)에 수평선 라인으로 표시하는 것입니다.
제가 실제 데이터로 검증해보니까 예를 들면,
1) 2022.02.04와 2021.07.05의 경우 상위 1, 2번째 값은 정확한 값을 산출했지만
상위 3번째에 대해서는 3번째 값 대신에 상위 4번째에 해당하는 값을 산출합니다.
2) 2020.03.27의 경우에는 데이터로 계산한 수치와 전혀 다른 값을 산출합니다.
제가 수기 계산해서 검토한 내용을 엑셀 파일로 첨부하였고
시뮬레이션 차트에서 실행한 결과(산출된 수치)를 화면 캡쳐하여
엑셀파일에 같이 첨부하였습니다. 참고하시기 바랍니다.
엑셀에서 그림 파일이 안열리는 거 가아서 그림파일도 따로 첨부합니다.
<지표3>에 대해서 질의 내용과 다른 결과가 도출되는 점에 대해 검토해주시고
다시 한번 수정해 주실 것을 부탁드립니다.
담당자님을 계속 번거롭게 해드려 죄송합니다.
제 나름으로는 의미 있게 생각하는 지표라 계속 연구하고 있는 중이라 그렇습니다.
수정해서 작성해 주시는 것에 미리 감사드립니다.
(담당자님의 편의를 위하여
Q&A 75978번에서 담당자님께서 수정해서 작성해주신 답변내용 중
<지표3> 부분만 발췌해서 아래에 기재하였습니다.)
==============================================
==============================================
작성자 : 예스스탁 작성일 : 2022-02-17 오전 9:58:08 조회수 : 7
지표 Re : 지표 수식(지표2와 지표3)의 검토 부탁드립니다
안녕하세요
예스스탁입니다.
평균값저장이 최고차이발생봉까지만 대상으로 저장되게 되어 있었습니다.
1번식과 같은 경우는 관계없지만 2번과 3번과 같이 시종의 중간값을 저장할때
그이후시간의 종가가 반영되지 않았었습니다.
1~3번식 모두 수정해 드립니다.
(<지표1, 2> 수식은 기재생략)
3
input : 타주기분(30),n(10);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : R1[50](0),M1[50](0);
Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
}
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
OO = O;
CC = C;
Condition1 = False;
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
CC = C;
if abs(OO-CC) > R1[0] Then
{
R1[0] = abs(OO-CC);
Condition1 = true;
}
if Condition1 == true Then
M1[0] = (OO+CC)/2;
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if (tempR1[i2] >= tempmax ) then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
Plot1(NTHVALUE[1]);
Plot2(NTHVALUE[2]);
Plot3(NTHVALUE[3]);
}
}
2022-02-18
1725
글번호 156423
답변완료
넘 어려워서 질문좀요 ㅠ
수식에 맞는 상황인데 왜 안사지는건가요 ?
수식은 If (DayHigh(1) - DayLow(1)) < (DayHigh(0) - DayLow(0)) and (ma(v,5) > ma(v,20) )Then
{
Buy();
}
이고 사진에 빨간표시 첨부했습니다
2022-02-18
1251
글번호 156422