커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

종목검색 부탁드립니다.

안녕하세요. 비슷한 수식 두개 변환 부탁드립니다. 1. T = Ttsf(C,T기간); LL=Lowest(L(1),기간); HH=Highest(H(1),기간); NH=valuewhen(1,H>HH(1),H); 고상 = Valuewhen(1,barsSince(H>HH(1))==(기간 - k), NH); 저상 = Valuewhen(1,BarsSince(L<LL(1))==(기간 - K),HH); 조건 = 고상==저상; 동일점 = Valuewhen(1, 조건, 저상); CrossUp(T, 동일점) T기간 50 기간 5 k 3 2. M112 = eavg(C,112); M224 = eavg(C,224); M448 = eavg(C,448); LL=Lowest(L(1),기간); HH=Highest(H(1),기간); NH=valuewhen(1,H>HH(1),H); 고상 = Valuewhen(1,barsSince(H>HH(1))==(기간 - k), NH); 저상 = Valuewhen(1,BarsSince(L<LL(1))==(기간 - K),HH); 조건 = 고상==저상; 동일점 = Valuewhen(1, 조건, 저상); (동일점 >O && 동일점 < C && M112 > O && M112 < C) or (동일점 >O && 동일점 < C && M224 > O && M224 < C) 기간 5 k 3 항상 감사드립니다. 번거롭더라도 부탁드립니다. ^^
프로필 이미지
손느린주식
2023-09-13
1387
글번호 172407
검색
답변완료

진입한 수량에서 첫번째 목표가 일부청산 후 두번째 목표가에서 나머지 청산하는 수식

항상 도움에 감사드립니다. 첨부한 이미지처럼 상단, 하단선을 왔다갔다 터치하는 횟수를 세다가 왔다갔다 5번 이상 되면 진입하는 수식을 아래와 같이 작성했는데요 5번 터치 후 상단을 돌파하면 매수 진입(손절은 하단위치) 5번 터치 후 하단을 이탈하면 매도 진입이고요(손절은 상단위치) 손절시 마다 재진입시 누적손실 반영해서 진입 수량을 늘려가는 방식입니다 -------------------------------------------------------- input : ntime(100000), xtime(230000); input : tick_size(10); input : line_num(5); //줄을 몇개 그을 것인지 input : num(8); // 몇번 터치하면 진입하는지. var : Tcond(False), oo(0), k(0), PriceScale_tick_size(0); var : 상단(0),하단(0),n1(0),daypl(0),vol(0),xcond(False); // 추가된 변수들 var : T(0); if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { T = 0; n1 = NetProfit; xcond = False; } if TotalTrades > TotalTrades[1] and (IsExitName("Bp",1) or IsExitName("sp",1)) Then xcond = true; if Tcond == true and xcond == False Then { if T == 0 Then { For k = 1 to line_num { if u_u_cnt[k] >= num or u_cnt[k] >= 5 Then { T = k; 상단 = u_u_line[k]; 하단 = u_line[k]; } if b_b_cnt[k] >= num or b_cnt[k] >= 5 Then { T = k; 상단 = b_line[k]; 하단 = b_b_line[k]; } } } if T != 0 Then { dayPL = (NetProfit-n1)+PositionProfit(0); if daypl >= 0 Then vol = 1; Else vol = max(Ceiling(abs(daypl)/((상단-하단)*4)),1); if MarketPosition <= 0 and CrossUp(C,상단) Then Buy("b1",AtMarket,Def,vol); if MarketPosition >= 0 and CrossDown(C,하단) Then Sell("s1",AtMarket,Def,vol); if MarketPosition == 1 Then { ExitLong("Bp",AtLimit,상단+(상단-하단)*4); } if MarketPosition == -1 Then ExitShort("sp",AtLimit,하단-(상단-하단)*4); } } ------------------------------------------------------------------- 위는 목표가격에 한번 도달하면 거래가 종료 되는데요 아래와 같이 보완, 수정하고 싶습니다. 1. 목표가격 청산을 두번으로 나눠서 2. 첫번째 목표가는 (상단-하단)x4 위치이고, 청산수량은 현재 보유한 수량의 1/2 입니다 3. 두번째 목표가는 (상단-하단)x10 위치이고, 남은 물량 전체 청산하고 거래종료. 4. 만약 첫번째 목표가에서 일부 청산 후 5. 두번째 목표가까지 도달하기 전에 6. 상단이나 하단 가격으로 가격이 되돌아간다면 7. 누적손실 반영해서 수량 늘려 재진입하는 방식 그대로 다시 재진입하고 8. 다시 첫번째 목표가 오면 1/2 청산, 9. 두번째 목표가가 오면 전량 청산하고 거래종료. 위의 과정대로 거래하는 수식을 작성하고 싶습니다 도움 부탁드립니다
프로필 이미지
예스쟁이
2023-09-12
918
글번호 172406
시스템
답변완료

문의합니다.

항상 빠른 대응 감사합니다. 아래 수식을 시스템식으로 가능하면 부탁합니다. A=OBV(); B=eavg(OBV(),9); A1=sum(V*((Pow((C-L),2)-Pow((H-C),2)) /(H-L))); A2=ADX(11); A3=100*eavg(C,10)/eavg(C(20),10); A4=100*eavg(eavg(c,10)/eavg(c(20),10),9);
프로필 이미지
배움이
2023-09-12
1050
글번호 172405
시스템
답변완료

문의드립니다.

안녕하세요 B=bbandsup(20,2,25); Crossup(c,b) 종목검색식으로 변경 부탁 드리겠습니다.
프로필 이미지
사령검사
2023-09-12
1204
글번호 172404
검색

레전드 님에 의해서 삭제되었습니다.

프로필 이미지
레전드
2023-09-12
0
글번호 172403
지표

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

프로필 이미지
찬돌
2023-09-12
1
글번호 172398
검색
답변완료

수식 수정부탁드립니다

#RSI과매수도비율선 input : 기간(14),과매도율(25),과매수율(75),표시가격((O+C)/2); var : A(0),BD(False),FU(False),FD(False),FFU(0),FFD(0); input : 표시가격1(C*2/3),표시가격2(O*2/3); var : BBUc(0),FFDc(0); A=RSI(기간); BD=CrossDown(A,과매도율); FU=CrossUp(A,과매수율); if BD == true Then BBD = 표시가격; if FU == true Then FFU = 표시가격; if BD == true Then BBDc = iff(C>=O,표시가격1,표시가격2); if FU == true Then FUDc = iff(C<O,표시가격2,표시가격1); Plot1(BBD, "RSI과매도D선"); Plot2(FFU, "RSI과매수U선"); Plot3(BBDc, "RSI과매도U선표시"); Plot4(FUDc, "RSI과매도U선표시"); 수식문의> iff(C>=O,표시가격1,표시가격2); RSI의 돌파나 이탈시에 표시되는 가격의 문제에 있어서 양봉이면 중심가격으로, 음봉이면 시가의 2/3에 표시하고자 하는 것인데 위 의 방식으로 하니 제대로 안되네요 올바르게 수정 부탁드립니다. 추가적으로 요청드리는 수식은 마지막봉(현재봉)에 표시되는 각 라인들이 동일한 값으로 우측(미래)에 추가적으로 1봉~3봉정도 동일하게 라인표시되게 할 수 있나요.
프로필 이미지
해피오
2023-09-13
1024
글번호 172397
지표
답변완료

문의드립니다

수고 많으십니다 이번에 문의드릴 내용은 하이킨아시 캔들에 대한 문의입니다 하이킨아시 캔들이 아랫꼬리없는 양봉이 나오면 매도청산 매수진입 음봉 양봉 상관없이 꼬리가 위 아래 같이 붙은 캔들이 2개봉 연속으로 나오면 모두 청산 하이킨아시 캔들이 윗 꼬리없는 음봉이 나오면 매수청산 매도진입 음봉 양봉 상관없이 꼬리가 위 아래 같이 붙은 캔들이 2개봉 연속으로 나오면 모두 청산 익절 40틱 손절 40틱 이런 시스템을 부탁드리겠습니다 감사합니다
프로필 이미지
cjfdk
2023-09-12
1069
글번호 172396
시스템
답변완료

부탁드립니다

안녕하세요 예스스탁입니다. 피라미딩을 모든진입신호허용으로 설정하고 적용하시면 됩니다. Input : Period1(12),Period2(14); var : cnt(0),S1(0),D1(0),TM(0),TF1(0),idx(0); Var : DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),PreUpAvg1(0), preDownAvg1(0),RSI1(0); Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),PreUpAvg2(0), preDownAvg2(0),RSI2(0); Array : C1[100](0); if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then { for cnt = 99 downto 1 { C1[cnt] = C1[cnt-1]; } PreUpAvg1 = UpAvg1[1]; preDownAvg1 = DownAvg1[1]; PreUpAvg2 = UpAvg2[1]; preDownAvg2 = DownAvg2[1]; idx = idx + 1; } C1[0] = C; If idx == Period1+2 Then { UpSum1 = 0; DownSum1 = 0; For cnt = 0 To Period1 - 1 { UpAmt1 = C1[cnt] - C1[cnt+1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpSum1 = UpSum1 + UpAmt1; DownSum1 = DownSum1 + DownAmt1; } UpAvg1 = UpSum1 / Period1; DownAvg1 = DownSum1 / Period1; } If idx > Period1+2 Then { UpAmt1 = C1[0] - C1[1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpAvg1 = (PreUpAvg1 * (Period1 - 1) + UpAmt1) / Period1; DownAvg1 = (preDownAvg1 * (Period1 - 1) + DownAmt1) / Period1; } If UpAvg1 + DownAvg1 <> 0 Then RSI1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1); Else RSI1 = 0; If idx == Period2+2 Then { UpSum2 = 0; DownSum2 = 0; For cnt = 0 To Period2 - 1 { UpAmt2 = C1[cnt] - C1[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else { DownAmt2 = -UpAmt2; UpAmt2 = 0; } UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; } UpAvg2 = UpSum2 / Period2; DownAvg2 = DownSum2 / Period2; } If idx > Period1+2 Then { UpAmt2 = C1[0] - C1[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else { DownAmt2 = -UpAmt2; UpAmt2 = 0; } UpAvg2 = (PreUpAvg2 * (Period2 - 1) + UpAmt2) / Period2; DownAvg2 = (preDownAvg2 * (Period2 - 1) + DownAmt2) / Period2; } If UpAvg2 + DownAvg2 <> 0 Then RSI2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSI2 = 0; if RSI1 >= 30 and RSI1 <= 70 and RSI2 <= 30 Then Buy("b"); if MarketPosition == 1 Then { if RSI2 >= 70 Then ExitLong(); } 즐거운 하루되세요 > 왕밥빵 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 일봉상에 사용할건데 주봉 rsi 기간 12 값 30~70, rsi 기간 14 값 30 이하 금일 종가에 매수 추가매수때는 30이하 반복시 하루한번 종가 추가매수, rsi 기간 14 값 70 이상시 매도 제가 질문을 잘못했네요 일봉상 사용하는데 주봉 rsi 기간 12 값 30~70, 일봉rsi 기간 14 값 30이하 금일 종가에 매수, 추가매수때는 일봉상 rsi가 30이하 반복시 종가 추가매수, 일봉 rsi 기간 14 값 70 이상시 매도입니다
프로필 이미지
왕밥빵
2023-09-12
1211
글번호 172395
시스템