커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다

Input : length(12),추세선굵기(2);#굵기(0~6사이의 정수) input : 고저점값표시(1);#1이면 표시, 0이면 표시안함 input : 피보값표시(1);#1이면 표시, 0이면 표시안함 Var : j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),T(0); var : tx(0),tx1(0),tx2(0),tx3(0),tx4(0),tx5(0),tx6(0),tx7(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""),r[10](0); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then { TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); if turnPntArr[1][0] == "Hi" Then { T = 1; } if turnPntArr[1][0] == "Lo" Then { T = -1; } if 고저점값표시 == 1 and T != T[1] Then { tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],NumToStr(valArr[2],2)); if t == 1 then { Text_SetStyle(tx,2,0); Text_SetColor(tx,BLACK); } Else { Text_SetStyle(tx,2,1); Text_SetColor(tx,BLACK); } } } Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,추세선굵기); TL_SetColor(TL1,iff(t== 1,GRAY,GRAY)); var : TTL1(0),TTL2(0),TTL3(0),TTL4(0),TTL5(0),TTL6(0),TTL7(0); if T == -1 then { r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; var1 = valArr[1]+(valArr[2]-valArr[1])*R[0]; var2 = valArr[1]+(valArr[2]-valArr[1])*R[1]; var3 = valArr[1]+(valArr[2]-valArr[1])*R[2]; var4 = valArr[1]+(valArr[2]-valArr[1])*R[3]; var5 = valArr[1]+(valArr[2]-valArr[1])*R[4]; var6 = valArr[1]+(valArr[2]-valArr[1])*R[5]; var7 = valArr[1]+(valArr[2]-valArr[1])*R[6]; TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[0],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[0]); TTL2 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[1],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[1]); TTL3 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[2],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[2]); TTL4 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[3],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[3]); TTL5 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[4],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[4]); TTL6 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[5],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[5]); TTL7 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[6],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[6]); TL_SetExtRight(TTL1,true); TL_SetExtRight(TTL2,true); TL_SetExtRight(TTL3,true); TL_SetExtRight(TTL4,true); TL_SetExtRight(TTL5,true); TL_SetExtRight(TTL6,true); TL_SetExtRight(TTL7,true); TL_SetExtRight(TTL7,true); TL_SetColor(TTL1,GRAY); TL_SetColor(TTL2,MAGENTA); TL_SetColor(TTL3,MAGENTA); TL_SetColor(TTL4,BLACK); TL_SetColor(TTL5,MAGENTA); TL_SetColor(TTL6,MAGENTA); TL_SetColor(TTL7,GRAY); if 피보값표시 == 1 then { } } #--하락적용--- if T == 1 Then { r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; var1 = valArr[1]-(valArr[1]-valArr[2])*R[0]; var2 = valArr[1]-(valArr[1]-valArr[2])*R[1]; var3 = valArr[1]-(valArr[1]-valArr[2])*R[2]; var4 = valArr[1]-(valArr[1]-valArr[2])*R[3]; var5 = valArr[1]-(valArr[1]-valArr[2])*R[4]; var6 = valArr[1]-(valArr[1]-valArr[2])*R[5]; var7 = valArr[1]-(valArr[1]-valArr[2])*R[6]; TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var1,sdate,stime,var1); TTL2 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var2,sdate,stime,var2); TTL3 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var3,sdate,stime,var3); TTL4 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var4,sdate,stime,var4); TTL5 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var5,sdate,stime,var5); TTL6 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var6,sdate,stime,var6); TTL7 = TL_New(sDate[barArr[1]],sTime[barArr[1]],var7,sdate,stime,var7); TL_SetExtRight(TTL1,true); TL_SetExtRight(TTL2,true); TL_SetExtRight(TTL3,true); TL_SetExtRight(TTL4,true); TL_SetExtRight(TTL5,true); TL_SetExtRight(TTL6,true); TL_SetExtRight(TTL7,true); if 피보값표시 == 1 then { TL_SetColor(TTL1,GRAY); TL_SetColor(TTL2,BLUE); TL_SetColor(TTL3,BLUE); TL_SetColor(TTL4,BLACK); TL_SetColor(TTL5,BLUE); TL_SetColor(TTL6,BLUE); TL_SetColor(TTL7,GRAY); } } 위수식에서 약간변경하고십습니다 ,지그재그선이 상승점을찍고 피보나치선이 나오는데 76.4%하락돌파시 레드색수평선 하나만 나오게(돌파하지않았을&#46468;는나오지않게,돌파시만수평선유지) 반대로 지그재그선이 하락점을찍고 23.6%상승시블루색수평선 하나만나오게 수정부탁드립니다~~미리감사드립니다
프로필 이미지
장군
2018-12-29
250
글번호 124845
지표
답변완료

수식 부탁드립니다

input : len(11), period(200); var : Lbar1(0), Lbar2(0), Lval1(0), Lval2(0), Hbar1(0), Hbar2(0), Hval1(0), Hval2(0); var : UpTrend(0), DnTrend(0); Lbar1 = swinglowbar(1, low, len, len, period); Lbar2 = swinglowbar(2, low, len, len, period); Lval1 = swinglow(1, low, len, len, period); Lval2 = swinglow(2, low, len, len, period); Hbar1 = swinghighbar(1, high, len, len, period); Hbar2 = swinghighbar(2, high, len, len, period); Hval1 = swinghigh(1, high, len, len, period); Hval2 = swinghigh(2, high, len, len, period); If Lval1 > Lval2 Then { UpTrend = (Lval1 - Lval2)/(Lbar2 - Lbar1)*Lbar1 + Lval1; plot1(UpTrend, "상승추세선"); } If Hval1 < Hval2 Then { DnTrend = (Hval1 - Hval2)/(Hbar2 - Hbar1)*Hbar1 + Hval1 ; plot2(DnTrend, "하락추세선"); } 현재 이 지표 잘 사용중인데 기능을 하나 더 추가하고 싶습니다. 1, 상승추세선을 깨고 하락시 직전 고점에서 추세선 붕괴시점의 지수를 뺀 폭만큼의 지수를 수평선으로 표시하고 싶습니다. 2, 반대로 하락추세선을 돌파하고 상승시 직전 저점에서 돌파시점의 지수를 더한만큼의 지수를 수평선으로 표시하고 싶습니다. 부탁드립니다.
프로필 이미지
스캘퍼
2019-01-02
265
글번호 124844
지표
답변완료

문의

안녕하세요 1. 일간차트 선물용 인데요 Input: aa(-1.5),bb(1.5) 매수가대비 (aa) 가 -1.5p 하락 하면 매수 매도가대비 (bb) 가 1.5p 상승 하면 매도 위 내용을 랜코 식에서 반올림 반내림으로 거래하고싶네요 2. 일간차트 합니다 현물용 랜코 식 을 아래와같이 변경 매수가 대비 반내림 은 매수 매도가 대비 반올림 은 매도 감사합니다^^ 연휴 건강하십시요
프로필 이미지
회원
2018-12-29
193
글번호 124843
시스템
답변완료

수식 문의드립니다.

안녕하세요 아래와 같은 수식 문의드립니다. 1. 매수 진입 "BUY" 진입후에 50틱 초과시 수익이 아니라, 50틱 이상 수익이 난 상황에서 50틱 이하로 떨어지는 경우 청산하고자 합니다. 50틱 이상 올라간 경우... 최소 50틱은 챙기는게 목적입니다. 이럴때 어떻게 수식을 구성해야 할지 문의드립니다. 2. 항셍의 경우, 10시 15분에 장 시작하고 새벽 5시 까지 열리는것으로 알고 있습니다. 새벽 장 종료시까지는 정상 매매가 되고, 10시 15분 장 시작시 바로 진입이 안되게 수식 문의드립니다. 5분봉에서 10시 15분은 진입 안되고 10시 20분부터 진입을 했으면 합니다. 날씨 추운데 항상 도움 감사드립니다.
프로필 이미지
이엘성투
2019-01-01
201
글번호 124842
시스템
답변완료

터틀s1 문의

터틀s1수식 부탁드립니다. 손절은 전날20atr로욥 -- ★시스템 1 원칙 : 4주간 (20일) 최고점을 돌파하면 매수, 2주간(10일) 최저점이 붕괴되면 매도 추가규칙 ① 바로 직전 4주 신호를 보고 거래를 해서 (가상거래포함)이익을 봤다면, 현재 새롭게 나온 4주 신호는 무시한다. ② 직전 4주 신호에 따라 거래를 시작했는데 2N (변동성)손실을 기록했다면, 현재 새롭게 나온 4주 신호는 받아들인다.
프로필 이미지
렉쳐
2019-01-02
253
글번호 124841
시스템
답변완료

수식작성 부탁드립니다.

1. 전 거래일~ 21일전 거래일의 데이터 중 2. 각 거래일별 9am~11am 2시간동안만의 데이터를 추출하여 a. abs(시가-종가) 의 20일평균값 x 0.7 b. abs(최고가-최저가) 의 20일평균값 x 0.7 두 값을 도출하여 다른 식에 적용하려 합니다. 도움 부탁드립니다.
프로필 이미지
까냐스키
2018-12-29
200
글번호 124840
시스템
답변완료

부탁드립니다.

키움수식을 예스로 부탁드립니다. 감사합니다. Params : vExitL(90), vExitP(300); Vars : SP(0), TickSize(0); SP = SignalPosition; TickSize = OneTick * PriceScale; // 이동평균선1 Params : period1(2); Vars : vMa1(0); vMa1 = Average(C, period1); // William R Params : WilliamR_Period(20); Vars : oWilliamR(0); If CB > 1 Then Begin v1 = Highest(H, WilliamR_period); v2 = Lowest(L, WilliamR_period); End; if (v1 - v2) <> 0 Then oWilliamR = (v1 - C) / (v1 - v2) * (-100) Else oWilliamR = 0; Vars : max99(0), min99(0), bNUM(0), sNUM(0); If vMA1 > 0 Then v99 = ABS(C - vMA1); If C < vMa1 - (100 * TickSize) Then bNUM = 0 Else bNUM = bNum + 1; If C > vMa1 + (100 * TickSize) Then sNum = 0 Else sNum = bNum + 1; If bNum > 0 Then Begin IF v99[1] < v99 Then max99 = v99 Else max99 = max99; End Else max99 = 0; If sNum > 0 Then Begin If v99[1] < v99 Then min99 = v99 Else min99 = min99; End Else min99 = 0; If SP = 0 And v99 <= (10 * TIckSize) Then Begin If max99 > (100 * TIckSIze) And oWilliamR < -50 Then Buy("B"); If min99 > (100 * TIckSize) And oWilliamR > -30 Then Sell("S"); End; SetStopLoss(vExitL * TIckSIze * CUrrentContracts); SetProfitTarget(vExitP * TickSIze * CUrrentContracts);
프로필 이미지
매일상승
2018-12-29
244
글번호 124839
시스템
답변완료

트레일링스탑

가격에 대한 트레일링 스탑 말고, 보조지표에 대한 트레일링스탑을 설정하여 매매하는 방법이 가능할까요? 예를 들면, 트릭스의 기울기값에 트레일링스탑을 걸어 매매하는 방식 말입니다
프로필 이미지
math
2018-12-28
217
글번호 124838
시스템
답변완료

질문드립니다.

1 . 60분봉상 첫캔들 몸통값이 윗꼬리의 크기보다 크며, 이후 주가가 첫캔들몸통값의 n%미만까지 내려온적이 없고 5이평을 크로스업하면 매수식 부탁드립니다. 2. 당일첫캔들부터 4번째캔들까지의 거래량합의 30%가 매수신호봉 이전 음봉캔들의 누적 거래량보다 크면. 이라는 조건 부탁드립니다. 3. 당일첫캔들부터 4번째캔들까지의 완성봉이 꼬리보다 몸통이큰 연속양봉 이라는 조건부탁드립니다. 감사합니다.
프로필 이미지
stockric
2019-01-02
242
글번호 124837
지표