커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7487
글번호 230811
답변완료
지표 부탁드립니다.
장중 고가 + 장중 저가 / 2
위의 값을 실시간으로 check할 수 있는 지표가 선으로 표시되도록 부탁드립니다.
2014-10-15
168
글번호 79411
답변완료
한번 진입후 일정시간후부터 진입 수식
1분봉으로 옵션거래를 하는데
거래량에 비해서 진입신호가 너무 많이 발생해 체결이 안되는경우가 많습니다.
한번 진입 후 3분이나 일정시간 이후 조건이 맞을시 다시 진입하는 수식이 있나요?
부탁드립니다.~~
2014-10-15
162
글번호 79410
답변완료
수식부탁드립니다.
하루 세번 진입
오전 10시에서 오후 2시 사이에만 진입
macd 다이버전스 신호시 매수/ 매도
또는
stochastics 다이버전스 신호시 매수/ 매도
청산은
30틱이상 50% 이익손실이면 청산
손절 15틱
이상입니다.
2014-10-14
201
글번호 79409
바람의투자자 님에 의해서 삭제되었습니다.
2014-10-14
0
글번호 79408
답변완료
에러
전에 아래의 문의와 수식을 받았는데요. 잘 쓰고 있다가 금월이 되니 목요일이 휴일인 관계로
수요일이 만기가 되고 새로운 월물이 금요일이 되어 버렸습니다.
그런 연유로 그런것 같은데요. 아직도 전월이 계속되는 지표로 나오네요. 이것을 수정할 방법이 없는지요? 만기일이 휴일이 되면 앞으로도 계속 이렇게 되나요?
그림 1
안녕하세요
예스스탁입니다.
평균부분이 다른방식이어서 수정했습니다.
아래식 적용하시면 됩니다.
1.주종목(data1)
var : dcnt(0,data1),V1(0,data1),H1(0,data1),L1(0,data1);
var : H2(0,data1),L2(0,data1),HLsum(0,data1),Csum(0,data1),HLmav(0,data1),Cmav(0,data1);
var : nday(0,data1),week(0,data1),cond1(false,data1);
nday = data1(date - int(date/100)*100);
week = data1(DayOfWeek(date));
if nday >= 8 and nday <= 14 and week == 4 then
Cond1 = True;
Else
Cond1 = false;
if data1((Cond1 == false and cond1[1] == true and date != date[1]) or index == 0) Then{
dcnt = 0;
HLsum = 0;
Csum = 0;
H1 = data1(H);
L1 = data1(L);
H2 = H1[1];
L2 = L1[1];
}
if data1(date != date[1]) Then{
dcnt = dcnt+1;
if dcnt >= 2 Then{
HLsum = HLsum + data1((highD(1)+LowD(1))/2);
Csum = Csum + data1(CloseD(1));
}
}
HLmav = (HLsum+data1((highD(0)+LowD(0))/2))/Dcnt;
Cmav = (Csum+data1(CloseD(0)))/Dcnt;
if dcnt == 1 Then
v1 = data1(LowD(0));
if data1(H) > H1 Then
H1 = data1(H);
if data1(L) < L1 Then
L1 = data1(L);
plot1(V1,"당월 시작일저가");
plot2(H1,"당월 최고가");
plot3(L1,"당월 최저가");
plot4(HLmav,"당월평균(고저평균)");
plot5(Cmav,"당월평균(종가)");
plot6(H2,"전월물 최고가");
plot7(L2,"전월물 최저가");
2. 참조데이터(data2)
var : dcnt(0,data2),V1(0,data2),H1(0,data2),L1(0,data2);
var : H2(0,data2),L2(0,data2),HLsum(0,data2),Csum(0,data2),HLmav(0,data2),Cmav(0,data2);
var : nday(0,data2),week(0,data2),cond1(false,data2);
nday = data2(date - int(date/100)*100);
week = data2(DayOfWeek(date));
if nday >= 8 and nday <= 14 and week == 4 then
Cond1 = True;
Else
Cond1 = false;
if data2((Cond1 == false and cond1[1] == true and date != date[1]) or index == 0) Then{
dcnt = 0;
HLsum = 0;
Csum = 0;
H1 = data2(H);
L1 = data2(L);
H2 = H1[1];
L2 = L1[1];
}
if data2(date != date[1]) Then{
dcnt = dcnt+1;
if dcnt >= 2 Then{
HLsum = HLsum + data2((highD(1)+LowD(1))/2);
Csum = Csum + data2(CloseD(1));
}
}
HLmav = (HLsum+data2((highD(0)+LowD(0))/2))/Dcnt;
Cmav = (Csum+data2(CloseD(0)))/Dcnt;
if dcnt == 1 Then
v1 = data2(LowD(0));
if data2(H) > H1 Then
H1 = data2(H);
if data2(L) < L1 Then
L1 = data2(L);
plot1(V1,"당월 시작일저가");
plot2(H1,"당월 최고가");
plot3(L1,"당월 최저가");
plot4(HLmav,"당월평균(고저평균)");
plot5(Cmav,"당월평균(종가)");
plot6(H2,"전월물 최고가");
plot7(L2,"전월물 최저가");
즐거운 하루되세요
> khkwon 님이 쓴 글입니다.
> 제목 : 옵션지표 재문의 36867에 대한 재문의
> . > 제목 : 옵션에서 특정값 구하기
> 안녕하세요? 옵션 분봉차트에서 다음값 구현이 가능한지요?
1. 당월물 시작일의 저가
2. 당월물 전체의 최고값과 최저값
3. 당월물 일봉 고/저가 평균값 아니면 종가기준 평균값
4. 전월 전체 최고값과 최저값.
또 보조차트 data2에 대한 1,2,3,4 값을 구하는 수식을 부탁합니다.
감사합니다.
윗 질문에 대한 답이 올라왔는데 원하는 답이 아닙니다, 구체적으로 설명을 드리면
참고로 당월물 콜풋 260기준으로 하면
1. 시작일 6/13일 저가는 콜 2.26 풋 2.6이 되고요.
2. 당월중 콜의 최고값은 6/13고가 3.9이고 최저값은 6/20저가 0.97 풋은 6/20고가 5.5, 7/4저
가 0.53
3. 당월 거래평균가를 알고 싶은데 평균값을 구하는 방식을 매일 (고가+저가)/2와 종가기준
으로 계산하는 방식 2가지로 부탁하고요.
4. 콜 260과 풋 260의 전월중 최고치와 최저치 즉 콜260은 5/22고가 7.85, 5/12저가 1.85
풋 260은 5/9고가 8.0, 6/11저가 1.76 이렇게 되는 거지요.
주차트를 콜로 띄우면 콜에 대한 1.2.3,4 보조차트를 풋으로 띄우면 풋에대한 1,2,3,4 각각 값이 나오겠지요. 이수식을 부탁합니다. 감사합니다.
2014-10-14
195
글번호 79407
답변완료
수식 2개(^^) 부탁드립니다.
매수조건
1. 20ma가 60ma 위에 있고
2. 5ma가 20ma를 상향돌파
위 두조건 만족시 시장가 매수
매도조건
5ma가 20ma를 하향이탈하는 시장가 매도
손절매 5%
======================================
검색수식
1. 5일동안 한번이상 상한가간 종목
2. 5일동안 평균거래량 10만주 이상
3. 1ma가 120ma보다 크고 3% 이내
매매수식
1. 120ma에 닿을때 매수
2. 3% 수익 실현후 매도
손절매 3%
2014-10-15
183
글번호 79406
답변완료
문의드립니다.
안녕하세요?
전일 봉의 영향을 받지 않고, 금일봉부터 시작해서 시스템을 짜고 있는데요.
예를 들어 연속한 봉 5개가 양봉이면 매수, 반대이면 매도.
input : N(5);
if dayindex+1>=1 then{
if countif(C > O,N) == N Then
buy("매수", AtMarket, DEF, 1);
if countif(C < O,N) == N Then
Sell("매도", AtMarket, DEF, 1);
}
그런데 여기서 진입조건을 AtMarket으로 하면 전일 봉 5개가 연속 양봉이고, 당일 첫 봉이 양봉이면 매수가 발생합니다. dayindex함수를 사용했는대도 말이죠..
진입조건을 Atmarket이 아닌 빈칸으로 설정해 놓으면, 이럴때는 매수가 발생하지 않아요.
왜 그런건가요? Atmarket으로 설정하고, 전일 봉의 영향을 안받게 하려면 어떻게 해야 하나요?
답변 부탁드립니다.
2014-10-14
206
글번호 79405
괌 님에 의해서 삭제되었습니다.
2014-10-14
0
글번호 79404
답변완료
부탁드립니다
일봉차트나 분봉 차트에 보이지 않아 검토부탁드립니다.
Input:Period(2000),Percent(20);
Var:j(0),k(0),행번호(0),cnt(0),총거래량(0),추정거래량(0);
Array:가격대[1000](0),거래량[1000](0),구간[11](0),부분합[10](0),비율[10](0);
If Index == 0 then
{
#----------------------------------------------------------------------------------#
# 가격대를 배열변수에 세팅한다.
# 첫번째 봉에서 한번만 수행하고 이후는 추가행으로 처리
#----------------------------------------------------------------------------------#
가격대[0] = (Int(Round(H/PriceScale/100,9))+3) * PriceScale * 100; //200틱 이상 둠
for 행번호 = 0 to 998
{
가격대[행번호+1] = 가격대[행번호] - PriceScale; //가격대 배열에 가격 대입둠
}
}
#----------------------------------------------------------------------------------#
# 가격대를 위로 벗어날 경우 행을 추가한다.
#----------------------------------------------------------------------------------#
if 가격대[0] <= H + PriceScale * 100 then //고가가 가격대 배열 이상이 되면
{
for 행번호 = 899 downto 0
{
가격대[행번호+100] = 가격대[행번호]; //추가행만큼 뒤로 옮긴다
거래량[행번호+100] = 거래량[행번호];
}
가격대[0] = 가격대[0] + PriceScale * 100; //추가된 행에 가격 재설정
for 행번호 = 0 to 99
{
가격대[행번호+1] = 가격대[행번호] - PriceScale;
}
for 행번호 = 0 to 100 //추가된 행의 나머지 항목은
{
거래량[행번호] = 0; //0값으로 초기화
}
}
#----------------------------------------------------------------------------------#
# 반대로 가격이 하락세라면 상단의 빈가격대 행을 삭제한다.
#----------------------------------------------------------------------------------#
if 가격대[0] > highest(H,Period) + PriceScale * 300 then //가격 하락 추세일 경우
{
for 행번호 = 0 to 899
{
가격대[행번호] = 가격대[행번호+100]; //100행만큼 앞으로 옮긴다
거래량[행번호] = 거래량[행번호+100];
}
for 행번호 = 899 to 998
{
가격대[행번호+1] = 가격대[행번호] - PriceScale;
}
for 행번호 = 900 to 999 //추가된 행의 나머지 항목은
{
거래량[행번호] = 0; //0값으로 초기화
}
}
#----------------------------------------------------------------------------------#
# 현재 봉의 거래량을 걸쳐있는 가격대에 분배
#----------------------------------------------------------------------------------#
cnt = 0;
for 행번호 = 0 to 999
{
if L <= 가격대[행번호] and 가격대[행번호] <= H then //현재 봉 가격대가 몇가격대
cnt = cnt + 1; //걸쳐져 있는지 계산
}
추정거래량 = V/cnt; //가격대별 배분할 거래량
//두번 연산하는 셈인데 위에서는 몇가격대에 걸쳐 있는지 판단하기 위함이고
//아래는 가격대에 해당 거래량을 누적하는 것임
for 행번호 = 0 to 999
{
if L <= 가격대[행번호] and 가격대[행번호] <= H then
{
거래량[행번호] = 거래량[행번호] + 추정거래량;
}
}
#----------------------------------------------------------------------------------#
# 이전 봉의 거래량을 걸쳐있는 가격대에 차감
#----------------------------------------------------------------------------------#
If Index >= Period Then
{
cnt = 0;
for 행번호 = 0 to 999
{
if L[Period] <= 가격대[행번호] and 가격대[행번호] <= H[Period] then
cnt = cnt + 1;
}
추정거래량 = V[Period]/cnt;
for 행번호 = 0 to 999
{
if L[Period] <= 가격대[행번호] and 가격대[행번호] <= H[Period] then
{
거래량[행번호] = 거래량[행번호] - 추정거래량;
}
}
}
#----------------------------------------------------------------------------------#
# 10개 구간의 구간별 거래량 비율 계산
#----------------------------------------------------------------------------------#
총거래량 = 총거래량 + V - Iff(Index>=Period,V[Period],0);
For j = 0 To 9
{
구간[j] = 가격대[j*100];
부분합[j] = 0;
}
구간[10] = 가격대[999]-PriceScale;
k = 0;
For j = 0 To 999
{
If 구간[k] >= 가격대[j] && 구간[k+1] < 가격대[j] Then
부분합[k] = 부분합[k] + 거래량[j];
Else
k = k + 1;
}
For j = 0 To 9
{
비율[j] = 부분합[j] * 100 / 총거래량;
}
if 비율[0] > percent then plot1(구간[0]);
if 비율[0] > percent then Plot2(구간[1]);
if 비율[1] > percent then Plot3(구간[1]);
if 비율[1] > percent then plot4(구간[2]);
if 비율[2] > percent then Plot5(구간[2]);
if 비율[2] > percent then plot6(구간[3]);
if 비율[3] > percent then Plot7(구간[3]);
if 비율[3] > percent then plot8(구간[4]);
if 비율[4] > percent then Plot9(구간[4]);
if 비율[4] > percent then plot10(구간[5]);
if 비율[5] > percent then Plot11(구간[5]);
if 비율[5] > percent then plot12(구간[6]);
if 비율[6] > percent then plot13(구간[6]);
if 비율[6] > percent then Plot14(구간[7]);
if 비율[7] > percent then Plot15(구간[7]);
if 비율[7] > percent then plot16(구간[8]);
if 비율[8] > percent then Plot17(구간[8]);
if 비율[8] > percent then plot18(구간[9]);
if 비율[9] > percent then Plot19(구간[9]);
if 비율[9] > percent then plot20(구간[10]);
2014-10-14
216
글번호 79403