커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의 드립니다.

국내 선물에서 호가잔량 이평 오실레이터에서 0선을 기준으로 0선 아래서 위로 돌파하는 경우와 0선 위에서 하락 진행하다 상승전환 할 때 매수 진입 청산은 하락 전환 할 때 매도 청산완료 0선 위에서 아래로 돌파하는 경우와 0선 아래에서 상승 진행하다 하락전환 할 때 매도 진입 청산은 상승 전환 할 때 매수 청산완료 부탁드립니다.
프로필 이미지
선물대장
2023-08-09
933
글번호 171352
시스템
답변완료

문의 드립니다

input:p1(48),Rsi변동폭(20); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); RsiV =RSI(P1); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } If Rsi파동선[1] != Rsi파동선 Then{ if 방향 == 하락 and Rsi파동선 >= 65 then sell(); if 방향 == 상승 and Rsi파동선 <= 35 then buy(); } ----- 위 수식어를 해외선물에 자동주문설정으로 테스트 하고 있습니다. 전입과 청산 될시 그 다음날의 수량은 있어야 하는데 그렇지 않은 경우는 수식어에서 변경하는 방법이 있는지 궁금합니다. 미리 감사드립니다.
프로필 이미지
푸른
2023-08-09
1511
글번호 171349
시스템
답변완료

안녕하세요

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

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

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

수식 작성 요청

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

부탁드립니다

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