커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
6708
글번호 230811
지표

바람의투자자 님에 의해서 삭제되었습니다.

프로필 이미지
바람의투자자
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 각각 값이 나오겠지요. 이수식을 부탁합니다. 감사합니다.
프로필 이미지
khkwon
2014-10-14
173
글번호 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%
프로필 이미지
승부사1
2014-10-15
170
글번호 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
195
글번호 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
201
글번호 79403
지표
답변완료

문의드립니다.

지난 번에 알려주신 수식으로 조금 응용을 해보다 막혀서 문의드립니다 ^^ 수고많으십니다. 1시간봉에서 받아온 5,20 이평선 크로스 발생싱 200틱에서 다시 5,20이평 크로스에서 매수,매도를 하려고 합니다 1시간봉 data2 셋팅 5,20이평 골드크로스 상태에서 200틱 data1 셋팅 5,20이평 골드크로스 매수 이후 데드시 청산 1시간봉 data2 셋팅 5,20이평 데드크로스 상태에서 200틱 data1 셋팅 5,20이평 데드크로스 매도이후 골드시 청산 아래와 같이 작성했는데 신호가 발생하지 않아서 문의드립니다. Inputs: Period1(5), Period2(20),position(1); var : Sma1(0,data2),Sma2(0,data2); var : Sma3(0),Sma4(0); var : Bcond(false,data1),Scond(false,data1),T(0,data1); Sma1 = data2(ma(C,Period1)); Sma2 = data2(ma(C,Period2)); Sma3 = ma(C,Period1); Sma4= ma(c,Period2); #data2 매수조건 매도조건을 data1기준으로 저장 Bcond = crossUp(sma1,sma2); Scond = crossDown(sma1,sma2); if !(MarketPosition == 0 and MarketPosition(1) == 1 ) and Bcond == true then { If crossup(sma3,sma4) then { buy("b",def,position); } } if !(MarketPosition == 0 and MarketPosition(1) == -1 ) and Scond == true then { if crossdown(sma3,sma4) then { sell("s",def,position); } } 감사합니다 ^^ 부탁드리겠습니다
프로필 이미지
forexar
2014-10-14
175
글번호 79401
시스템
답변완료

확인 좀 부탁 드립니다.

아래 질문 드린것 처럼 답변을 주셨는데요. 지표로 만들어서 사용 해 보니 사용 해보니 선이 하나 밖에 나오지를 않네요.무슨 문제가 있는건지 확인 좀 부탁 드립니다. 안녕하세요 예스스탁입니다. 키움의 해당 랭귀지를 사용하지 않아 색처리등에 대해 알지 못합니다/ 다만 예스래귀지에서는 수식안에서 선과 선사이에 색을 채우는 것은 가능합니다. 예스랭귀지에서 지표사이의 색을 채우는 것은 지표속성의 차트표시탭의 채우기 기능을 이용해 사용자분이 직접 처리하셔야 합니다. 아래와 같이 지표식 작성하시면 7개의 선이 나타납니다. 지표속성 채우기에서 2개의 선을 높낮이를 비교해 채우기 지정하시기 바랍니다. INPUTS: P1(5),P2(20),P3(60); VARS: T1(0),T2(0),T3(0),T4(0),T5(0),T6(0),T7(0); T1 = ema(ema(ema(c,P1),P1),P1); T2 = ema(ema(ema(c,P1),P1),P1); T3 = ema(ema(ema(c,P1),P1),P1); T4 = ema(ema(ema(c,P1),P1),P1); T5 = ema(ema(ema(c,P1),P1),P1); T6 = ema(ema(ema(c,P1),P1),P1); T7 = ema(ema(ema(c,P1),P1),P1); plot1(T1,"T1"); plot2(T2,"T2"); plot3(T3,"T3"); plot4(T4,"T4"); plot5(T5,"T5"); plot6(T6,"T6"); plot7(T7,"T7"); 즐거운 하루되세요 > 루키11 님이 쓴 글입니다. > 제목 : 지표 문의 드립니다 > 안녕하세요. 고생이 많으십니다. 첨부된 파일 처럼 지표를 만들고 싶은데 어떤거 부터 해야 될지 감이 잡히질 않네요..ㅠ 확인 부탁 드립니다. 아래처럼 키움증권에서 수식을 만들어서 사용 중에 있습니다. 각각 색깔 변화에 대한 수식이니 참고해서 부탁 드립니다. 수식1 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); T7 수식2 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); T6 수식3 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); T5 수식4 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); T4 수식5 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); T3 수식 6 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); T2 수식 7 T1 수식 8 IF(T2<T1,T2,T1) 수식 9 IF(T3<MIN(T1,T2),T3,MIN(T1,T2)) 수식 10 IF(T4<MIN(T1,T2,T3),T4,MIN(T1,T2,T3)) 수식11 T1=TEMA(C,P1); T2=TEMA(C,P2); T3=TEMA(C,P3); T4=TEMA(C,P4); T5=TEMA(C,P5); T6=TEMA(C,P6); T7=TEMA(C,P7); T8=TEMA(C,P8); IF(T5<MIN(T1,T2,T3,T4),T5,MIN(T1,T2,T3,T4)) 수식12 IF(T6<MIN(T1,T2,T3,T4,T5),T6,MIN(T1,T2,T3,T4,T5)) 수식13 IF(T7<MIN(T1,T2,T3,T4,T5,T6),T7,MIN(T1,T2,T3,T4,T5,T6)) 수식14 MIN(T1,T2,T3,T4,T5,T6,T7,T8)
프로필 이미지
루키11
2014-10-14
244
글번호 79400
지표
답변완료

감사합니다

문의 드립니다. 분봉을 사용하는데 참조2에서 마디가(변수사용)를 2번 이탈하면 그 2번째 이탈한 지점을 ii로 저장하고 20캔들 이내 저장한 가격보다 5% 이하 시 매수 2 번 까지만 매매되게 부탁드립니다. 청산 조건은 매수한 캔들이후 5캔들이 지나서 매수한 캔들의 저점을 이탈시는 청산 감사합니다.
프로필 이미지
회원
2014-10-14
176
글번호 79398
시스템