커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의 드립니다

제목 : 0.9pt 이익후 하락하여 -0.5pt 손해로로 내려오면 즉시청산 1. 진입하여 0.9pt 이상의 이익(고가기준)이 발생하였다가 다시 이익이 줄어들 경우 이익이 -0.5pt 손해(현재가)가 되면 즉시청산(봉 완성 기다리지 않고) 하는 수식 부탁드립니다. 2. ★-그러나 이게 제일 중요합니다 당일에 고가 대비 1포인트 아래이면서 수익은 나고 있다면 즉 당일고가대비 1포인트 아래에서 이러한 현상이 벌어진다면 청산은 필요 없이종가까지 가지고 갑니다.. ▶..수익이면 최대한 수익을 챙기자 그런식 부탁 드립니다 그리고 주석좀 부탁드립니다
프로필 이미지
bbcc
2013-11-21
237
글번호 69726
시스템
답변완료

질문 드립니다.

안녕하세요. 항상 친절하신 답변 감사드립니다. 예스랭귀지로 만드는 시스템에서 애로사항을 느끼는 점으로, buy나 sell 등의 매매함수가 작동이 됐을 때 (즉 주문이 나갔을 때), 실제로 주문이 체결되었는지 안되었는지에 관계 없이 marketposition 수가 1이냐 -1이냐 등이 정해 져서 실제로는 잔고가 없는데 청산함수 exitlong 등이 나갈 수 있는 문제점을 보게 됩니다. (매수주문만 나가고 체결은 안 된 상태에서, 매수청산주문이 나가서 체결되는 바람에 원치 않았던 숏포지션이 생겨 버린다든지...) (매수1계약-청산, 매수1계약-청산 이런 과정을 원하는데, 주문발주로만 이렇게 되고 실제로는 매수1-매수1-매수1... 이렇게 돼서 매수계약수가 쌓여 버린다든지... 마찬가지로 매도계약만 쌓여 버린다든지) 이런 문제를 예스랭귀지상에서 조금이라도 감소시킬 수 있는 방법이, 예스랭귀지의 '잔고함수들'을 써서 가능하지 않을까 싶은데, 잔고함수들을 적절히 사용해서, 1. 진입주문이 체결되지 않았을 때에는 청산주문이 나가지 않고 실제로 진입주문이 체결됐을 때에만, 즉 잔고가 생겨났을 때에만 청산주문이 나가게 되고, 그 청산주문이 체결돼서 잔고가 없어 졌을 때에만 다음의 새로운 진입주문이 나가게 되는, 그런 소스의 예제를 보여 주시면 대단히 감사하겠습니다. ////////// ////////// ////////// ////////// ////////// ////////// ////////// 2. 위에서 말한 측면들과 관련하여, 예스랭귀지의 잔고함수들 중에서, GetNumAccounts, GetNumPositions, GetPositionQuantity 등의 함수를 적절히 활용하면, 스팟에서의 여러 객체들의 기능을 활용하여 주문이 체결되었는지 아닌지를 구분하여 대응할 수 있는 것과 매우 유사한 소스를 작성할 수 있을 것 같은데, 이와 관련된 예제를 보여 주시면 대단히 감사하겠습니다. (예: 2-1. 스팟에서 미체결 상태를 확인해서 그 경우에 미체결 주문을 취소나 정정할 수 있는 것과 유사하게, 예스랭귀지의 경우 주문 취소기능은 없지만, 청산 주문은 나가지 않을 수 있게, 최소한 미체결 상태를 확인하는 예스랭귀지 코드. 2-2. 스팟에서 미결제 상태를 확인해서, 그 경우에 그 미결제 잔고에 대해 청산주문을 내게 할 수 있는 것과 같이, 예스랭귀지에서, 직전에 낸 진입 주문이 체결되어 미결제 잔고가 생성되었고, 따라서 이 게 확인된 상태에서만, 이와 관련된 청산 주문이 나갈 수 있게 하는 예스랭귀지 코드. *즉, If 2-1과 같이, 아직 체결이 되지 않은 게 확인되면, 이어지는 청산주문은 없도록 하고, Else 2-2와 같이, 직전에 낸 진입주문이 체결된 것이 확인되면, 비로소 청산주문이 나가도록 하는 YesLanguage Codes) ////////// ////////// ////////// ////////// ////////// ////////// ////////// 3. 이런 기법들을 쓸 때에도, 가원장 상태와 진원장 상태가 다름으로써, 즉 양자가 일치하게 되는 몇초간의 시차 사이에서도 문제가 발생할 수 있을텐데, 이런 문제를 최소화할 수 있는 방법도 예제로 보여 주시면 대단히 감사하겠습니다. 감사합니다.
프로필 이미지
즐겁게
2013-11-22
393
글번호 69725
시스템
답변완료

지표식 질문입니다

30분 차트에서 하루하루 stime 093000 봉에서 이동평균선이 (증가했다가 감소한경우 or 감소했다가 증가한경우 ) 계속 카운트 하고 싶습니다
프로필 이미지
파인애플
2013-11-21
232
글번호 69724
지표

마이토리 님에 의해서 삭제되었습니다.

프로필 이미지
마이토리
2013-11-21
0
글번호 69723
시스템
답변완료

질문입니다

예스에서는 유로FX 차트를 구현할수 있는 방법이 어떻게 됩니까?
프로필 이미지
등정
2013-11-21
243
글번호 69722
지표
답변완료

검색식 부탁드립니다.

안녕하세요. 검색식 및 시스템식 부탁드립니다. 일봉에서 3일전 거래량이 4일전 거래량보다 많고 주가는 음봉이며, 2일전 거래량이 3일전 거래량보다 적고 주가는 양봉이며, 1일전 거래량이 2일전 거래량보다 많고 주가는 양봉이며, 오늘 거래량이 어제 거래량보다 많고 주가는 상한가 일때 매수, 다음봉에 매도식 부탁드립니다. 수고스러우시지만 검색식과 시스템식 모두 부탁드리겠읍니다. 감사합니다.
프로필 이미지
예닮
2013-11-21
264
글번호 69721
검색
답변완료

문의드립니다.

안녕하십니까. 1. 우리트레이더와 에스트레이더간에 같은 전략의 실적이 서로 상이 합니다(CME 1분봉). 이유를 알수 없어 문의드립니다. 2. 우리트레이더는 차트에서 장시작 첫봉이 09:00분으로 표기되고 예스트레이더는 차트에서 장시작 첫봉이 09:01분으로 표기됩니다(정규장 1분봉). 차이점이 무엇입니까? 3. 우리트레이더 전략실행 식을 예스트레이더로 그대로 복사해 사용하면 동일하게 작동하는지요? 항상 친절한 답변에 감사드립니다.
프로필 이미지
사우로스
2013-11-21
273
글번호 69720
시스템
답변완료

주문 관련 문의드립니다.

항상 감사드립니다. if A식 then buy("a"); if B식 then buy("b"); if C식 then buy("c"); 여러가지 상황에 따라서 수식을 위처럼 여러개를 만들었습니다. 각 식별로 특징이 있어서 진입 설정을 각각 별개로 해야 합니다. 시스템매매설정 창에서는 전체를 일괄적으로 현재가 진입으로 해놨습니다. 그런데 B식만 현재가+1호가로 별도 지정하고 싶습니다. 이 경우 if B식 then Buy("b",atstop,c + pricescale*1); 로 하는 것이 맞나요?
프로필 이미지
하우즐영
2013-11-21
257
글번호 69719
시스템
답변완료

수식수정문의

안녕하세요 평균단가 -5프로 이상이면 매수 하는 식 고치려고합니다 매수후 -5프로빠지면 매수, 매수한가격에서 -5프로이상빠지면 매수, 또매수한 가격에서 -5프로이상 빠지면 매수하는 식으로 바꾸어주세요 수고하세요 ~~ input : 투자금액(200000),P(60); Var : Body(0),HighBody(0),LowBody(0),Height(0),UpTail(0),DnTail(0),Long(False); var : Vol(0),entrycond(false),mav(0); mav = ma(C,P); if date != date[1] Then entrycond = false; if CodeCategoryEx == 11 and BasePrice < 50000 Then vol = int(int((투자금액)/C)/10)*10; Else vol = int((투자금액)/C); Body = Abs(C-O); HighBody = Max(C,O); LowBody = Min(C,O); Height = H-L; UpTail = H-Max(C,O); DnTail = Min(C,O)-L; DnTail = Min(O,C) - L; Uptail = H - Max(O,C); Height = H - L; body= Abs(O-C); highbody = Max(O,C); LowBody = Min(O,C); If Abs(Open-Close) > ma(Abs(Open-Close),10)*2 Then Long = True; Else Long = False; If UpTail == 0 and DnTail == 0 Then Condition1 = True; Else Condition1 = False; If C > mav and entrycond == false and C < Ma(C,10) and DnTail < Height*0.1 and C == O and Height > Ma(Height,10) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a1",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and (Uptail < Height * 0.1) and C == O and (Height > Ma(Height,10)) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a2",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and Long[1] == True and C > O and Long and O < L[1] and C >= (O[1]+C[1])/2 and C < O[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a3",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[2] >= Ma(C,10)[2] and C[2] < O[2] and C[1] < O[1] and C < O) and (O[1] > Min(O,C)[2] and O[1] < Max(O,C)[2]) and (O > Min(O,C)[1] and O < Max(O,C)[1]) and (C[2] > C[1] and C[1] > C[0]) and (L[2] < L[1] and L[1]< L[0]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a4",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] < O[2] and C[1] > O[1] and C < O and O[1] > C[2] and O[1] == L[1] and O > Max(H[1],H[2]) and C[2] == C[0] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a6",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[4] < Ma(C,10)[4] and C[4] < O[4] and C[3] < O[3] and C[2] < O[2]) and (O[4] > O[3] and O[3] > O[2]) and (C[4] > C[3] and C[3] > C[2]) and (C[1] < O[1] and H[1] - MaxList(O,C)[1] > 0) and (H[1] < O[3] and C[2] > C[1]) and Close > Open and (O > O[1] and C > MaxList(H[1],H[2])) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a7",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[2] < Ma(C,10)[2] and Long[2] == True and C[2] < O[2]) and (C[1] == O[1] and Max(O,C)[1] < Min(O,C)[2])and (C > O and Min(O,C) > Max(O,C)[1])and (C > C[2]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a8",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[1] < O[1] and Long[1] == True and Condition1[1] == True ) and (Long == True and C > O and Condition1 == True ) and (L > H[1]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a9",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and C > O and Abs(C-C[1]) < Ma(Height,10)*0.1 And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a10",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and body > Ma(body,10)*2 and C > O and O == L and Uptail > 0 and Uptail < Height*0.1 And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a11",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] == O[2] and C[1] == O[1] and C == O and HighBody[1]< LowBody[2] and HighBody[1] < LowBody[0] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a12",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and C == O and Highbody < Highbody[1] and Lowbody > Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a13",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and C > O and Highbody < Highbody[1] and Lowbody > Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a14",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] < O[2] and body[2] > Ma(body[2],10)*2 and C[1] > O[1] and Highbody[1] < Highbody[2] and Lowbody[1] > Lowbody[2] and C > O and C > C[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a15",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(c,10)[1] and C[1] < O[1] and C > O and Body > Ma(Body,10)*2 and Highbody > Highbody[1] and Lowbody < Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a16",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] < O[2] and C[1] > O[1] and Body[1] > Ma(Body[1],10)*2 and Highbody[1] > Highbody[2] and Lowbody[1] < Lowbody[2] and C > O and C > C[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a17",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[4] < Ma(c,10)[4] and Body[4] > Ma(Body,10)[4]*2 and C[4] < O[4]) and (C[3] < O[3] and C[1] < O[1]) and (Body > Ma(Body,10)*2 and C > O) and (O[3] > HighBody[2] and HighBody[2] > O[1]) and (C[3] > LowBody[2] and LowBody[2] > C[1]) and (C >= O[1] and C > O[3] and C < C[4]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a18",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and C[1] == O[1] and HighBody[1]<LowBody[2] and C > O and C > C[2] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a19",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and Body[1] < Ma(Body,10)[1]*0.5 and HighBody[1] < LowBody[2] and C > O and C > C[2] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a20",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[3] < Ma(C,10)[3] and Body[3] > Ma(Body,10)[3]*2 and C[3] < O[3] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and O[3] == H[3] and C[3] == L[3] and O[2] == H[2] and C[2] == L[2] and O[1] < Min(O,C)[2] and H[1] > C[2] and UpTail[1] > Height*0.5 and O > H[1] and C < L[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a21",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and DnTail < Height*0.1 and UpTail > Body*2 and Height > Ma(Height,10) and C != O And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a22",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] > O[2] and C[1] > O[1] and C > O and O[1] >= LowBody[2] and O[1]<= HighBody[2] and O <= HighBody[1] and C[2] <= C[1] and C[1] <= C And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a23",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and Body[1] > Ma(Body,10)[1]*2 and C < O and Highbody < Highbody[1] and Lowbody > Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a24",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and UpTail < Height*0.1 and DnTail > Body*2 and Height > Ma(Height,10) and C != O And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a26",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2]) and (C[1] < O[1] and C > O and Highbody[1] < Highbody[2] and Lowbody[1] > Lowbody[2]) and (L[1] < L[2] or L[1] < Min(L[2],L[3],L[4])) and (L[1] < O and C[1] > C) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a27",OnClose,def,vol); entrycond = true; } if MarketPosition == 1 Then{ if CurrentEntries >= 2 Then exitlong("매도2",atlimit,AvgEntryPrice*1.02); Else exitlong("매도1",atlimit,EntryPrice*1.05); }
프로필 이미지
회원
2013-11-21
265
글번호 69718
시스템