커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5392
글번호 230811
답변완료
계속 예스트레이더가 다운되는데 이유가 궁금합니다.
예스트레이더가 이상하게 계속 종료가 되네요.덤프파일을 첨부 했습니다.원인과 해결책을 알려주세요.감사합니다.
2026-05-25
77
글번호 232145
답변완료
지표질문입니다
1.20캔들 바닥과 20ma의 20캔들 바닥을 연결하는 선을 그린다2.20캔들 바닥과 20ma의 20캔들 천정을 연결하는 선을 그린다3.20캔들 천정과 20ma의 20캔들 바닥을 연결하는 선을 그린다4.20캔들 천정과 20ma의 20캔들 천정을 연결하는 선을 그린다감사합니다
2026-05-23
146
글번호 232143
답변완료
dayopen 문의
수고많으십니다.국내선물 복합차트(주야)에서 dayopen 값이 나오는데 , 08시 45분값이 아니라서아침 08시 45분에 시작값을 얻을려면 어떻게 하는지요식을 알려주시면 감사
2026-05-22
104
글번호 232142
답변완료
문의 드립니다.
안녕하세요 많은 도움 주심에 감사 드립니다. 아래 신호 수식이 발생하는 종목의 검색식을 부탁 드립니다. (((O(4)*1.06<C(4)) and (V(4) >ma(v,50)*2))and ((O(1)*1.04 > C(1)) and (O(1)*0.96 < C(1))))or (((O(3)*1.06<C(3)) and (V(3) >ma(v,50)*2))and ((O(1)*1.04 > C(1)) and (O(1)*0.96 < C(1))))or(((O(2)*1.06<C(2)) and (V(2) >ma(v,50)*2))and ((O(1)*1.04 > C(1)) and (O(1)*0.96 < C(1))))or (((O(4)*0.94>C(4)))and ((O(1)*1.04 > C(1)) and (O(1)*0.96 < C(1))))or (( (O(3)*0.94>C(3)))and ((O(1)*1.04 > C(1)) and (O(1)*0.96 < C(1))))or(( (O(2)*0.94>C(2)))and ((O(1)*1.04 > C(1)) and (O(1)*0.96 < C(1))))and H(1) < C and C(1)*1.09 > Oand O*1.03 < C감사합니다.
2026-05-22
133
글번호 232141
답변완료
종목검색문의드립니다
1.highest(C(1), Period) < C&& Crossup(CCi(Period),0)period 502.A=RSI(12);M10=MA(C,10);M240=MA(C,240);LL=Lowestsince(1, crossdown(M10,M240),M10);D=LinearRegressionvalue(C,10,0)+LinearRegressionSlope(C,10);(A<30 AND A>A(1) AND D>D(1))or(C<LL AND C>C(1))부탁드립니다~ 항상 감사합니다
2026-05-22
147
글번호 232140
문의 드립니다
input : 시작일(20260101),시작시간(090000);input : 이평1(120),이평2(10);input : 윌리엄스R기간값(14);input : 손절틱수(500),청산틱수(1000);var : mav1(0),mav2(0),WR(0);if sdate >= 시작일 and sTime >= 시작시간 Then{ Condition1 = true;}MAV1 = MA(c,이평1); MAV2 = MA(c,이평2);WR = WILLR(윌리엄스R기간값);if Condition1 == true Then{ if MarketPosition == 0 and c < mav1 and CrossDown(WR, -20) Then Sell("s"); if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*청산틱수 Then if CrossUp(C,mav2) Then ExitShort("sx"); } SetStopLoss(PriceScale*손절틱수,PointStop);}위 수식에서 일정한 틱수에 도달하면은 진입가격으로 트레일링 스탑을 하고 싶습니다..이와 관련해서 수식 좀 부탁 드립니다.
2026-05-22
179
글번호 232138
답변완료
문의드립니다
input : 익절틱수(40000),손절틱수(520);var : Ema100(0);ema100 = ema(close, 100);input : atrPeriod(10),factor(3);var : src(0), alpha(0),ATRV(0),upperBand(0),lowerBand(0),direction(0),SuperTrend(C);if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / atrPeriod ; ATRV = IFf(IsNan(ATRV[1]) == true, ma(TrueRange,atrPeriod) , alpha * TrueRange + (1 - alpha) * IFf(isnan(ATRV[1])==true,0,ATRV[1])); upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > lowerBand[1] or close[1] < lowerBand[1] Then lowerBand = lowerBand; Else lowerBand = lowerBand[1]; if upperBand < upperBand[1] or close[1] > upperBand[1] Then upperBand = upperBand; Else upperBand = upperBand[1]; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then SuperTrend = lowerband; Else SuperTrend = upperband;}var : R(0),A(0),longCondition(False),shortCondition(False);R = rsi(14);A = adx(14);longCondition = close > ema100 and direction > 0 and R > 50 and A > 25;shortCondition = close < ema100 and direction < 0 and R <50 and A > 25;var : S3(0);if longCondition == true ThenS3 = 1;if shortCondition == true ThenS3 = -1;input : atrMult(4.5);input : atrlen(12);input : rsmlen(3);input : tplen(14);var : i(0),sum(0),source(0);var : atrValue1(0),upperLevel(0),lowerLevel(0);var : previousLowerLevel(0),previousUpperLevel(0);var : trendDirection(Nan),superTrendValue(Nan);var : previousTrend(0);if CurrentBar > 1 Then { sum = 0; for i = 0 to rsmlen-1 { sum = sum + c[i]*c[i]; } source = sqrt(sum/rsmlen); alpha = 1 / atrlen ; atrValue1 = IFf(IsNan(atrValue1[1]) == true, ma(TrueRange,atrlen) , alpha * TrueRange + (1 - alpha) * IFf(isnan(atrValue1[1])==true,0,atrValue1[1])); upperLevel = source + atrMult * atrValue1; lowerLevel = source - atrMult * atrValue1; previousLowerLevel = iff(isnan(lowerLevel[1])==true,0,lowerLevel[1]); previousUpperLevel = iff(isnan(upperLevel[1])==true,0,upperLevel[1]); // Ensure continuity of lower and upper bands lowerLevel = iff(lowerLevel > previousLowerLevel or source[1] < previousLowerLevel , lowerLevel , previousLowerLevel); upperLevel = iff(upperLevel < previousUpperLevel or source[1] > previousUpperLevel , upperLevel , previousUpperLevel); // Determine direction and SuperTrend previousTrend = superTrendValue[1]; // Initialize direction if IsNan(atrValue1[1]) == true Then trendDirection = 1; else if previousTrend == previousUpperLevel Then trendDirection = iff(source > upperLevel , -1 , 1); else trendDirection = iff(source < lowerLevel , 1 , -1); // Set SuperTrend value based on direction superTrendValue = iff(trendDirection == -1 , lowerLevel , upperLevel);}var : dist(0),chg(0),lvlCol(0);var : tp1(0),tp2(0),tp3(0),tp4(0),tp5(0),tp6(0),tp7(0);var : printedtp1(0),printedtp2(0),printedtp3(0),printedtp4(0),printedtp5(0),printedtp6(0),printedtp7(0);dist = abs(close-superTrendValue);lvlCol = iff(trendDirection > 0 , red , green);var : key1(0);var : key2(0);var : key3(0);var : key4(0);var : key5(0);var : key6(0);var : key7(0);if CrossUp(trendDirection, 0) or CrossDown(trendDirection, 0) Then{ //TL_Delete(keys); printedtp1 = 0; printedtp2 = 0; printedtp3 = 0; printedtp4 = 0; printedtp5 = 0; printedtp6 = 0; printedtp7 = 0; chg = abs(superTrendValue-superTrendValue[1]); tp1 = superTrendValue[1] + IFF(trendDirection > 0 , -chg , chg); tp2 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 2 , chg * 2); tp3 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 3 , chg * 3); tp4 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 4 , chg * 4); tp5 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 5 , chg * 5); tp6 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 6 , chg * 6); tp7 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 7 , chg * 7); key1 = TL_new(sdate[1],stime[1],tp1, sDate,sTime, tp1); TL_SetColor(Key1,lvlCol); TL_SetSize(Key1,2); printedtp1 = 1;}Else TL_SetEnd(key1,sDate,sTime,TP1); var : u(0),d(0),alp(0),ur(0),dr(0),rs(0),tp(False);u = max(dist - dist[1], 0);d = max(dist[1] - dist, 0);alp = 1/tplen;ur = IFf(IsNan(ur[1]) == true, ma(u,tplen) , alp * u + (1 - alp) * IFf(isnan(ur[1])==true,0,ur[1]));dr = IFf(IsNan(dr[1]) == true, ma(d,tplen) , alp * d + (1 - alp) * IFf(isnan(dr[1])==true,0,dr[1]));rs = ur / dr;R = 100 - 100 / (1 + rs);tp = CrossDown(R, 60);var : extreme(0);var : extreme_tp1_dist(0);var : extreme_tp2_dist(0);var : extreme_tp3_dist(0);var : extreme_tp4_dist(0);var : extreme_tp5_dist(0);var : extreme_tp6_dist(0);var : extreme_tp7_dist(0);extreme = iff(trendDirection > 0 , low , high);extreme_tp1_dist = abs(extreme - tp1);extreme_tp2_dist = abs(extreme - tp2);extreme_tp3_dist = abs(extreme - tp3);extreme_tp4_dist = abs(extreme - tp4);extreme_tp5_dist = abs(extreme - tp5);extreme_tp6_dist = abs(extreme - tp6);extreme_tp7_dist = abs(extreme - tp7);var : tx(0),S2(0);if tp and trendDirection > 0 Then// ==========================================// 2. S2 슈퍼트렌드 & RSI 구간 점수 (수정본)// ==========================================// 기존의 CrossDown(R, 60) 대신 '구간' 점수로 변경하여 // 다른 지표(S1, S3)와 합산 점수를 맞추기 쉽게 만들었습니다.if trendDirection > 0 Then // 슈퍼트렌드 상승 구간{ if R > 50 Then S2 = 1; // RSI가 50 위면 매수 힘 우세 (+1점) Else S2 = 0;}else if trendDirection < 0 Then // 슈퍼트렌드 하락 구간{ if R < 50 Then S2 = -1; // RSI가 50 아래면 매도 힘 우세 (-1점) Else S2 = 0;}else{ S2 = 0;}// 차트 시각화용 (기존 X 표시는 그대로 둡니다)if tp and trendDirection > 0 Then{ tx = Text_New(sDate,sTime,L,"X"); Text_SetStyle(tx,2,0); Text_SetColor(tx,Red); Text_SetSize(tx,20); Text_SetBold(tx,1);}if tp and trendDirection < 0 Then{ tx = Text_New(sDate,sTime,H,"X"); Text_SetStyle(tx,2,1); Text_SetColor(tx,Green); Text_SetSize(tx,20); Text_SetBold(tx,1);}if printedtp2 == 0 and extreme_tp2_dist < extreme_tp1_dist Then{ key2 = TL_new(sdate[1],stime[1],tp2, sDate,sTime, tp2); TL_SetColor(Key2,lvlCol); TL_SetSize(Key2,2); printedtp2 = 1;}Else{ if printedtp2 == 1 Then TL_SetEnd(key2,sDate,sTime,TP2);}if printedtp3 == 0 and extreme_tp3_dist < extreme_tp2_dist Then{ key3 = TL_new(sdate[1],stime[1],tp3, sDate,sTime, tp3); TL_SetColor(Key3,lvlCol); TL_SetSize(Key3,2); printedtp3 = 1;}Else{ if printedtp3 == 1 Then TL_SetEnd(key3,sDate,sTime,TP3);}if printedtp4 == 0 and extreme_tp4_dist < extreme_tp3_dist Then{ key4 = TL_new(sdate[1],stime[1],tp4, sDate,sTime, tp4); TL_SetColor(Key4,lvlCol); TL_SetSize(Key4,2); printedtp4 = 1;}Else{ if printedtp4 == 1 Then TL_SetEnd(key4,sDate,sTime,TP4);}if printedtp5 == 0 and extreme_tp5_dist < extreme_tp4_dist Then{ key5 = TL_new(sdate[1],stime[1],tp5, sDate,sTime, tp5); TL_SetColor(Key5,lvlCol); TL_SetSize(Key5,2); printedtp5 = 1;}Else{ if printedtp5 == 1 Then TL_SetEnd(key5,sDate,sTime,TP5);}if printedtp6 == 0 and extreme_tp6_dist < extreme_tp5_dist Then{ key6 = TL_new(sdate[1],stime[1],tp6, sDate,sTime, tp6); TL_SetColor(Key6,lvlCol); TL_SetSize(Key6,2); printedtp6 = 1;}Else{ if printedtp6 == 1 Then TL_SetEnd(key6,sDate,sTime,TP6);}if printedtp7 == 0 and extreme_tp7_dist < extreme_tp6_dist Then{ key7 = TL_new(sdate[1],stime[1],tp7, sDate,sTime, tp7); TL_SetColor(Key7,lvlCol); TL_SetSize(Key7,2); printedtp7 = 1;}Else{ if printedtp7 == 1 Then TL_SetEnd(key7,sDate,sTime,TP7);}// 1. 매수 진입: S2(순자RSI) + S3(표준슈트) 합이 2점일 때Condition1 = S2 + S3 == 2;Condition2 = S2 + S3 == -2;if MarketPosition <= 0 and Condition1 == true and Condition1[1] == False Then Buy("순자매수");// 2. 매수 청산: 합이 0 이하로 떨어지면 (힘 빠지면 탈출)if MarketPosition == 1 and (S2 + S3 <= 0) Then ExitLong("매수청산");// 3. 매도 진입: 합이 -2점일 때 (둘 다 하락 신호)if MarketPosition >= 0 and Condition2 == true and Condition2[1] == False Then Sell("순자매도");// 4. 매도 청산: 합이 0 이상으로 올라오면 (반등하면 탈출)if MarketPosition == -1 and (S2 + S3 >= 0) Then ExitShort("매도청산");SetStopProfittarget(PriceScale*익절틱수,PointStop);SetStopLoss(PriceScale*손절틱수,PointStop);수고많으십니다 문의드릴 내용은 위 수식에서진입이후 최고 수익에서 100틱을 반납하면청산하라는 수식을 추가 부탁드립니다 시뮬레이션 가능하게 위로 올려주시고청산후 바로 재진입 안하게 부탁드리겠습니다 감사합니다
2026-05-22
239
글번호 232134
수식 검토 및 수정요청
수고하십니다분봉에서 검색이 안됩니다1번검색식과 2번검색식을 각각 검토 후 수정 부탁드립니다### 1번 검색식 ###input : P1(20),P2(200),Period(100),DoD(1.03),데드구간봉수(5);input : 거래대금(10);//억단위var : vwap(0),vwma(0),mav1(0),mav2(0);var : mx(0),mn(0),T(0),T1(0),T2(0),deadbars(0);mav1 = ma(c,P1);mav2 = ma(c,P2);vwap = AccumN((H+L+C)/3 * V, Period) / AccumN(V, Period);vwma = AccumN(C * V, Period) / AccumN(V, Period);mx = max(vwap,vwma);mn = min(vwap,vwma);//조건1Condition1 = mav1 > mav2 and mav2 > mav2[1] andMoney >= 거래대금*100000000 andc >= DayClose(1)*DoD andc > DayOpen;#종가라 기준선중 큰값을 돌파하면if T <= 0 and CrossUp(c,mx) Then{T = 1; #T는 1#조건1을 만족했으면 T는 2if Condition1 == true ThenT = 2;T1 = T[1]; #T1는 직전구간(데드구간) T값T2 = T1[1]; #T1 전전구간(직전골드구간) T값#현재골드봉이고 직전데드구간은 -1로 끝났고 직전골드봉은 조건1이 만족if T1 == -1 and T2 == 2 and deadbars >= 데드구간봉수 ThenFind(1);}if T >= 0 and CrossDown(c,mn) Then{T = -1;T1 = T[1];T2 = T1[1];deadbars = 0;}Else{if T == -1 Thendeadbars = deadbars+1;#조건2체크 : 데드 구간에서 고가가 기준선 중 작은값보다 크거나 작은 봉이 하나라도 있으면 T는 -1에서 0if T == -1 and H >= mn ThenT = -2;}### 2번 검색식 ###/* [설정] 입력 변수 */Input : p1(20), p2(200), period(100), 상승률_n(1); Input : 거래대금_억(1); // 1 = 1억 원 기준Input : 최소횡보(5); // 돌파 직전 종가가 지표 아래 갇혀있어야 하는 최소 일수/* [변수 선언] */Var : m_vwap(0), m_vwma(0), 큰값(0);Var : ma1(0), ma2(0); Var : 당일상승률(0), 목표거래대금_원(0);/* 1. 일봉 AccumN 지표 계산 (사용자 지정 식 100% 유지) */m_vwap = AccumN((h+l+c)/3 * v, period) / AccumN(v, period);m_vwma = AccumN(c * v, period) / AccumN(v, period);큰값 = Max(m_vwap, m_vwma); // 돌파 기준선ma1 = ma(C, p1);ma2 = ma(C, p2);// 원 단위 거래대금 설정 및 정확한 전일 대비 상승률 계산목표거래대금_원 = 거래대금_억 * 100000000; 당일상승률 = (C - C[1]) / C[1] * 100;/* 2. 조건 검증 및 최종 검색 */// [조건 1] 20일선이 200일선 위에 있고, 200일선이 어제(1봉 전) 대비 확실히 우상향If ma1 > ma2 And ma2 > ma2[1] Then{ // [조건 2] 어제(1봉 전) 기준 과거 N봉 동안 종가가 항상 '큰값' 아래에 있었음 (횡보 완벽 검증) // 오늘 돌파한 봉을 제외하기 위해 CountIf 함수 전체에 [1] 인덱스를 부여 If CountIf(C < 큰값, 최소횡보)[1] == 최소횡보 Then { // [조건 3] 돌파 타점: 어제 종가(C[1])는 어제 큰값(큰값[1]) 이하 + 오늘 종가(C)는 오늘 큰값 초과 If C[1] <= 큰값[1] And C > 큰값 Then { // [조건 4] 당일 양봉 + 1억 원 단위 거래대금(M) + 상승률 조건 결합 If C > O And M >= 목표거래대금_원 And 당일상승률 >= 상승률_n Then { Find(1); } } }}
2026-05-21
213
글번호 232133
답변완료
문의드립니다.
안녕하세요. yeslanguage를 yesstock에서 불러서 거래 중인데,같은 식이 한쪽에서는 신호가 나오고 한 쪽에서는 나오지 않았습니다.서로 차트를 그리는 방식이 다른가요???이 종목 뿐만 아니라 여러 종목이 그렇게 거래가 됐습니다.확인 부탁드립니다.감사합니다.
2026-05-21
106
글번호 232130