커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

안녕하세요

안녕하세요 선물수식 1, 양봉이며 양봉의 시가보다 0.3P 크면 매수 음봉이며 음봉의 시가보다 0.3P 작으면 매도 2, 양선 3개면 매수 음선 3개면 매도 감사합니다
프로필 이미지
금보
2023-08-09
1016
글번호 171342
시스템

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

프로필 이미지
lbh1119
2023-08-09
9
글번호 171341
시스템
답변완료

수식 작성 요청

안녕하세요 제공된 일목균형(ver.2) 수식을 사용함에 있어, 진입신호가 연속적(청산+진입)으로 이루어지니 포지션이 없을때 거래수량의 2배가 진입됩니다. (예) 동일수량 진입 : 1개 - case1. 포지션 없는경우 : 매수(매도)신호 발생시 2계약 진입됨 -> 추후 매도(매수)신호 발생시 2계약 청산 후 매도(매수)진입 안함 (비정상) - case2. 포지션(매수) 있는경우 : 매도신호 발생시 1계약 청산후 매도진입함 (정상) (요청사항) 포지션이 없는 경우, 설정된 수량만큼만 진입하게 하는 수식을 추가 할수 있을까요? 감사합니다.
프로필 이미지
minve
2023-08-08
934
글번호 171340
사용자 함수
답변완료

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
1011
글번호 171339
지표
답변완료

부탁드립니다

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