커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

if 조건문 여러개를 for문으로 줄일 수 있나요?

아래와 같은 코드를 짰는데요. input : ntime(210000), line_num(5), size_tick(8); var : Tcond(False), oo(0), k(0); array : up_line[20](0), dn_line[20](0), uptext[20](0), dntext[20](0); array : up_touch[20](0), dn_touch[20](0), up_T[20](0), dn_T[20](0), up_TL[50](0), dn_TL[50](0); if Bdate != Bdate[1] Then Tcond = False; if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { oo = o; For k = 1 to line_num { up_T[k] = 0; dn_T[k] = 0; up_line[k] = oo + PriceScale*size_tick*k; dn_line[k] = oo - PriceScale*size_tick*k; up_touch[k] = 0; dn_touch[k] = 0; up_TL[k] = TL_New(sDate,sTime,up_line[k],NextBarSdate,NextBarStime,up_line[k]); // 선긋기 dn_TL[k] = TL_New(sDate,sTime,dn_line[k],NextBarSdate,NextBarStime,dn_line[k]); // 선긋기 } if H >= up_line[1] Then { up_T[1] = 1; up_touch[1] = up_touch[1] + 1; } if H >= up_line[2] Then { up_T[2] = 2; up_touch[2] = up_touch[2] + 1; } if H >= up_line[3] Then { up_T[3] = 3; up_touch[3] = up_touch[3] + 1; } if H >= up_line[4] Then { up_T[4] = 4; up_touch[4] = up_touch[4] + 1; } For k = 1 to line_num { uptext[k] = Text_New(NextBarSdate,NextBarStime,up_line[k],NumToStr(up_touch[k],0)); dntext[k] = Text_New(NextBarSdate,NextBarStime,dn_line[k],NumToStr(dn_touch[k],0)); } } ------------------------------------------------------------------ 이 코드를 실행하면 첨부파일1의 이미지와 같이 숫자가 표시 되는데요. 이것을 아래와 같이 if문들이 반복되어 for 문으로 바꿔봤는데요. 실행 결과가 다르게 나오는데요. 어디가 잘못됐는지 잘 모르겠습니다.. 도움 부탁드립니다. input : ntime(210900), line_num(4), size_tick(8); var : Tcond(False), oo(0), k(0); array : up_line[20](0), dn_line[20](0), uptext[20](0), dntext[20](0); array : up_touch[20](0), dn_touch[20](0), up_T[20](0), dn_T[20](0), up_TL[50](0), dn_TL[50](0); if Bdate != Bdate[1] Then Tcond = False; if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { oo = o; For k = 1 to line_num { up_T[k] = 0; dn_T[k] = 0; up_line[k] = oo + PriceScale*size_tick*k; dn_line[k] = oo - PriceScale*size_tick*k; up_touch[k] = 0; dn_touch[k] = 0; up_TL[k] = TL_New(sDate,sTime,up_line[k],NextBarSdate,NextBarStime,up_line[k]); // 선긋기 dn_TL[k] = TL_New(sDate,sTime,dn_line[k],NextBarSdate,NextBarStime,dn_line[k]); // 선긋기 } For k = 1 to line_num { if H >= up_line[k] Then //CrossUp(h,uptt[1]) //H >= uptt[1] { up_T[k] = k; up_touch[k] = up_touch[k] + 1; } } For k = 1 to line_num { uptext[k] = Text_New(NextBarSdate,NextBarStime,up_line[k],NumToStr(up_touch[k],0)); dntext[k] = Text_New(NextBarSdate,NextBarStime,dn_line[k],NumToStr(dn_touch[k],0)); } }
프로필 이미지
예스쟁이
2023-08-08
937
글번호 171339
지표
답변완료

부탁드립니다

1. 기본차트 콜의 당일 시가와 보조차트 풋의 당일 시가 중간값을 지표 선으로 구하고자 요청 합니다. 왠지 전에 만들어 주신 자료로는 중간값이 아닌 2개 시가의 상단에 표시되고 있어서 다시 한번 부탁드립니다. 2. 당일 풋이 콜보다 고가에서 장이 시작된 후 풋의 최저가가 콜의 최고가와 16틱이내로 접어들면 그때부터 기본차트에 파란색으로 구현해 주세요 3. 당일 풋이 콜보다 저가에서 장이 시작된 후 풋의 최고가가 콜의 최저가와 8틱 이내로 접어 들면 그때부터 기본차트에 빨강색으로 구현해 주세요 4. 보조 풋이 1.8 이상이면 기본 콜차트에 빨강색으로, 그 이하이면 파란색으로 구현해 주세요 5. 당일 콜이든 풋이든 최고가봉 최저가봉이 서로 겹칠 때마다 기본차트 해당봉에 빨강색으로 구현해 주세요 6. 당일 풋의 현재가가 콜의 최고가보다 더 높은 가격에 올라 있다가 콜의 최고가보다 낮아지면 빨강색으로, 당일 풋의 현재가가 콜의 최저가보다 더 높은 가격에 있다가 콜의 최저가보다 더 낮아지면 파란색으로 구현해 주세요 고맙습니다.
프로필 이미지
서태공
2023-08-09
938
글번호 171338
지표

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2023-08-08
64
글번호 171337
지표
답변완료

이 수식을 키움 수식으로도 변경해주실수 있나요?

// 항셍 방향타 매매 var : i(0), j(0); // 임시변수 var : intMx(22035), intDt(100); // var : intOneTick(1); array : int35L[200](0); // 35선을 저장하는 배열 array : intUp[10](0), intDown[10](0.0); for i = 0 to 180 { int35L[i] = intMx - i * intDt; } For j = 0 to 180 { // 상승방향타 Condition10 = (L == int35L[j]); condition12 = (O - C) < 0; // 양봉 condition13 = (O - L) >= 2 * intOnetick; condition14 = (O - C) >= 0; // 음봉 condition15 = (C - L) >= 2 * intOnetick; // 하락방향타 Condition20 = (H == int35L[j]); condition22 = (O - C) < 0; // 양봉 condition23 = (H - C) >= 2 * intOnetick; condition24 = (O - C) >= 0; // 음봉 condition25 = (H - O) >= 2 * intOnetick; // MessageLog("j: %.0f int8535L[%.0f]: %.2f ",j,j, int8535L[j]); if condition10 Then { if (condition12 and condition13) or (condition14 and condition15) Then { Plot1(int35L[j], "Down-rudder",Magenta,1,2); } } if condition20 Then { if (condition22 and condition23) or (condition24 and Condition25) Then { Plot3(int35L[j], "Up-rudder",Blue,1,2); } } }
프로필 이미지
쫑혀니
2023-08-08
939
글번호 171336
검색
답변완료

macd oscillator 사용자함수 부탁드립니다.

안녕하세요.. MACD Oscillator (12,26,9)의 경우 12가격이동평균, 26가격이동평균, (12가격이평-26가격이평)의 9이동평균을 의미하는데요.. 가격 이평 이대신에 선물 전체 호가 매수/매도주문수량의 이동평균값으로 지표를 만들고 싶어요... 즉.... 12가격이동평균 자리는 선물전체호가매수주문수량의 12단순이동평균 으로 26가격이동평균 자리는 선물전체호가매도주문수량의 12단순이동평균 으로 (12가격이평-26가격이평)의 9이동평균자리는 (선물전체호가매수주문수량 12단순이동평균 -선물전체호가매도주문수량 12단순이동평균)의 9단순이동평균값 으로 대체하여 MACD OSCillator 지표를 작성할려고 하는데 어떡하면 될까요? 부탁드립니다.. 감사합니다.
프로필 이미지
랑랑
2023-08-08
765
글번호 171335
지표
답변완료

두 코드의 차이점을 알고 싶습니다.

항상 궁금증에 도움을 주셔서 감사드립니다. 얼마전에 질문을 올린적이 있는데 그에 대한 답변으로 아래와 같은 코드를 주셨는데요. input : ntime(200000); var : Tcond(False),k(0),oo(0),tt(0); Array : TL[50](0); if Bdate != Bdate[1] Then Tcond = False; if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { Tcond = true; oo = o; tt = PriceScale*10; For k = 1 to 10 { TL[k] = TL_New(sDate,sTime,oo+tt*k,NextBarSdate,NextBarStime,oo+tt*k); } } Else { if Tcond == true Then { For k = 1 to 10 { TL_SetEnd(TL[k],NextBarSdate,NextBarStime,oo+tt*k); } } } 위의 코드를 실행하면 첨부파일1과 같은 선이 그어지는데요. 아래와 같이 else만 빼고 입력해도 첨부파일2와 같이 선이 그어지는 모습은 같은데요. input : ntime(200000); var : Tcond(False),k(0),oo(0),tt(0); Array : TL[50](0); if Bdate != Bdate[1] Then Tcond = False; if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { Tcond = true; oo = o; tt = PriceScale*10; For k = 1 to 10 { TL[k] = TL_New(sDate,sTime,oo+tt*k,NextBarSdate,NextBarStime,oo+tt*k); } } if Tcond == true Then { For k = 1 to 10 { TL_SetEnd(TL[k],NextBarSdate,NextBarStime,oo+tt*k); } } else가 있고, 없고 차트에 그려지는 선은 같아보이는데요. else가 있으므로 그려지는 선이 다른 것인지 아니면 내부적으로 연산을 덜하게 되는 것인지... 어떤 차이가 있는지 궁금합니다. 설명 부탁드려요.
프로필 이미지
예스쟁이
2023-08-08
1018
글번호 171334
지표
답변완료

부탁 드립니다.

1봉전 고가 보다 0봉전 저가가 더 높아야 됨.=== 갭이 떴다는 이야기 입니다. (0봉전 아래꼬리(저가)가 1봉전 고가 보다 높은 조건 으로 ....(a 조건) 이 후, 상승이 이여지다가, 조정을 줄때, a 조건에 갭이 만들어진 양봉에 시가 부근에 3% 부근에 왔을 때,또는 왔다가 상승 한 종목을 검색이 될 수 있도록 부탁 드립니다.
프로필 이미지
hg950265
2023-08-08
1312
글번호 171333
검색

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2023-08-08
23
글번호 171328
지표

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2023-08-08
30
글번호 171321
시스템