커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다

안녕하세요~ 1.주간기준으로 최대 3번의 진입만 할 것이고 손절당하는 경우가 아니고 익절하는 경우 해당 주는 더이상 진입이 발생하지 않게 하고 싶습니다 따라서 주간기준으로 max 3번의 진입이 있게되는데 첫번째 진입에 익절하는 경우 해당 주 더이상 진입 금지이고 첫번째 진입 손절 후 두번째 진입에 익절하는 경우 해당 주 진입금지 세번째 진입은 주간 마지막 진입입니다. 2. 현재가가 5일이평 아래에 지속적으로 있다가 현재가가 5일이평과 같을 때 바로 매수하는 수식을 알려주세요 3. bdate 와 sdate의 차이를 알려주세요 늘 감사드려요~
프로필 이미지
하라잉
2016-01-26
106
글번호 94833
시스템
답변완료

재문의합니다

안녕하세요 답변 매번 감사합니다 (buy1매수조건)을 어떻게 추가하는것인지 난감하네요 아래 buy1수식을 첨부합니다 if nday >= 10 then if data1(c) < data2(c) Then if countif(CrossDown(sma44,sma45+0.5),3) >=1 Then Buy("Buy1",AtLimit,c-pricescale*1); 다시한번 부탁드립니다 감사합니다 안녕하세요 예스스탁입니다. 작성하신 식이시면 첨부된 그림과 같이 buy1로 진입중에 sell이 발생하지 않습니다. 다만 Sell진입이 봉완성시 값을 셋팅하고 다음봉에서 신호가 발생하므로 셋팅되는 봉에서 buy조건이 동시충족되면 다음봉에서 동시에 신호가 나올수 있습니다. 이럴경우 동시셋팅되지 않게 아래와 같이 buy1조건이 아니라는 내용을 추가로 적어주셔야 합니다. !(조건)이 지정된 조건이 아니라는 표현입니다. if IsEntryName("buy1")==False and !(buy1매수조건) Then{ if countif(CrossDown(sma44,sma45),3) >=1 Then Sell("Sell",AtLimit,c+pricescale*1); } 즐거운 하루되세요 > 파티아 님이 쓴 글입니다. > 제목 : 문의드립니다 > 안녕하세요 늘감사합니다 30분봉입니다 buy1 매수중에는 sell 진입을 금지하고 싶은데도 계속 진입이 되네요 수식 수정 부탁드려요 감사합니다 if IsEntryName("buy1")==False Then{ if countif(CrossDown(sma44,sma45),3) >=1 Then Sell("Sell",AtLimit,c+pricescale*1); }
프로필 이미지
파티아
2016-01-26
114
글번호 94832
시스템
답변완료

함수수정요청(11-1)

안녕하세요? 아래의 함수를 수정요청드립니다. 아래의 함수는 매수와 매도가 서로 독립적으로 영향을 받고 있지 않습니다. 다시 말씀드리면 기존에 매도(s) 포지션이 진입되면 익절(sp)이든 손절(sl)이든 청산이 되야 매수(b) 신호가 생성됩니다. 그러지 말고 기존에 매도포지션이 들어가있어도 매수조건이 맞으면 기존의 매도포지션이이 청산되고 매수가 들어갈 수 있도록 수정 요청드립니다. ------------------------------------------------------------------------------------ var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = dayopen(0)+maho1; V2 = DayOpen(0)-maOL1; V3 = DayOpen(0)+maHL1; V4 = DayOpen(0)-maHL1; V5 = NthMaxList(1,V1,V2,V3,V4); V6 = NthMaxList(2,V1,V2,V3,V4); V9 = NthMaxList(3,V1,V2,V3,V4); V10 = NthMaxList(4,V1,V2,V3,V4); V7 = (V5+V10)/2; V8 = (V6+V9)/2; if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,v7); if V7 < V8 Then sell("s2",Atlimit,v8); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9); ExitShort("sl2",AtStop,V6); } var : TF(0); var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0); var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0); Array : HH[50](0),LL[50](0),CC[50](0); mav1 = ma(c,5); mav2 = ma(C,20); TF = TimeToMinutes(stime)%30; if Bdate != Bdate[1] Then{ Etime = true; if stime >= 090000 Then Xtime = 050000; Else Xtime = 060000; } if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 49{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if HH[25+2] > 0 Then{ HV = HH[0]; LV = LL[0]; HV1 = HH[1]; LV1 = LL[1]; HV2 = HH[2]; LV2 = LL[2]; for cnt = 0 to 25{ if HH[cnt] > HV Then HV = HH[cnt]; if LL[cnt] < LV Then LV = LL[cnt]; if HH[cnt+1] > HV Then HV = HH[cnt+1]; if LL[cnt+1] < LV Then LV = LL[cnt+1]; if HH[cnt+2] > HV Then HV = HH[cnt+2]; if LL[cnt+2] < LV Then LV = LL[cnt+2]; } var1 = (HV+LV)/2; var2 = (HV1+LV1)/2; var3 = (HV2+LV2)/2; if Etime == true then{ if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then buy("b",AtMarket); if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then ExitLong("bx",AtMarket); } } if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{ Etime = false; ExitLong(); }
프로필 이미지
통큰베팅
2016-01-26
125
글번호 94831
시스템

삼족오 님에 의해서 삭제되었습니다.

프로필 이미지
삼족오
2016-01-26
6
글번호 94830
지표
답변완료

46143 이어서 지표 문의 드립니다.

조금 더 자세히 풀어봤습니다. 신고가가 계속 갱신되고 있습니다. 그에 맞춰서 저가도 계속 올라가고 있는 상황입니다. 제가 원하는 것은 신고가가 아무리 갱신되더라도 아주 예전의 폭(a)이였어도 그것이 최대폭이라면 그 폭이 유지가 되는 것입니다. 초기화 조건이 없는 상태라면 폭 a b c d e 전자가 다 크다는 가정을 하겠습니다. a >b a a>c a a>d a a>e a 가 되어 5의 신고가 상태에서도 5의 가격 - a = 제가 원하는 폭 의 가격이 나와야 합니다. 지금 식대로라면 a > b a b > c b c > d c d > e d 이렇게 비교를 하는 것 같습니다. 엑셀 데이타 그림 제가 원하는 방식으로 지표를 나오게 하고 싶습니다. 감사합니다.
프로필 이미지
kosto1
2016-01-26
177
글번호 94829
지표
답변완료

please check

please check attaschment. always thank you.
프로필 이미지
흑수돌
2016-01-27
132
글번호 94828
지표

삼족오 님에 의해서 삭제되었습니다.

프로필 이미지
삼족오
2016-01-27
22
글번호 94826
지표
답변완료

수식 부탁드립니다.

*. 기본 차트: 선물지수 10분봉, 이동평균선 3, 10, 180(일봉으로 5일선)선 이용. 1. 3선이 180선을 crossup 하면 "매수". 2. 지수가 180선 위에 있고, a. 3선이 10선을 crossup 할때 "매수" b. 3선이 10선을 crossdown 하면 "매수청산". 단, "그림1"과 같이 지수가 180선과 반대로 가는 경우에 진입을 못하게 하는 필터링. 3. 3선이 180선을 crossdown 하면 "매도". 4. 지수가 180선 아래에 있고, a. 3선이 10선을 crossdown 할때 "매도" b. 3선이 10선을 crossup 할때 "매도청산" 단, "그림2"와 같이 지수가 180선과 반대로 가는 경우에 진입을 못하게 하는 필터링. 이런 수식을 만들어 주시면 감사하겠습니다.
프로필 이미지
코스모
2016-01-26
150
글번호 94825
시스템
답변완료

46143 재문의 합니다

바텍 15분봉에 봉은 200개에서 1000로 변경하면서 해봤습니다. L, LL1, LL1[1] 모두 0으로 나옵니다. 1. #고점이 최저가 if L < LL Then LL = L; 요부분을 풀어서 설명 좀 부탁합니다. 2. H2가 발생한 이후 H2와 H1 사이의 최저가를 print 명령어로 뽑을 수 있는 방법을 알고 싶습니다. ----------------------------------------------------------------------- 안녕하세요 예스스탁입니다. 아래 수식구조 참고하셔서 수정보완해 사용하시기 바랍니다. 최고가 위치에 대한 내용은 없으셔서 N개봉 최고가 상승후 수평으로 되는 봉을 기준으로 했습니다. 해당 부분은 사용자분이 원하시는 시점으로 수정하시기 바랍니다. var : LL(0),LL1(0),LL2(0); var : HH(0),HH1(0),HH2(0); var1 = highest(H,100); #고점(100개봉 최고가가 상승후 값 수평) if var1 == var1[1] and var1 > var1[1] Then{ HH = H; HH1 = HH[1]; HH2 = HH1[1]; LL = L; LL1 = LL[1];#직전구간 LL2 = LL1[1];#전전구간 } #고점이 최저가 if L < LL Then LL = L; plot1(HH-max(HH1-LL1,HH2-LL2)); 즐거운 하루되세요 > kosto1 님이 쓴 글입니다. > 제목 : 함수문의 입니다 > 지표상에서 2가지를 표현하고 싶습니다 1. H1과 H2사이에 최저값을 선으로 나오게 하고 싶은데 방법이 있는지요? 2. H1과 H2 사이의 최저값(L1)을 저장하고 H2와 H3사이의 최저가(L2)를 저장한 후에 K1 =H1-L1 과 K2=H2-L2를 비교해서 큰 녀석의 값을 기억해서 (K2>K1이라고 가정하면) H3부터 그 값을 기준으로 H3- K2로 저점의 선이 나오게 하는 방법이 있을지요?
프로필 이미지
kosto1
2016-01-26
157
글번호 94820
지표