커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

아까답변받았는데

키움 검색과 동일하게 했는데 종목검색의 결과가 나오질 않습니다. 한번 검토 부탁드립니다. 아래 검색식에서 and countif(H < O*1.10,60)[2] == 0 #2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만 and V[1] >= ma(V,60)[2]*5 #2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상 이 두가지 조건을 주석처리 하면 종목이 나오긴 하는데 두가지 중 하나라도 넣으면 종목이 뜨질 않습니다. 2일봉전 기준으로 60봉 동안 시가 고가 (또는 고가 시가) 등락이 각각 10%미만 2일봉전 기준으로 60일 일 평균 거래량보다 1일전 거래량이 5배 입니다. var : 상한가(0), UpLimit(0), 전일상한가(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } if C < 상한가 //and C[1] < 상한가[1] //1일전 및 2일전 상한가가 아닐것 and C[1] >= O[1]*1.05 //1일봉전 시가대비 1일봉전 종가 등락률이 5%이상 and C[2] <= C[3]*1.05 //3일봉전 종가대비 2일봉전 종가 등락률이 5%이하 and H[1] >= C[2]*1.10 //2일봉전 종가 대비 1봉전 고가등락률이 10% 이상 and countif(H < O*1.10,60)[2] == 0 #2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만 and V[1] >= ma(V,60)[2]*5 #2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상 Then find(1);
프로필 이미지
가이츠
2019-03-27
365
글번호 127410
종목검색
답변완료

수식작성

Input : Period(12), Period1(5), Percent(80); value1 = StochasticsK(Period, Period1); If CrossUp(value1,Percent) Then { If C == C[1] Then value2 = 0.001; Else value2 = (C-C[1])/C[1]*100; } Else value2 = 0; Find(value2); 에서 c가 c[1]가 같다는 게 무슨소리죠? value2에 0.001 , (C-C[1])/C[1]*100; , 은 각각 무슨명령이죠?
프로필 이미지
분당닭알
2019-03-26
367
글번호 127409
지표

미완 님에 의해서 삭제되었습니다.

프로필 이미지
미완
2019-03-26
0
글번호 127408
시스템
답변완료

진입제한

수고하십니다... 1. 매수전략 전체 진입횟수를 6개로 제한하고, 만약 진입명이 3개("A매수","B매수", "C매수")가 있다면 각 진입의 횟수를 2회로 제한하고, 한개의 진입명에 따라 첫번째 진입 한다면 그후 20봉후에 동일 진입조건이 발생했을 때 추가 1회만 더 진입하려고 합니다. 2. 매도전략 동일 진입(예: "A매수" 2회분)을 수익율이 5%도달시 30% 매도, 10%수익에 30%매도, 그리고 15%일때 전량 매도할 수 있음좋겠습니다. 각 진입명에 따라 수익율은 다르게 할 생각입니다. 항상 감사합니다.
프로필 이미지
짱짱해야지
2019-03-26
406
글번호 127402
시스템
답변완료

매도 수식 여쭤봅니다.

If MarketPosition == -1 Then Begin SellSetup = False; ExitShort("",atlimit,ShortExitTarget); End; If SellSetup Then Sell("",atlimit,SellEntry); # ATR Protective Stop Inputs: ProtectiveATRs(3); var : AtrV(0); AtrV = ATR(30); If MarketPosition <> 0 Then { ExitLong("EL_Protective Stop", atstop, EntryPrice - AtrV*ProtectiveATRs); ExitShort("ES_Protective Stop", atstop, EntryPrice + AtrV*ProtectiveATRs); } 식의 일부중에 매도 식입니다. 현재 60분봉 개별종목에 적용중인데. 다른시간대는 괜찮은데 16시 매도로 만족되면 차트상으로는 매도가 되었다고 나오는데 실제 매매는 안일어나서 전략이 망가지는데요~ 매도 조건이 만족되면 그 다음봉 시가에 시장가로 매도되게 할수 있을까요? 감사합니다. 아니면 전체 전략 매도가 매도조건 만족 다음봉 시가 시장가 청산조건 부탁드립니다.
프로필 이미지
부자청년28
2019-03-26
365
글번호 127401
시스템
답변완료

수고하십니다 저번에 글 올렸었는데요

아래 글처럼 답변해주셨는데요 혹시 지표 말고 시스템에도 적용될수 있는 식인가요? 매일 8시에 예트 프로그램켜서 아래 식을 돌려도 문제없이 돌아갈까요? NextBarOpen 같은것도 써도 문제없지요? ---------- var : cnt(0),LL(0); if (sdate != sdate[1] and stime >= 143000) or (sdate == sdate[1] and stime >= 143000 and stime[1] < 143000) Then var1 = C; if NextBarSdate != sdate Then { LL = L; for cnt = 0 to 59 { if TimeToMinutes(stime[cnt]) > TimeToMinutes(stime)-60 and L[cnt] < LL Then LL = L[cnt]; } if NextBarOpen < LL and NextBarOpen <= var1*0.99 Then buy("b",AtMarket); } 즐거운 하루되세요 > 에이치 님이 쓴 글입니다. > 제목 : 수고하십니다 > 수식 질문있습니다. 1분봉 기준입니다. 1. 오늘 시가가 전날 마지막 60분 동안의 저가보다 작을때 and 2. 오늘 시가가 전날 2시 30분 가격 대비 1% 이상 하락 했을때
프로필 이미지
에이치
2019-03-26
363
글번호 127393
시스템
답변완료

질문드립니다

1. 현재예스스팟 분봉 확장차트에서 매매신호를 주고 매매하고 있습니다. 장초부터 시작해서 주가가 일봉주기 5일 이동 평균선에 5% 이내로 근접했을때 매수하고 트레일링 스탑으로 매매되는 매매 수식 부탁드립니다. 진입회수는 1회이며 작성한 수식에서 가감해야 할 부분에 대하여 알려주시면 감사하겠습니다. input : 매수금액(500000); input : Per(5),수익률(3),근접률(5); var : Evol(0),Xcnt(0),OpenCond(false),Xcond1(false),Xcond2(false),Xcond3(false); Var1 = ma(DayClose,5); input : 진입회수(1); if stime == 153000 and c<Var1*(1+근접률/100) Then { buy("b",AtMarket,def,Floor(매수금액/C)); } //SetStopTrailing(2,10,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산 if MarketPosition == 1 Then { SetStopLoss(3); #봉완성시 다음봉 시가가 진입가 대비 5% 이상 상승하면 true if NextBarOpen >= EntryPrice*(1+Per/100) Then OpenCond = true; #BP1 청산이 발생하면 Xcond1은 true if LatestExitName(0) == "BP1" Then Xcond1 = true; #BP2 청산이 발생하면 Xcond2은 true if LatestExitName(0) == "BP2" Then Xcond2 = true; #BP3 청산이 발생하면 Xcond3은 true if LatestExitName(0) == "BP3" Then Xcond3 = True; #OpenCond가 false일때 if OpenCond == false Then { SetStopTrailing(2,3,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산 /*if Xcond1 == false then ExitLong("BP1",atlimit,EntryPrice(0)*1.03,"",Floor(MaxContracts*0.3),1); if Xcond2 == false then ExitLong("BP2",atlimit,EntryPrice(0)*1.04,"",Floor(MaxContracts*0.4),1); if Xcond3 == false then ExitLong("BP3",atlimit,EntryPrice(0)*1.05);*/ } #OpenCond가 true일&#46468; if OpenCond == true Then { SetStopTrailing(3.5,5,PercentStop,1); /* #BP1로 청산이 안된 경우만 발생 if Xcond1 == false Then ExitLong("BP6",atlimit,EntryPrice*(1+(Per+3)/100),"",Floor(MaxContracts*0.3),1); #BP2로 청산이 안된 경우만 발생 if Xcond2 == false Then ExitLong("BP7",atlimit,EntryPrice*(1+(Per+4)/100),"",Floor(MaxContracts*0.4),1); #BP3로 청산이 안된 경우만 발생 if Xcond3 == false Then ExitLong("BP8",atlimit,EntryPrice*(1+(Per+5)/100)); #5%이하로 가격하락하면 전량처산 */ //exitlong("BP5",AtStop,EntryPrice*(1+Per/100)); } SetStopEndofday(151000); } #매수포지션이 아니면 모두 false로 초기화 if MarketPosition != 1 Then{ OpenCond = false; Xcond1 = false; Xcond2 = false; Xcond3 = false; SetStopLoss(0);//해제 SetStopEndofday(0);//해제 SetStopTrailing(0,0);//해제 } 2. 그리고 트레일링 스탑을 분할하여 적용가능한 방법이 있나요? 예를 들어 100주를 매수 했을 경우 20 30 50 주 각각 다르게 적용하여 매도 가능한지 3. 종목검색식 부탁드립니다. 2일봉전 종가 대비 1봉전 고가등락률이 10% 이상 2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만 1일전 및 2일전 상한가가 아닐것 1일봉전 시가대비 1일봉전 종가 등락률이 5%이상 2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상 3일봉전 종가대비 2일봉전 종가 등락률이 5%이하 아래에 제가 작성한 검색식인데 2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만 2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상 이 두가지 조건 수식부탁드리며 제가 작성한 것도 맞는지 검토 부탁드립니다. 감사합니다. var : 상한가(0), UpLimit(0), 전일상한가(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } if C < 상한가 and C[1] < 상한가[1] //1일전 및 2일전 상한가가 아닐것 and C[1] > O[1]*1.05 //1일봉전 시가대비 1일봉전 종가 등락률이 5%이상 and C[2] < C[3]*1.05 //3일봉전 종가대비 2일봉전 종가 등락률이 5%이하 and H[1] > C[2]*1.10 //2일봉전 종가 대비 1봉전 고가등락률이 10% 이상 Then find(1); //2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만 //2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상
프로필 이미지
가이츠
2019-03-26
388
글번호 127388
시스템
답변완료

수식 요청드립니다.

* 많은 도움에 정말 고맙습니다. * 퍼센트 율(%) 두건 좀 요청드립니다. 1번: 100봉 기준 양봉이면서 현재가 보다 높은율 과 낮은율 좀 부탁 드립니다. 즉 100봉중 양봉이면서 종가가 현재가 보다 높으것과 낮은것의 비율 입니다. (현재가 와 종가가 같으면 제외) 2번: 매매(매수 or 매도)후 최대수익 과 최대손실을 비교 하여 청산 하는 로직좀 부탁 드립니다. 수식 : (최대수익(A) - 최대 손실(B)) = C → 최대손실은 항상 "0"이거나 마이너스이므로 마이너스 해줌) .최대수익(D) : A / C 값 .최대손실(F) : B / C 값 .D:F 비율이 3:7 이상이면 청산 .D:F 비율이 8:2 이상이면 청산 * 매번 고맙습니다.
프로필 이미지
요타
2019-03-26
367
글번호 127387
종목검색
답변완료

문의드립니다.

질문 1번> 이평 골든 크로스가 발생할 경우 발생한 봉부터 5개봉까지 차트하단에 plot 을 그리고 싶습니다. barindex 함수를 사용해서 가능할까요? 질문 2번> 종가가 볼린저밴드 상단선보다 크면 plot1 종가가 볼린저밴드 하단선보다 크면 plot2 를 그리는 수식 부탁드립니다. 감사합니다.
프로필 이미지
버드나무
2019-03-26
372
글번호 127386
지표