커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다

안녕하세요 1분봉으로 거래조건이 충족시 9시 1분 첫봉에 진입하게 만들고 싶은데 몇개가 9시 1분에 진입하지 않고 9시 2분에 진입을 하고 있어서 여쭤봅니다 어떻게 해야 첫봉에 진입하게 만들 수 있을까요? var : cnt(0),count(0); count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } if stime >= 090000 and count < 1 and stime < 143000 Then{ if MarketPosition == 0 Then{ buy("b",AtStop,DayOpen +0.5); sell("s",AtStop,DayOpen -0.5); } } } SetStopProfittarget(0.5,PointStop); SetStopLoss(0.5,PointStop); SetStopEndofday(145900);
프로필 이미지
파손
2015-12-01
119
글번호 92964
시스템
답변완료

감사합니다.

if MarketPosition == 1 Then{ //최대수익포인트를 0.5로 나누어 //진입이후 0.5 단위로 몇개의 폭인지 갯수를 산출(소숫점 제외하고 정수만 취함) var1 = int((highest(h,BarsSinceEntry)-EntryPrice)/0.5); //객수에 0.5를 곱해 몇 포인트인지 환산 var2 = var1*0.5; #폭이 0(0.5이상 수익발생하지 못했음)이면 진입가-0.5에 손절 if var1 == 0 Then exitlong("bx1",AtStop,EntryPrice-0.5); #폭이 1이상(0.5단위로 최소 1폭이상 수익발생)이면 #최종 폭에-0.2값으로 손절 설정 if var1 >= 1 Then exitlong("bx2",AtStop,EntryPrice+var2-0.2); } if MarketPosition == -1 Then{ var3 = int((EntryPrice-lowest(l,BarsSinceEntry))/0.5); var4 = var3*0.5; if var1 == 0 Then ExitShort("sx1",AtStop,EntryPrice-0.5); if var1 >= 1 Then ExitShort("sx2",AtStop,EntryPrice-var4+0.2); } 반갑습니다. 위 함수는 예전에 답변 받았던 수식입니다. 이 수식을 0.05 즉 한틱단위로 제가 가공해서 쓰려면 어찌 해야할 지 여쭤봅니다. 매번 감사드립니다.
프로필 이미지
새로운돌
2015-12-01
130
글번호 92963
시스템
답변완료

부탁 드립니다.

항상 도움 주셔서 감사 드립니다. 45234번 수정 질문 부탁 드립니다. 미리 감사 드립니다.
프로필 이미지
yes
2015-12-02
134
글번호 92962
지표
답변완료

문의드립니다

17시에서 다음날 05 시까지 매매횟수 제한 조건식을 넣고 싶습니다
프로필 이미지
파인애플
2015-12-01
120
글번호 92948
시스템
답변완료

지표 문의

Input: period1(5); Var : CATM(0),PATM(0); Var : SUMATM(0),AVGATM(0); CATM = Data1("C"); PATM = Data2("C"); SUMATM = CATM+PATM; plot7(SUMATM); Plot8(ma(SUMATM,Period1), "이평"); 위와 같은 수식을 사용 하고 있습니다 여기서 전일 종가의 SUMATM 보다 값이 크면 빨간색 작으면 파란색으로 선으로 표시하고 싶습니다. 어려워서 문의 드립니다.
프로필 이미지
하나일
2015-12-01
138
글번호 92947
지표
답변완료

수식 부탁드립니다

수고하십니다. 첨부 파일에서 참조데이터 2개의 차이(data2 - data3)를 차트 또는 보조차트에 그래프로 나타낼수 있나요 감사합니다
프로필 이미지
surigold
2015-12-01
142
글번호 92946
시스템
답변완료

수식수정

안녕하세요 아래는 수식지왕님의 마켓프로파일수식인데요 이게 날짜변경에 맞춰서 새로 작성되는지라 해외선물에 쓰려고 하니 맞질않네요. 해선에 맞게 장시작시 새로 작성되게 해주십시요. Var:j(0),행번호(0),단위가격(0),추가행(0),알파벳(0),최대개수(0),총개수(0),봉개수(0), 추정거래량(0),cnt(0),중앙가격(0),최대행(0),중심행(0),상위개수(0), 하위개수(0),시초범위상(0),시초범위하(0),가치영역상한(0),가치영역하한(0),누적개수(0), 위꼬리상한(0),위꼬리하한(0),아래꼬리상한(0),아래꼬리하한(0); Array:가격대[500](0),거래량[500](0),개수[500](0),프로파일[500](0), 중심가격[50](0),가치영역상[50](0),가치영역하[50](0); 단위가격 = PriceScale; if DayIndex()==0 then //날짜 변경시점에 { for j = 48 downto 0 { 중심가격[j+1] = 중심가격[j]; //전일 중심가격과 가치영역상[j+1] = 가치영역상[j]; //전일 가치영역 관리 가치영역하[j+1] = 가치영역하[j]; } for 행번호 = 0 to 499 //0값으로 초기화 { 거래량[행번호] = 0; 개수[행번호] = 0; 프로파일[행번호] = 0; } 최대개수 = 0; 총개수 = 0; 시초범위상 = 0; //장 개시 후 1시간내의 가격범위 시초범위하 = 0; 가격대[0] = H + 단위가격 * 100; //100호가의 여유를 둠 for 행번호 = 0 to 498 { 가격대[행번호+1] = 가격대[행번호] - 단위가격; //가격대 배열에 가격 대입 } } if 가격대[0] <= H then //고가가 가격대 배열 이상이 되면 { 추가행 = ceiling((H-가격대[0])/단위가격) + 20; //고가에 20호가 여유를 더 두어 재설정 for 행번호 = (499 - 추가행) downto 0 { 가격대[행번호+추가행] = 가격대[행번호]; //추가행만큼 뒤로 옮긴다 거래량[행번호+추가행] = 거래량[행번호]; 개수[행번호+추가행] = 개수[행번호]; 프로파일[행번호+추가행] = 프로파일[행번호]; } 가격대[0] = 가격대[0] + 단위가격 * 추가행; //추가된 행에 가격 재설정 for 행번호 = 0 to (추가행-1) { 가격대[행번호+1] = 가격대[행번호] - 단위가격; } for 행번호 = 0 to 추가행 //추가된 행의 나머지 항목은 { 거래량[행번호] = 0; //0값으로 초기화 개수[행번호] = 0; 프로파일[행번호] = 0; } 중심행 = 중심행 + 추가행; //중심가격의 행번호도 뒤로 밀린다 } 알파벳 = DayIndex() + 1; //알파벳 대신 숫자 사용 중앙가격 = (DayHigh()+Daylow())/2; //전체가격폭의 중앙 if DayIndex() == 60/BarInterval-1 then //장 개시 후 1시간내의 가격범위 { 시초범위상 = DayHigh(); 시초범위하 = DayLow(); } cnt = 0; for 행번호 = 0 to 499 { if L <= 가격대[행번호] and 가격대[행번호] <= H then //현재 봉 가격대가 몇가격대 cnt = cnt + 1; //걸쳐져 있는지 계산 } 추정거래량 = V/cnt; //가격대별 배분할 거래량 for 행번호 = 0 to 499 { if L <= 가격대[행번호] and 가격대[행번호] <= H then { 거래량[행번호] = 거래량[행번호] + 추정거래량; 개수[행번호] = 개수[행번호] + 1; 프로파일[행번호] = 알파벳; 총개수 = 총개수 + 1; if 최대개수 < 개수[행번호] then //신규 최빈값 나왔을 때 { 최대개수 = 개수[행번호]; 중심행 = 행번호; } else if 최대개수 == 개수[행번호] then //최빈값과 동일하다면 { if 거래량[중심행] < 거래량[행번호] then //거래량 많은 가격대를 중심행 = 행번호; else if 거래량[중심행] == 거래량[행번호] and //거래량도 동일하면 abs(중앙가격-가격대[중심행]) > //전체가격폭 중앙에 abs(중앙가격-가격대[행번호]) then //가까운 가격으로 중심행 = 행번호; } } } 중심가격[0] = 가격대[중심행]; //알파벳 개수가 가장 많은 가격 가치영역상한 = 중심행; //중심가격을 중심으로 위, 아래 70% 해당하는 가치영역하한 = 중심행; //행을 찾기 위해 시작 행을 중심행으로 함 누적개수 = 개수[중심행]; //가치영역을 찾기 위해 알파벳 개수 누적 for j = 0 to 499 { var2 = 개수[가치영역상한-1]; //가치영역상한선은 1행씩 위로(-1) var3 = 개수[가치영역하한+1]; //가치영역하한선은 1행씩 아래로(+1) if var2 > var3 then //개수가 많은 쪽의 개수를 먼저 누적한다 { 누적개수 = 누적개수 + var2; 가치영역상한 = 가치영역상한 - 1; } else if var2 < var3 then { 누적개수 = 누적개수 + var3; 가치영역하한 = 가치영역하한 + 1; } else if var2 == var3 and var2 > 0 and var3 > 0 then { 누적개수 = 누적개수 + var2; 가치영역상한 = 가치영역상한 - 1; } if 누적개수 >= 총개수 * 0.7 or var2 + var3 == 0 then j = 499; } 가치영역상[0] = 가격대[가치영역상한]; 가치영역하[0] = 가격대[가치영역하한]; 상위개수 = 0; 하위개수 = 0; 위꼬리상한 = 499; 위꼬리하한 = 0; 아래꼬리상한 = 499; if 개수[499] == 1 then 아래꼬리하한 = 499; else 아래꼬리하한 = 0; for 행번호 = 0 to 중심행-1 { if 개수[행번호] > 1 then 상위개수 = 상위개수 + 개수[행번호]; if 개수[행번호] == 0 and 개수[행번호+1] == 1 then 위꼬리상한 = 행번호 + 1; if 개수[행번호] == 1 and 개수[행번호+1] > 1 and 위꼬리하한 == 0 then 위꼬리하한 = 행번호; } for 행번호 = 499 downto 중심행+1 { if 개수[행번호] > 1 then 하위개수 = 하위개수 + 개수[행번호]; if 개수[행번호] == 1 and 개수[행번호-1] > 1 and 아래꼬리상한 == 499 then 아래꼬리상한 = 행번호; if 개수[행번호] == 0 and 개수[행번호-1] == 1 then 아래꼬리하한 = 행번호 - 1; } 봉개수 = 0; //단봉, 쌍봉, 삼봉 등 패턴파악용 for 행번호 = 1 to 499 { if 개수[행번호-1] < 개수[행번호] then //개수가 올라가면 { if 봉개수 == 0 then 봉개수 = 0.3; //x.3 else if 봉개수 == 1 then 봉개수 = 1.3; else if 봉개수 == 2 then 봉개수 = 2.3; else if 봉개수 == 3 then 봉개수 = 3.3; else if 봉개수 == 4 then 봉개수 = 4.3; } if 최대개수 * 0.8 < 개수[행번호] then //꼭지에 도달하면 { if 봉개수 == 0.3 then 봉개수 = 0.7; //x.7 else if 봉개수 == 1.3 then 봉개수 = 1.7; //낮은 봉은 배제하려고 else if 봉개수 == 2.3 then 봉개수 = 2.7; //최대개수의 80% 수준으로 설정 else if 봉개수 == 3.3 then 봉개수 = 3.7; else if 봉개수 == 4.3 then 봉개수 = 4.7; } if 개수[행번호-1] > 개수[행번호] then //개수가 떨어지는데 { if 봉개수 == 0.7 then 봉개수 = 1; //꼭지 찍고 내려오는 것은 else if 봉개수 == 1.7 then 봉개수 = 2; //1.0 else if 봉개수 == 2.7 then 봉개수 = 3; else if 봉개수 == 3.7 then 봉개수 = 4; else if 봉개수 == 4.7 then 봉개수 = 5; else if 봉개수 == 0.3 then 봉개수 = 0; //꼭지 못찍고 내려오면 else if 봉개수 == 1.3 then 봉개수 = 1; //원위치 else if 봉개수 == 2.3 then 봉개수 = 2; else if 봉개수 == 3.3 then 봉개수 = 3; else if 봉개수 == 4.3 then 봉개수 = 4; } } plot1(중심가격[0],"중심가격"); plot2(가치영역상[0],"가치영역(상)",RED); //선그래프,채우기 plot3(가치영역하[0],"가치영역(하)",RED); if 위꼬리상한 <= 위꼬리하한 then { plot4(가격대[위꼬리상한],"위꼬리상단",BLACK); //점그래프,채우기 plot5(가격대[위꼬리하한],"위꼬리하단",BLACK); } if 아래꼬리상한 <= 아래꼬리하한 then { plot6(가격대[아래꼬리상한],"아래꼬리상단",BLACK); //점그래프,채우기 plot7(가격대[아래꼬리하한],"아래꼬리하단",BLACK); } if 시초범위상 > 0 then plot8(시초범위상,"시초범위(상)",GREEN); //점그래프,채우기 if 시초범위하 > 0 then plot9(시초범위하,"시초범위(하)",GREEN); 수고하세요.
프로필 이미지
바닥차기
2015-12-01
233
글번호 92945
지표
답변완료

각 옵션의 당일 고가 저가 표시

data1=c247, data2=p247일 경우 옵션의 당일 고가 및 저가를 표시할려고 합니다 dayhigh, daylow를 사용하여 표시는 했는데, 날짜가 변경될 경우 당일에 한해서먼 선을 표시하고 싶습니다. 물론 점선으로 표시하면 가능하지만, 차트에 설정된 지표들이 많아 보기가 불편합니다 각 옵션의 당일 고가 및 저가를 어제꺼는 표시되지 않고, 당일에만 표시되는 수식 부탁드립니다...
프로필 이미지
관람자
2015-12-01
143
글번호 92944
지표
답변완료

수식 관련 문의드립니다.

먼저 상세한 답변 감사드립니다. 아래 말씀하신 형식으로 사용하여, 일간데이터 갯수를 얻어 올수 있었습니다. 추가로 문의 드릴 것이 생겼는데요. 1. 일간데이터갯수는 제한이 있는것인지요? Main.ReqMarketData(종목코드,일간데이터갯수,수급데이터갯수); 여기서 일간데이터갯수가 얼마까지 넣을 수 있는지 그 제한이 궁금합니다. 2. 수급데이터갯수는 무슨 의미인지 알려주시면 감사하겠습니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 문의 드립니다. > 안녕하세요 예스스탁입니다. 종목객체에 일간데이터의 갯수를 지정하셔야 합니다. Object가 스크립트 객체화면에서 설정한 종목객체이면 속성화면에서 일간데이터를 사용으로 하시고 갯수를 지정해 주시면 됩니다. Main.ReqMarketData함수로 만든 객체이면 함수의 2번째 매개변수에 봉수를 지정해 주시면 됩니다. Main.ReqMarketData(종목코드,일간데이터갯수,수급데이터갯수); 즐거운 하루되세요 > ywesry 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > 예스스팟에서 종목객체를 생성해서 사용하고 있습니다. 그런데 종목객체 함수중에, GetPrevVolume를 사용하려고 Object.GetPrevVolume(1) Object.GetPrevVolume(2) 를 불러봤는데 "ReferenceError:조회된 데이터가 없습니다. 종목객체의 일간데이터 사용여부를 확인하세요." 라고 뜹니다. 객체 생성할때 뭔가 해줘야하는것인지, 아니면 다른 해결방법이 있는지 문의드립니다.
프로필 이미지
ywesry
2015-12-01
140
글번호 92943
시스템