커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식어 부탁드립니다

input : StartTime(100000),EndTime(055000),xtime(055500); var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0); var : Tcond(false); if sDate != sDate[1] then SetStopEndofday(xtime); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; SetStopEndofday(0); } INPUT : LENGTH(60); VAR : upv(0), dnv(0); upv = HIGHEST(HIGH, LENGTH); dnv = LOWEST(LOW, LENGTH); if MarketPosition <= 0 and L > dnv Then ExitShort("dsp",AtLimit,dnv); if MarketPosition >= 0 and H < upv Then Sell("s",AtLimit,upv); ------------------------------------------------------- 이동평균선 680선 위에서 Sell신호후 10틱이상 손실인경우 buy신호로 변경되는 주문의 수식어 부탁드립니다 이동평균선 680선 아래에서 buy신호후 10틱이상 손실인경우 Sell신호로 변경되는 주문의 수식어 부탁드립니다
프로필 이미지
푸른
2021-04-01
916
글번호 147575
시스템
답변완료

자동시스템 수정

항상 감사드립니다 1. 아래자동시스템 식을 귀사의 보조도구 자동추세선과 유사하게 구현하고 싶습니다 수정부탁드립니다 자동추세선 비교고저점기준 : 5 최근만 적용 자동간격: 단기(10) 2.매수매도 시스템식에서 아래조건을 추가하고 싶습니다 빨간추세선(red) > 파란추세선(blue) 일때 매수매도 신호발생 /**************************************************************************/ input : 비교고저점기준(10); var : cnt(0),BTL(0),STL(0); Array : HH[20](0),HD[20](0),HT[20](0); Array : LL[20](0),LD[20](0),LT[20](0); if SwingHigh(1,H,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then{ HH[0] = H[비교고저점기준]; HD[0] = sdate[비교고저점기준]; HT[0] = sTime[비교고저점기준]; Condition1 = false; for cnt = 1 to 19{ HH[cnt] = HH[cnt-1][1]; HD[cnt] = HD[cnt-1][1]; HT[cnt] = HT[cnt-1][1]; if Condition1 == false and HH[cnt] > HH[0] and HH[cnt] > 0 Then{ Condition1 = true; TL_Delete(BTL); BTL = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetExtRight(BTL,true); TL_SetColor(BTL,RED); } } } if SwingLow(1,L,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then{ LL[0] = L[비교고저점기준]; LD[0] = sdate[비교고저점기준]; LT[0] = sTime[비교고저점기준]; Condition2 = false; for cnt = 1 to 19{ LL[cnt] = LL[cnt-1][1]; LD[cnt] = LD[cnt-1][1]; LT[cnt] = LT[cnt-1][1]; if Condition2 == false and LL[cnt] < LL[0] and LL[cnt] > 0 Then{ Condition2 = true; TL_Delete(STL); STL = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetExtRight(STL,true); TL_SetColor(STL,blue); } } } if C > TL_GetValue(BTL,sdate,stime) and C[1] < TL_GetValue(BTL,sdate[1],stime[1]) Then{ buy("b"); } if C < TL_GetValue(STL,sdate,stime) and C[1] > TL_GetValue(STL,sdate[1],stime[1]) Then{ sell("s"); }
프로필 이미지
조민철
2021-04-01
1056
글번호 147574
시스템
답변완료

부탁드립니다

$,안녕하세요. 미국장 개장에서 종료시까지를 캔들하나로 표기해서 종목추가로 차트에 적용할수있는지 요,아님 다른방법이 있는지요, 도움부탁드립니다.
프로필 이미지
크라켄
2021-04-01
1103
글번호 147573
지표
답변완료

문의드립니다

안녕하세요 혹시 0봉전 기준 1봉이내, 1~1회 발생, 240봉 기간동안 신고가 갱신하고 0봉전 기준 20봉이내, 1~회 발생, 240봉 기간동안 신고가 갱신하고 0봉전 기준 30봉이내, 15~30회 발생, 거래량이 200,000주 이상인 종목을 검색할수 있는 식을 만들고 싶은데 가능한가요? 과거일자 기준으로 이 조건들을 만족하는 종목도 검색하고 싶은데 어떻게 해야하나요? 감사합니다ㅜㅜ
프로필 이미지
노아
2021-03-31
1218
글번호 147571
검색
답변완료

문의드립니다_추가질문

71721질문 안녕하세요. 2개의 코딩내용을 변환하고 싶습니다. 현재는 data1(일봉) data2(월봉) 이렇게 참조데이터를 사용합니다. 하지만 제가 원하는것은 data2 참조데이터를 사용하지 않고 똑같은 지표를 그리고 싶습니다. >>> 답변 잘 받았습니다. 추가 질문 드립니다. 71721번 연결 질문입니다. H(고가)를 1번질문 : H(고가) >> L(저가) 와 2번질문 : H(고가) >> (H+L)/2 평균값 2가지 코딩으로 알고싶습니다 1번 질문 VAR : VAR1(0), VAR2(0), VAR3(0) ; //랭귀지는 완성봉를 기준으로 값을 리턴합니다. //월봉차트에서 마지막봉은 미완성봉으로 사용이 가능하지 않습니다. //그러므로 data2(H)가 최근 완성봉인 전월의 값이고 data2(H[1])이 전전월의 값입니다. VAR1 = Data2(L); VAR2 = Data2(L[1]); VAR3 = Data2(L[2]); VAR4 = Data2(L[3]); VAR5 = Data2(L[4]); VAR6 = Data2(L[5]); VAR7 = Data2(L[6]); VAR8 = Data2(L[7]); VAR9 = Data2(L[8]); VAR10 = Data2(L[9]); VAR11 = Data2(L[10]); VAR12 = Data2(L[11]); VAR13 = VAR1 ; VAR14 = (VAR1+Var2+Var3)/3 ; VAR15 = (VAR1+Var2+Var3+Var4+Var5+Var6)/6 ; VAR16 = (VAR1+Var2+Var3+Var4+Var5+Var6+Var7+Var8+Var9+Var10+VAR11+VAR12)/12 ; value1 = 0; if c > var1 Then value1 = value1+1; //if c < var1 Then value1 = value1-1; if c > var2 Then value1 = value1+1; //if c < var2 Then value1 = value1-1; if c > var3 Then value1 = value1+1; //if c < var3 Then value1 = value1-1; if c > var4 Then value1 = value1+1; //if c < var4 Then value1 = value1-1; if c > var5 Then value1 = value1+1; //if c < var5 Then value1 = value1-1; if c > var6 Then value1 = value1+1; //if c < var6 Then value1 = value1-1; if c > var7 Then value1 = value1+1; //if c < var7 Then value1 = value1-1; if c > var8 Then value1 = value1+1; //if c < var8 Then value1 = value1-1; if c > var9 Then value1 = value1+1; //if c < var9 Then value1 = value1-1; if c > var10 Then value1 = value1+1; //if c < var10 Then value1 = value1-1; if c > var11 Then value1 = value1+1; //if c < var11 Then value1 = value1-1; if c > var12 Then value1 = value1+1; //if c < var12 Then value1 = value1-1; Plot1(var13); Plot2(var14); Plot3(var15); Plot4(var16); PLOT99(C); 2번 질문 VAR : VAR1(0), VAR2(0), VAR3(0) ; //랭귀지는 완성봉를 기준으로 값을 리턴합니다. //월봉차트에서 마지막봉은 미완성봉으로 사용이 가능하지 않습니다. //그러므로 data2(H)가 최근 완성봉인 전월의 값이고 data2(H[1])이 전전월의 값입니다. VAR1 = (Data2(H) + Data2(L))/2; VAR2 = (Data2(H[1]) + Data2(L[1]))/2; VAR3 = (Data2(H[2]) + Data2(L[2]))/2; VAR4 = (Data2(H[3]) + Data2(L[3]))/2; VAR5 = (Data2(H[4]) + Data2(L[4]))/2; VAR6 = (Data2(H[5]) + Data2(L[5]))/2; VAR7 = (Data2(H[6]) + Data2(L[6]))/2; VAR8 = (Data2(H[7]) + Data2(L[7]))/2; VAR9 = (Data2(H[8]) + Data2(L[8]))/2; VAR10 = (Data2(H[9]) + Data2(L[9]))/2; VAR11 = (Data2(H[10]) + Data2(L[10]))/2; VAR12 = (Data2(H[11]) + Data2(L[11]))/2; VAR13 = VAR1 ; VAR14 = (VAR1+Var2+Var3)/3 ; VAR15 = (VAR1+Var2+Var3+Var4+Var5+Var6)/6 ; VAR16 = (VAR1+Var2+Var3+Var4+Var5+Var6+Var7+Var8+Var9+Var10+VAR11+VAR12)/12 ; value1 = 0; if c > var1 Then value1 = value1+1; //if c < var1 Then value1 = value1-1; if c > var2 Then value1 = value1+1; //if c < var2 Then value1 = value1-1; if c > var3 Then value1 = value1+1; //if c < var3 Then value1 = value1-1; if c > var4 Then value1 = value1+1; //if c < var4 Then value1 = value1-1; if c > var5 Then value1 = value1+1; //if c < var5 Then value1 = value1-1; if c > var6 Then value1 = value1+1; //if c < var6 Then value1 = value1-1; if c > var7 Then value1 = value1+1; //if c < var7 Then value1 = value1-1; if c > var8 Then value1 = value1+1; //if c < var8 Then value1 = value1-1; if c > var9 Then value1 = value1+1; //if c < var9 Then value1 = value1-1; if c > var10 Then value1 = value1+1; //if c < var10 Then value1 = value1-1; if c > var11 Then value1 = value1+1; //if c < var11 Then value1 = value1-1; if c > var12 Then value1 = value1+1; //if c < var12 Then value1 = value1-1; Plot1(var13); Plot2(var14); Plot3(var15); Plot4(var16); PLOT99(C);
프로필 이미지
9회말2아웃
2021-03-31
1084
글번호 147570
지표
답변완료

약간 애매한 질문입니다.

분봉상에서 최근 n분 동안 그 이전의 m분 동안에 비해 갑자기 주가가 급등하거나 급락하는 경우를 좀 잡아내고 싶은데, 혹시 쓸 수 있는 방법이나 지표가 있을까요? 요번엔 질문 자체가 정확하지가 않아서 구체적인 수식으로 답을 주시기는 어려울거 같긴한데, 대략의 아이디어라도 주시면 감사하겠습니다.
프로필 이미지
중박주식
2021-03-31
1093
글번호 147569
시스템
답변완료

연속 매수 확인 좀 부탁 드립니다.

* 항상 많은 도움에 감사 드립니다. * 요청사항 - 그림 에서 A~C 까지 3포인트 하락 마다 추가 매수가 잘되는데 D와 E가 매수가 안되야 하는데 매수가 됨니다. - D와 E가 매수 안되게 수정 좀 요청 드립니다. * 추가로 "하루 수익이 20틱 이상 이면 매매정지" 로직 좀 추가 부탁 드립니다. <사진 참고> ## 수식 var1 = ma(c,5) ; var2 = ma(c,20) ; if MarketPosition == 0 and crossup(var1,var2) then buy("SS1",OnClose,DEF,1); if MarketPosition == 0 and CrossDown(var1,var2) then Sell("DD1",OnClose,DEF,1); if MarketPosition == 1 Then { if MaxEntries == 1 Then Buy("SS2",AtLimit,EntryPrice-3,1); if MaxEntries == 2 Then Buy("SS3",AtLimit,LatestEntryPrice(0)-3,1); if MaxEntries == 3 Then Buy("SS4",AtLimit,LatestEntryPrice(0)-3,1); if MaxEntries == 4 Then Buy("SS5",AtLimit,LatestEntryPrice(0)-3,1); ExitLong("SST",AtLimit,AvgEntryPrice+10); } if MarketPosition == -1 Then { if MaxEntries == 1 Then Sell("DD2",AtLimit,EntryPrice+3,1); if MaxEntries == 2 Then Sell("DD3",AtLimit,LatestEntryPrice(0)+3,1); if MaxEntries == 3 Then Sell("DD4",AtLimit,LatestEntryPrice(0)+3,1); if MaxEntries == 4 Then Sell("DD5",AtLimit,LatestEntryPrice(0)+3,1); ExitShort("DDT",AtLimit,AvgEntryPrice-10); } * 항상 많은 도움 고맙습니다.
프로필 이미지
요타
2021-03-31
1299
글번호 147568
시스템
답변완료

문의 드립니다.

늘 감사합니다. 아래 수식에 청산식 추가 부탁드립니다. 진입 후 종가가 이전 30개봉 중 최저가 보다 내려가면 청산 input : P1(5),P2(20),금액(300000); var : mav1(0),mav2(0),count(0),entry(0); mav1 = ma(c,5); mav2 = ma(C,20); if Bdate != Bdate[1] Then { count = 0; entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if CrossUp(mav1,mav2) Then count = count+1; if entry < 1 and count >= 2 and CrossUp(c,mav2) Then Buy("b",OnClose,DEf,Floor(금액/c));
프로필 이미지
하늘북
2021-03-31
1245
글번호 147567
시스템

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

프로필 이미지
요타
2021-03-31
2
글번호 147566
시스템