커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

항상 감사드립니다 조건식을 줄여서 샘플식으로로 만들었습니다 아래조건식을 타주기식에 적용코져합니다. #################### ###신거래선 기준 ### #################### 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
784
글번호 146284
시스템
답변완료

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

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

문의

아래 수식에서 손절과 트레일링스탑은 일괄 적용되고 있으며, 손절과 트레일링스탑이 길지 않을 경우 하루에 4번 이상도 거래합니다. 별첨파일 참조 ***요청사항 진입순서대로 손절과 트레일링 스탑을 지정하는 수식을 요청드립니다. 첫번째부터 두번째까지 예를 들어주세요. ex) 첫번째 진입 경우 { exitshort 손절 exitshort 트레일링스탑 { 두번째 진입 경우 { exitshort 손절 exitshort 트레일링스탑 { ************************************************************************************ input : N(20),dn(0.50); input : 손절(1.10),트레일링(1.30); var : C2(0,data1),T1(0,data1),entry(0,data1); C2 = data2(C); if data1(Bdate != Bdate[1]) Then{ T1 = TotalTrades; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; if entry < N and data2(Bdate == Bdate[1] and Lowd(0) < LowD(0)[1] and HighD(0)-LowD(0) >= dn) Then sell(); SetStopLoss(손절, PointStop); SetStopTrailing(트레일링,0,PointStop);
프로필 이미지
목마와숙녀
2021-02-10
914
글번호 146263
시스템
답변완료

어제의 고가에서

안녕하세요..항상 감사합니다. 5분봉차트에서 하루전 최고가 봉의..종가를 수식으로 알수 있을까요 ?
프로필 이미지
디딤돌
2021-02-10
674
글번호 146261
종목검색

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2021-02-10
82
글번호 146260
지표
답변완료

문의드립니다..

최근 100봉 이내에서 가장 큰 거래량이 실린 봉의 종가를 현재가가 돌파시를 검색가능하게끔 수식이 가능할까요?
프로필 이미지
울랄라쑝쑝
2021-02-10
626
글번호 146259
검색
답변완료

누적 수식에서 특정값 제외

var1 = Accum(1); If bDate!=bDate[1] Then { var2 = var1[1]; } var3 = var1-var2; 이렇게 수식을 만들면 (DayIndex+1) 이랑 같은 결과가 나오는데요 여기서 제가 특정 봉을 제외하면서 누적할 수도 있는 건가요? 예를 들면 장시작부터 장마감까지 총 100개의 봉이 생성된다고 가정했을 때 위에 있는 수식을 적용하면 1부터 100까지 차례대로 결과가 나오겠죠 근데 만약 Close < Open 인 상황, 즉 음봉이 떴을 때는 값을 제외하고 누적할 수도 있는건가요? 마감까지 총 5번의 음봉이 뜬 걸로 가정하면 총 95번까지의 번호가 누적되는 거고 제외되는 봉의 숫자는 앞봉의 숫자값을 그대로 가져오는 수식이 가능한지 궁금합니다
프로필 이미지
아래위
2021-02-10
706
글번호 146250
지표