커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의

늘 감사드립니다. 두가지 부탁드려요. 둘 다 3% 또는 5% 근접시 알림소리 나게 부탁드립니다. 첫번째-보조챠트(옵션)의 특정일의 저가) input : 날짜(20201119); var : D2L(0,data2); if data2(sdate == 날짜) Then{ D2L = data2(LowD(0)); } plot1(D2L); 두번째-보조챠트(옵션)의 월고,월저,기준가 var : D2(0,data2),W2(0,data2),cond2(false,data2),I2(0,data2),H2(0,data2),L2(0,data2),P2(0,data2); D2 = data2(date - int(date/100)*100); W2 = data2(DayOfWeek(date)); if D2 >= 8 and D2 <= 14 and W2 == 4 then cond2 = true; Else cond2 = false; if data2(date != date[1]) Then{ if cond2 == false and cond2[1] == true Then{ I2 = 0; H2 = data2(H); L2 = data2(L); } Else I2 = I2+1; } if data2(H) > H2 Then H2 = data2(H); if data2(L) < L2 Then L2 = data2(L); if I2 == 0 Then P2 = data2(LowD(0)); plot1(P2); plot2(L2); plot3(H2);
프로필 이미지
육각수
2021-02-11
675
글번호 146289
지표
답변완료

지표(수식)질문

최근으로부터 2번째 최저점, 1번째 최저점을 비교 2번째 최저점 가격 > 1번째 최저점 가격 일때, 2번째 최저점 %K < 1번째 최저점 %K 를 만족할때 첫번째 최저점과 두번째 최저점을 구하는 함수는 뭐가 있을까요? 검색해보니 다이버전스에 스윙로우를 쓰시던데 스윙로우는 중간중간 L,R 조건만 충족시키면 떠서 거짓신호가 많더라구요. N개의 봉중에 생성된 최저점 기준으로 지금 봉이 최저점을 갱신할때 %K가 N개 봉중에 생성된 최저점 당시의 %K 값보다 클 때를 잡아낼 수 있을까요?
프로필 이미지
담박영정
2021-02-11
1085
글번호 146288
지표
답변완료

문의 드립니다.

20이평 위로 돌파 매수 진입/ 청산은 음봉 발생 시 매도 청산 완료 20이평 아래로 돌파 매도 진입/ 청산은 양봉 발생 시 매수 청산 완료 각각 분리해서 부탁드립니다.
프로필 이미지
선물대장
2021-02-11
837
글번호 146287
시스템

오이도인 님에 의해서 삭제되었습니다.

프로필 이미지
오이도인
2021-02-11
5
글번호 146286
지표
답변완료

재질문

month = int(date/100)-int(date/10000)*100; nday = date - int(date/100)*100; Week = DayOfWeek(date); if (month%3 == 0 and nday >= 8 and nday <= 14 and week == 4) then X = true; Else X = False; if Index == 0 or (X == False and X[1] == true) Then { HH = H; LL = L; } if H > HH Then HH = H; if L < LL Then LL = L; MM = (HH+LL)/2; Plot1(HH); Plot2(LL); Plot3(MM); 이전질문에서 월고저 작성해주신 식입니다.한달전 월물만 선이 그어집니다...2월 15일이되면 2월물로 새로운 고저 중간값이 그려지게 바꾸어주세요...감사합니다.
프로필 이미지
미우
2021-02-10
706
글번호 146285
지표
답변완료

타주기 그물망시스템 샘플조건식

항상 감사드립니다 조건식을 줄여서 샘플식으로로 만들었습니다 아래조건식을 타주기식에 적용코져합니다. #################### ###신거래선 기준 ### #################### var:var3(0),var960(0); if V == highest(V,3) Then var3 = (C+H+L)/3; #120거래선# if V == highest(V,960) Then var960 = (C+H+L)/3; #240거래선# ############# RMI 매매식 ############# input : MOM기간(5),적용기간(14),시그널기간(5); var : RMI(0),RMIsig(0); var: t70(0); RMI = iff((ma(iff(c<c[MOM기간],(c[MOM기간]-c),0),적용기간))<=0,100, (100-(100/(1+((ma(iff(c>c[MOM기간],(c-c[MOM기간]),0),적용기간))/(ma(iff(c<c[MOM기간],(c[MOM기간]-c),0),적용기간))))))); RMIsig = ma(RMI,시그널기간); if crossup(RMI,50) Then t70 = 100 ; if crossdown(RMI,50) Then t70 = 0; ############### ### 그물망 ### ############### input:period90(60),횡보율(0.001); var : var301(0),var302(0),var303(0),var304(0),var305(0); var : t60(0); var301=ema(c,period90); var302=ema(c,period90+1); var303=ema(c,period90+2); var304=ema(c,period90+3); var305=ema(c,period90+4); value1 = 0; value2 = 0; value3 = 0; if var301>var301[1]*(1+횡보율/100) then value1 = value1+1; else if var301<var301[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var302>var302[1]*(1+횡보율/100) then value1 = value1+1; else if var302<var302[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var303>var303[1]*(1+횡보율/100) then value1 = value1+1; else if var303<var303[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var304>var304[1]*(1+횡보율/100) then value1 = value1+1; else if var304<var304[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var305>var305[1]*(1+횡보율/100) then value1 = value1+1; else if var305<var305[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if value1 == 5 Then t60 = 1 ; else if value2 == 5 Then t60 = -1; Else if value3 == 5 Then t60 = 0; /*******************************/ var: t90(0); if t60 == 1 Then T90 = 1 ; if t60 == -1 Then T90 = -1 ; var3>var960 and t70==100 and t90==1이면 매수 var3<var960 and t70==0 and t90==-1이면 매도 감사합니다.
프로필 이미지
조민철
2021-02-10
793
글번호 146284
시스템
답변완료

문의 드립니다(수식작성 X)

안녕하세요 제품 관련 질문 드립니다. 되는지 안되는지만 알려주시면 감사하겠습니다. 1. A라는 조건으로 발생하는 A-1이라는 매수(또는 매도) 주문이 발생하고 체결돼었을떄, B라는 조건 만족시 으로 발생하는 B-1주문이 들어갔으면 좋겠습니다. B-1 이라는 주문은 평상시에는 조건 만족해도 발생하지 않고 A-1이라는 주문이 반드시 먼저 선행되어야 조건 만족하고 작동했으면 좋겠습니다 이를 위해서는, A-1이라는 주문이 조건식처럼 작동해야할 것 같은데요, 해당 기능구현이 예트에서 가능한건가요?
프로필 이미지
이만스닥
2021-02-10
822
글번호 146282
시스템
답변완료

그물망 타주기 조건식

항상 감사드립니다 아래조건식을 타주기식에 적용코져합니다. #################### ###신거래선 기준 ### #################### var:var3(0),var960(0); if V == highest(V,3) Then var3 = (C+H+L)/3; #120거래선# if V == highest(V,960) Then var960 = (C+H+L)/3; #240거래선# ############# RMI 매매식 ############# input : MOM기간(5),적용기간(14),시그널기간(5); var : RMI(0),RMIsig(0); var: t70(0); RMI = iff((ma(iff(c<c[MOM기간],(c[MOM기간]-c),0),적용기간))<=0,100, (100-(100/(1+((ma(iff(c>c[MOM기간],(c-c[MOM기간]),0),적용기간))/(ma(iff(c<c[MOM기간],(c[MOM기간]-c),0),적용기간))))))); RMIsig = ma(RMI,시그널기간); if crossup(RMI,50) Then t70 = 100 ; if crossdown(RMI,50) Then t70 = 0; ############################### ### 그물망 ### ################################ input:period90(60),횡보율(0.001); var : var301(0),var302(0),var303(0),var304(0),var305(0),var306(0),var307(0),var308(0),var309(0),var310(0); var : var311(0),var312(0),var313(0),var314(0),var315(0),var316(0),var317(0),var318(0),var319(0),var320(0),var321(0); var : t60(0); var301=ema(c,period90); var302=ema(c,period90+1); var303=ema(c,period90+2); var304=ema(c,period90+3); var305=ema(c,period90+4); var306=ema(c,period90+5); var307=ema(c,period90+6); var308=ema(c,period90+7); var309=ema(c,period90+8); var310=ema(c,period90+9); var311=ema(c,period90+10); var312=ema(c,period90+11); var313=ema(c,period90+12); var314=ema(c,period90+13); var315=ema(c,period90+14); var316=ema(c,period90+15); var317=ema(c,period90+16); var318=ema(c,period90+17); var319=ema(c,period90+18); var320=ema(c,period90+19); var321=ema(c,period90+20); value1 = 0; value2 = 0; value3 = 0; if var301>var301[1]*(1+횡보율/100) then value1 = value1+1; else if var301<var301[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var302>var302[1]*(1+횡보율/100) then value1 = value1+1; else if var302<var302[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var303>var303[1]*(1+횡보율/100) then value1 = value1+1; else if var303<var303[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var304>var304[1]*(1+횡보율/100) then value1 = value1+1; else if var304<var304[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var305>var305[1]*(1+횡보율/100) then value1 = value1+1; else if var305<var305[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var306>var306[1]*(1+횡보율/100) then value1 = value1+1; else if var306<var306[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var307>var307[1]*(1+횡보율/100) then value1 = value1+1; else if var307<var307[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var308>var308[1]*(1+횡보율/100) then value1 = value1+1; else if var308<var308[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var309>var309[1]*(1+횡보율/100) then value1 = value1+1; else if var309<var309[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var310>var310[1]*(1+횡보율/100) then value1 = value1+1; else if var310<var310[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var311>var311[1]*(1+횡보율/100) then value1 = value1+1; else if var311<var311[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var312>var312[1]*(1+횡보율/100) then value1 = value1+1; else if var312<var312[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var313>var313[1]*(1+횡보율/100) then value1 = value1+1; else if var313<var313[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var314>var314[1]*(1+횡보율/100) then value1 = value1+1; else if var314<var314[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var315>var315[1]*(1+횡보율/100) then value1 = value1+1; else if var315<var315[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var316>var316[1]*(1+횡보율/100) then value1 = value1+1; else if var316<var316[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var317>var317[1]*(1+횡보율/100) then value1 = value1+1; else if var317<var317[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var318>var318[1]*(1+횡보율/100) then value1 = value1+1; else if var318<var318[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var319>var319[1]*(1+횡보율/100) then value1 = value1+1; else if var319<var319[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var320>var320[1]*(1+횡보율/100) then value1 = value1+1; else if var320<var320[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if var321>var321[1]*(1+횡보율/100) then value1 = value1+1; else if var321<var321[1]*(1-횡보율/100) then value2 = value2+1; else value3 = value3+1; if value1 == 21 Then t60 = 1 ; else if value2 == 21 Then t60 = -1; Else if value3 == 21 Then t60 = 0; /*=======================*/ var: t90(0); if t60 == 1 Then T90 = 1 ; if t60 == -1 Then T90 = -1 ; var3>var960 and t70==100 and t90==1이면 매수 var3<var960 and t70==0 and t90==-1이면 매도 감사합니다.
프로필 이미지
조민철
2021-02-10
919
글번호 146276
시스템
답변완료

문의

아래 수식과 반대인 buy 수식을 작성해보았습니다. b3 진입이 발생하지 않는데 수식 검토바랍니다. input : 진입시간(090000),진입제한시간(151500); input : 거래횟수(20); input : b1(40),진입눌림1(10),진입돌파1(10); input : b2(40),진입눌림2(10),진입돌파2(10); input : b3(40),진입눌림3(10),진입돌파3(10); var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0); var : Tcond(false); Var : loss(0); if bdate != bdate[1] Then loss = 0; if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then loss = loss+1; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{ T1 = TotalTrades; E1 = 0; LL = L; } if stime >= 진입시간 then { if L < LL Then LL = L; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then { if E1 == 0 and C >= LL+PriceScale*B1 and C[1] < LL+PriceScale*B1 Then { E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then { if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림1 Then { E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then { E1 = 0; LL = L; } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파1 and Tcond == true Then { buy("b1"); } } if TotalTrades > TotalTrades[1] Then { E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry == 1 and entry < 거래횟수 Then { if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then { E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then { if H > H1 Then H1 = H; } #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림2 Then { E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then { E1 = 0; LL = L; } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파2 and Tcond == true Then { buy("b2"); } if MarketPosition == 0 and entry >= 2 and entry < 거래횟수 Then { if E1 == 0 and C >= LL+PriceScale*B3 and C[1] < LL+PriceScale*B3 Then { E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then { if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림3 Then { E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파3 and Tcond == true Then { buy("b3"); } } } ************************************************************************************** input : 진입시간(090000),진입제한시간(151500); input : 거래횟수(20); input : d1(40),진입눌림1(10),진입돌파1(10); input : d2(40),진입눌림2(10),진입돌파2(10); input : d3(40),진입눌림3(10),진입돌파3(10); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0); var : Tcond(false); if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{ T1 = TotalTrades; E1 = 0; HH = H; } if stime >= 진입시간 then { if H > HH Then HH = H; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then { if E1 == 0 and C <= HH-PriceScale*d1 and C[1] < HH-PriceScale*d1 Then { E1 = 1; L1 = L; i1 = index; V1 = HH; //시작점 종가 } if E1 == 1 and index > i1 then { if L < L1 Then L1 = L; #고가가 시작봉종가보다 작을 때만 눌림체크 if H <= V1 and H >= L1+PriceScale*진입눌림1 Then { E1 = 2; i1 = index; S1 = L1; } } //시작점 종가보다 높은 가격이 발생하면 초기화 if E1 >= 1 and H > V1 Then { E1 = 0; HH = H; } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파1 and Tcond == true Then { sell("d1"); } } if TotalTrades > TotalTrades[1] Then { E1 = 0; HH = H; } if H > HH Then HH = H; if MarketPosition == 0 and entry == 1 and entry < 거래횟수 Then { if E1 == 0 and C <= HH-PriceScale*d2 and C[1] < HH-PriceScale*d2 Then { E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then { if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림2 Then { E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파2 and Tcond == true Then { sell("d2"); E1 = 0; } } if MarketPosition == 0 and entry >= 2 and entry < 거래횟수 Then { if E1 == 0 and C <= HH-PriceScale*d3 and C[1] < HH-PriceScale*d3 Then { E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then { if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림3 Then { E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파3 and Tcond == true Then { sell("d3"); E1 = 0; } } }
프로필 이미지
좌오비우오비
2021-02-10
870
글번호 146273
시스템