커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

참조종목의 정보

안녕하세요. 차트의 주종목의 정보에 대해서는 symbolcode() 등의 함수가 있어 해당 종목의 코드를 가져올수 있는데, 참조차트(data2,3,4 .....)의 정보(종목명, 종목코드 등)를 알 수 있는 함수는 없는 건가요?
프로필 이미지
건곤대
2024-11-20
829
글번호 185471
지표
답변완료

청산 관련 수식 요청드립니다.

안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 진입과는 별개로 청산 관련된 수식만을 따로 작성 중인데, 수식 검토 및 2번 부분 수식을 요청드립니다. 청산 기준을 상황에 따라 다르게 적용되는 수식이 필요한데, 구현하고자 하는 내용은 다음과 같습니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 위 내용을 토대로 구현한 수식은 아래와 같습니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : AtrV1(0), AtrV2(0), posHigh(0), posLow(0); # 기본청산 AtrV1 = ATR(AtrP) * AtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If MarketPosition() == 1 Then { If High > PosHigh Then PosHigh = High; ExitLong("EL1", AtStop, PosHigh - AtrV1); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; ExitShort("ES1", AtStop, PosLow + AtrV1); } # 1개봉 사이 내 포지션과 움직임이 나왔을 때 청산 -> 이 부분을 수식으로 구현하기가 어렵게 느껴져서, 도움 부탁드립니다..! # 수익이 커졌을 때 청산 라인 변경(ATR*1.6) AtrV2 = ATR(AtrP) * BigAtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If Marketposition == 1 Then { If High > PosHigh Then PosHigh = High; if PosHigh > entryPrice(0)+bigProfit Then exitlong("BigEL", atstop, PosHigh - AtrV2); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; if PosLow < entryPrice(0)-bigProfit Then exitshort("BigES", atstop, PosLow + AtrV2); } ---------------------------------------------------------- 현재까지 작성 내용은 위와 같은데, 수식에 겹치는 군더더기 부분들도 있고, 청산조건 2번의 경우 Atstop 주문으로 코딩하려면 어떤식으로 작성이 가능한지 헷갈리는 상황입니다. 전체 내용이 반영된 다중청산 수식(여러 다른 진입전략에 붙여넣기 가능한)을 구현해주시면 정말 감사하겠습니다.
프로필 이미지
penfold
2024-11-20
1087
글번호 185470
시스템
답변완료

수식 작성 도움 부탁드립니다

안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 이동평균 크로스 전략에 직전거래손실 확인 필터(가상으로 진입, 청산)를 추가하고자 합니다. 기본 로직은 이평선 4개 (20, 60, 120, 200)을 활용해서 a) 120ma > 200ma 일 때, 20ma가 60ma를 상향돌파 시 매수 진입(청산은 20ma가 60ma 하향돌파) b) 120ma < 200ma 일 때, 20ma가 60ma를 하향돌파 시 매도 진입(청산은 20ma가 60ma 하향돌파) 하는 간단한 로직입니다. 다만 여기서, 가상으로 진입 후 청산한 뒤, 직전 가상거래가 손실일 경우에만 진입하는 방식의 수식을 구현 부탁드리겠습니다. (아래는 손실필터를 검색하던 중, 다른 전략에서 손실필터가 적용된 사례가 있어 첨부합니다. 해당 로직의 필터 방식을 위의 이평 전략에 적용만 부탁드리겠습니다.직접해보려했으나 아직 어려움이 많아 부득이하게 부탁드려봅니다...) [ 필터 참고 수식 ] Input: shortPeriod(20),exitperiod(10); var : trade(true),mp(0),ep(0),xp(0); Value1 = Highest(high, shortPeriod); Value2 = Lowest(Low, shortPeriod); Value3 = Lowest(Low, exitperiod); Value4 = Highest(High, exitperiod); if TotalTrades > TotalTrades[1] Then { if PositionProfit(1) < 0 Then trade = true; Else { trade = False; mp = 0; } } if MarketPosition == 0 and trade == False Then { If mp == 0 and CrossUP(Close, Value1[1]) Then { ep = c; mp = 1; } If mp == 0 and CrossDown(Close, Value2[1]) Then { ep = c; mp = -1; } If mp == 1 and CrossDown(Close, Value3[1]) Then { mp = 0; xp = c; if xp < ep Then trade = true; } If mp == -1 and CrossUp(Close, Value4[1]) Then { mp = 0; xp = c; if xp > ep Then trade = true; } } if trade == true Then { If MarketPosition == 0 and CrossUP(Close, Value1[1]) Then Buy("LE1"); If MarketPosition ==0 and CrossDown(Close, Value2[1]) Then Sell("SE1"); } If entryname=="LE1" and CrossDown(Close, Value3[1]) Then Exitlong("Lx"); If entryname == "SE1" and CrossUp(Close, Value4[1]) Then ExitShort("Sx"); 감사합니다.
프로필 이미지
penfold
2024-11-20
878
글번호 185469
시스템
답변완료

해외 선물 등락율 계산이 다르게 나옵니다.

당일 등락율을 계산하는데 예스 트레이더의 나오는 등락율 변동폭과 등락율 비율이 다릅니다. var : 당일등락율(0), 전일등락율(0), 등락값(0), 시초가(0) ; 시초가 = DayOpen(); 등락값 = (c-DayOpen()); // 이유는 모름 5.5차이 당일등락율 = (등락값)*100/시초가; 당일등락율 = Floor(당일등락율*100)/100; // 소숫점 2자리 버리기 이렇게 하는 경우 들락폭이 5.5 정도 차이가 생깁니다. 11/20일 기준 나스닥 해외 선물의 경우 시초가를 다르게 적용해야 하는지요 ? 값을 찍어서 디버깅 해봐도 예스트레이더에서 나오는 등락폭과 시초가 기준 현재가의 등락폭의 값이 다릅니다. <첨부 사진 설명> - 시초가가 20762.25 이므로 현재가 20803 이므로 변동폭은 40.75 인데 트레이더에서는 35.25 ( 5.5의 차이가 발생 ??? ) 답변 부탁 드립니다.
프로필 이미지
머니겜
2024-11-20
908
글번호 185468
시스템
답변완료

표준편차 사용예시 부탁드립니다.

안녕하세요 매번 질문에 친절한 답변 정말 감사드립니다. 1. 오늘은 제목처럼, 표준편차 사용예시 코드를 부탁드리고자 합니다. 일반적인 표준편차 산출 식이 있음에도 불구하고, 가중 이동평균의 표준편차를 구하려고 합니다. 현재 시점에서, 각 시점의 편차(시점별 값 - 평균값)를 구하는 과정이 어려워 질문드립니다. 각 시점의 편차를 구하려고 할 때, '고정된 평균'값을 어떻게 산출해야 하는지 모르겠습니다. 가령, 종가 데이터의 편차의 제곱의 합을 먼저 구한다고 한다면, var1 = accumN(c,20)/20; var2 = accumN(Square(c - var1),20)/20; . . (이하생략) 으로 풀어나가려고 했으나 곰곰이 생각해보면 va1인 평균값은 var2에서 계산될 때 [0],[1],[2].. 순으로 이전 시점의 평균값을 뱉어내니 현재 시점의 평균과 다르게 됩니다. 이 부분을 어떻게 해결할지 모르겠습니다.. 2. 곁다리로, 함수 중 하나를 여쭤보고자 합니다. 메뉴얼에 있는함수중에, AvgDeviation(Price,Length) 라는 편차평균을 구하는 놈이 있는데, 얘는 용도가 뭔가요? 편차의 합은 항상 0이라서, 평균이 0일텐데 정확한 용도가 궁금합니다.. 항상 갑갑한 질문 죄송합니다....
프로필 이미지
아침식사됩니다
2024-11-20
924
글번호 185467
지표
답변완료

추가질문 드립니다.

앞질문(90070)에 대한 추가질문 첨부 파일에 보듯이 1>화살표가 너무커서..크기 조절하는 방법좀 가르쳐주세. 2>새로생긴 보조지표 어떠게 보는 건가요?
프로필 이미지
냠냠냠
2024-11-20
766
글번호 185466
지표
답변완료

수식 검토 부탁드리겠습니다

질문 몇가지 부탁드리겠습니다 질문1. ARRV 배열의 이동평균을 ARRMA 로 작성했는데요, 값이 제대로 (작게 나오네요) 안나오네요 어디서 잘못 작성한건지 검토 좀 부탁 드리겠습니다 작성한 수식대로라면 ARRV 배열에 포함된 값들로만 3이동평균 한게 맞지 않나요?? VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if harr == 0 or (harr > 0 and ARR[cnt] > harr) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 Then { ARRV[0] = HVI; } } # Plot11(ARR[0]); # Plot12(HARR[0]); Plot13(ARRV[0]); P1=3; IF ARRV[P1-1]>0 TheN { SUM1=0; FoR CNT= 0 TO P1-1; { SUM1= SUM1+ARRV[CNT]; } ARRMA=SUM1/P1; PLOT22(ARRMA); } } 질문2. 아래 수식에서 배열 ARR의 5일간 최고값을 HARR에 대입하고 그 값들로 "ARRH 라는 배열"로 만들고 난뒤에, ARR 배열에 ARRH값을 삽입하고자 (0번에 ARRH 값이 오고 그다음에 H값이 오도록) 아래와 같이 작성했는데 잘 안나오네요 어디서 잘못됐는지 한번 봐주셨으면 합니다 ARR[1]을 출력했을때 HIGH 값이 잘 나오는데 ARR[0]으로 하면 5일간 최고 고가 값이 안나오네요.. VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0),ARRH [100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; ARRH[CNT]= ARRH[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if HARR == 0 or (HARR > 0 and ARR[cnt] > HARR) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 AND HARR>0 Then { ARRV[0] = HVI; ARRH[0]=HARR; } } FoR cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; } ARR[0]=HARR[0]; Plot12(HARR); # Plot11(ARR[0]); } 질문3. arr 배열의 값들을 보고자 디버그 수식을 작성했는데요 혹시 각 봉에서의 모든 배열 값들을 외부로 추출해서 쓰려면 (PRINT) MessageLoG("%.1f,%.1f,%.1f",ARR[0],ARR[1],ARR[2]); 예를들어 50번 까지 보려면 이런식으로 모두 나열해서 쓰는 방법 밖에 없나요?? 범위 지정 할 수 있는 수식이 있는지 궁금합니다
프로필 이미지
yamu
2024-11-20
866
글번호 185465
지표
답변완료

수식 문의 드립니다.

안녕하세요. 개발자님, 늘 감사드립니다. 수식 문의 드립니다. 매수진입 : 10일선과 20일선이 정배열후 10일선에 처음 닿은 봉포함 이전 10개의 봉중 최고가를 위로 돌파하여 그 최고가 위에 종가가 형성되면, 그 봉의 종가에 시장가로 3계좌 매수 진입 손절 : 진입후 가격이, 진입한 봉의 최저가에 닿으면 보유한 물량 모두 청산 청산1 : 진입봉 이후에 나온 첫 음봉 종가에 1계좌 청산 청산2: 가격이 10일선 에 가격이 닿으면 바로 시장가로 1계좌 청산 청산3 : 20일선 아래에 종가가 형성되면, 바로 종가에 남은 모든 물량 청산 ------- 감사합니다. 늘 ~ 좋은 날 되세요 ^^
프로필 이미지
하늘선물
2024-11-20
788
글번호 185450
시스템
답변완료

지표 문의드립니다.

안녕하세요. 항상 도움 주심에 감사드립니다. 1. 현재봉(0봉)기준 0봉 ~ 이전30봉의 고점 이전 30봉 ~ 이전60봉의 고점 이전 60봉 ~ 이전 90봉의 고점 ... ... 위와 같이 30봉씩 끊어서 각 고점을 이동평균한 선을 부탁드립니다. 2. 위 1번 선에서 10포인트씩 더한 선을 부탁드립니다. 3. 현재봉(0봉) 기준 0봉 ~ 이전30봉의 저점 이전 30봉 ~ 이전60봉의 저점 이전 60봉 ~ 이전 90봉의 저점 ... ... 위와 같이 30봉씩 끊어서 각 저점을 이동평균한 선을 부탁드립니다. 4. 위 3번 선에서 10포인트씩 뺀 선을 부탁드립니다. 항상 감사드립니다.
프로필 이미지
트레이더365
2024-11-20
751
글번호 185447
지표