커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1487
글번호 230811
답변완료
지표작성 부탁드립니다.
안녕하세요. 운영자님예스나AI 로 Fair Value Gap 과 Order Block 을 표시하는 지표를 만들었는데 차트에 적용시켜 보면 나타나지 않습니다.검토 부탁드립니다.// FairValueGap & OrderBlock 표시 지표// 제목: FVG & OrderBlockinput : Lookback(50), FVGMinSize(0.5), OBStrengthThreshold(2);Array : BoxId[50](0);Var : i(0), j(0), k(0);Var : fvgTop(0), fvgBottom(0), fvgHeight(0), fvgTop2(0), fvgBottom2(0), fvgH2(0);Var : bodySize(0), avgBody(0), obTop(0), obBottom(0);// 초기 인덱스 카운트j = 0;For i = 1 To Lookback{ // Fair Value Gap (3-bar 패턴) // 상승 FVG 조건: Low[i-1] > High[i+1] fvgTop = Low[i-1]; fvgBottom = High[i+1]; fvgHeight = fvgTop - fvgBottom; If fvgHeight >= FVGMinSize Then { BoxId[j] = Box_New(sDate[Index - i + 1], sTime[Index - i + 1], fvgTop, sDate[Index - i - 1], sTime[Index - i - 1], fvgBottom); Box_SetColor(BoxId[j], Cyan); j = j + 1; if j >= 50 Then j = 0; } // 반대 방향 FVG (하락) fvgTop2 = Low[i+1]; fvgBottom2 = High[i-1]; fvgH2 = fvgTop2 - fvgBottom2; If fvgH2 >= FVGMinSize Then { BoxId[j] = Box_New(sDate[Index - i - 1], sTime[Index - i - 1], fvgTop2, sDate[Index - i + 1], sTime[Index - i + 1], fvgBottom2); Box_SetColor(BoxId[j], Cyan); j = j + 1; if j >= 50 Then j = 0; } // Order Block 탐지: 현재 바디가 최근 10봉 평균 바디의 OBStrengthThreshold 배 이상이면 OB로 간주 bodySize = Abs(C[i] - O[i]); avgBody = 0; For k = 1 To 10 { avgBody = avgBody + Abs(C[k] - O[k]); } avgBody = avgBody / 10; If avgBody > 0 And bodySize >= avgBody * OBStrengthThreshold Then { obTop = Max(O[i], C[i]); obBottom = Min(O[i], C[i]); BoxId[j] = Box_New(sDate[Index - i], sTime[Index - i], obTop, sDate[Index - i], sTime[Index - i], obBottom); If C[i] < O[i] Then Box_SetColor(BoxId[j], Red); Else Box_SetColor(BoxId[j], Lime); j = j + 1; if j >= 50 Then j = 0; }}// 지표용 기준선 없음, 박스만 표시
2026-03-01
160
글번호 230816
답변완료
지표작성 부탁드립니다.
안녕하세요. 운영자님AI 서비스로 지표를 만들고 있는데 해결되지 않는 문제가 있습니다.제가 구현하고 싶은 바는 현재봉(그림에서 음봉 도지캔들)의 바로 이전 캔들(직전봉)의 고가, 저가, 시가, 종가, (고가+저가)/2, (시가+종가)/2 되는 지점에 선을 그어주는 지표를 만들고 싶습니다. AI로 작성 시 현재캔들 기준 전전캔들에 만들어 지고 있습니다.오류 수정 부탁 드립니다. 그리고 새로운 캔들이 발생 시 자동적으로 직전캔들에 새로운 선이 그어질 수 있도록 부탁 드립니다.수고하세요// 제목: 직전캔들 기준 수평선 표시 지표// 직전봉의 고가, 저가, 시가, 종가, (고+저)/2, (시+종)/2에 수평선 생성Input : LineColor(1); //색상 인덱스(숫자형)Var : prevH(0), prevL(0), prevO(0), prevC(0), prevMidHL(0), prevMidOC(0); //직전봉 가격값Var : TL_H(0), TL_L(0), TL_O(0), TL_C(0), TL_MHL(0), TL_MOC(0); //추세선 아이디If CurrentBar > 1 Then{ // 직전봉 가격 계산 prevH = High[1]; prevL = Low[1]; prevO = Open[1]; prevC = Close[1]; prevMidHL = (prevH + prevL) / 2; prevMidOC = (prevO + prevC) / 2; // 이전에 만들어둔 라인이 있으면 삭제 If TL_H > 0 Then TL_Delete(TL_H); If TL_L > 0 Then TL_Delete(TL_L); If TL_O > 0 Then TL_Delete(TL_O); If TL_C > 0 Then TL_Delete(TL_C); If TL_MHL > 0 Then TL_Delete(TL_MHL); If TL_MOC > 0 Then TL_Delete(TL_MOC); // 직전봉의 날짜/시간에서 다음봉 시가의 날짜/시간까지 수평선 생성 TL_H = TL_New(sDate[1], sTime[1], prevH, NextBarSdate, NextBarStime, prevH); TL_SetColor(TL_H, LineColor); TL_SetStyle(TL_H, 1); TL_SetExtRight(TL_H, True); TL_L = TL_New(sDate[1], sTime[1], prevL, NextBarSdate, NextBarStime, prevL); TL_SetColor(TL_L, LineColor); TL_SetStyle(TL_L, 1); TL_SetExtRight(TL_L, True); TL_O = TL_New(sDate[1], sTime[1], prevO, NextBarSdate, NextBarStime, prevO); TL_SetColor(TL_O, LineColor); TL_SetStyle(TL_O, 2); TL_SetExtRight(TL_O, True); TL_C = TL_New(sDate[1], sTime[1], prevC, NextBarSdate, NextBarStime, prevC); TL_SetColor(TL_C, LineColor); TL_SetStyle(TL_C, 2); TL_SetExtRight(TL_C, True); TL_MHL = TL_New(sDate[1], sTime[1], prevMidHL, NextBarSdate, NextBarStime, prevMidHL); TL_SetColor(TL_MHL, LineColor); TL_SetStyle(TL_MHL, 3); TL_SetExtRight(TL_MHL, True); TL_MOC = TL_New(sDate[1], sTime[1], prevMidOC, NextBarSdate, NextBarStime, prevMidOC); TL_SetColor(TL_MOC, LineColor); TL_SetStyle(TL_MOC, 3); TL_SetExtRight(TL_MOC, True);}
2026-03-01
92
글번호 230815
답변완료
수식작성 부탁드립니다.
운영자님이번에 부탁드릴 사항은매수진입/청산 : 현재봉이 하락(음봉)하다가 상승반전하여 현재봉의 시초가를 상승돌파 시 (양봉으로 변할려고 하는 시점) 매수진입하고 n틱 수익 또는 m틱 손실 시 청산매도진입/청산 : 현재봉이 상승(양봉)하다가 하락반전하여 현재봉의 시초가를 하락돌파 시 (음봉으로 변할려고 하는 시점) 매도진입하고 n틱 수익 또는 m틱 손실 시 청산추가요청사항1) 진입 시 X틱씩 수익 시 Y틱씩 손절가를 올릴거나 내릴 수 있도록 추적손절매 기능을 추가2) 진입 신호가 A번째 발생 시 실제 진입 (왜냐하면 시초가를 여러번 터치하는 경우가 많기 때문에 몇번째 터치 시 진입하는 것이 가장 이상적인지 통계를 위해서) 감사합니다.
2026-03-01
87
글번호 230814
답변완료
수식 문의
안녕하세요?VWAP 지표 수식 부탁드립니다.input: Anchor(0);Anchor == 0 => 매일 갱신Anchor == 1 => 매주 갱신Anchor == 2 => 매월 갱신Anchor == 3 => 매분기 갱신Anchor == 4 => 매년 갱신감사합니다.
2026-02-28
604
글번호 230813
답변완료
청산수식 수정
아래 수식은 4개 까지 피라미딩하는 수식입니다.문제점청산수식이 진입명대로 작동하지 않습니다.b1 진입시 손절과 트레일링스탑b2 진입시 손절과 트레일링스탑b3 진입시 손절과 트레일링스탑b4 진입시 손절과 트레일링스탑위 내용이 구분되어 작동될 수 있도록 청산수식 수정바랍니다.항상 고맙습니다.**********************************************************************************************************************// Data2 기반 피라미딩 전략 (개선된 청산명 식별)Input : MaxPyramids(4), 양봉1(7), 양봉2(3);input : als(500),atr(1000);input : bls(1000),btr(1500);input : cls(1500),ctr(2000);input : dls(2000),dtr(2500);input : eod(151900);Var : entryCount(0), bullCount(0), b1Placed(false);Var : lastEntryName(""); // 마지막 진입명 저장// 새 영업일 초기화If data2(Bdate) != data2(Bdate[1]) Then{ entryCount = 0; bullCount = 0; b1Placed = False; lastEntryName = "";}// 1) 초회 진입: data1와 data2 영업일 같고 data2 첫 양봉일 때If MarketPosition == 0 And data1(Bdate) == data2(Bdate) And b1Placed == False And data2(C) > data2(O) Then{ Buy("b1", onclose, Def); entryCount = 1; bullCount = 0; b1Placed = True; lastEntryName = "b1";}// 2) 피라미딩 로직 (최대 MaxPyramids)If MarketPosition >= 1 Then{ // data2 양봉/음봉 카운트 업데이트 If data2(C) > data2(O) Then bullCount = bullCount + 1; // 음봉 발생 시 다음 진입 조건 확인 If data2(C) < data2(O) Then { // 두번째 진입: b1 진입 이후 첫 음봉 If entryCount == 1 And entryCount < MaxPyramids Then { Buy("b2", onclose, Def); entryCount = 2; bullCount = 0; lastEntryName = "b2"; } // 세번째 진입: 두번째 진입 후 양봉 양에 따른 진입 Else If entryCount == 2 And entryCount < MaxPyramids And bullCount >= 양봉1 Then { Buy("b3", onclose, Def); entryCount = 3; bullCount = 0; lastEntryName = "b3"; } // 네번째 진입: 세번째 진입 후 양봉 양에 따른 진입 Else If entryCount == 3 And entryCount < MaxPyramids And bullCount >= 양봉2 Then { Buy("b4", onclose, Def); entryCount = 4; bullCount = 0; lastEntryName = "b4"; } }}// 포지션이 없으면 lastEntryName 초기화If MarketPosition == 0 Then lastEntryName = "";// 청산(스탑) 설정: 마지막 진입명을 기준으로 적용If MarketPosition == 1 Then{ If lastEntryName == "b1" Then { SetStopLoss(als,PointStop); SetStopTrailing(atr,0,PointStop,1); } Else If lastEntryName == "b2" Then { SetStopLoss(bls,PointStop); SetStopTrailing(btr,0,PointStop,1); } Else If lastEntryName == "b3" Then { SetStopLoss(cls,PointStop); SetStopTrailing(ctr,0,PointStop,1); } Else If lastEntryName == "b4" Then { SetStopLoss(dls,PointStop); SetStopTrailing(dtr,0,PointStop,1); } Else { SetStopLoss(0); SetStopTrailing(0,0); }}// 당일 종료(오후 eod에 강제 청산)SetStopEndofday(eod);
2026-02-28
639
글번호 230812
답변완료
수수식문의드립니댜
c>수식라인1 and c>수식라인2 and c>수식라인3 을 만족하는 종목을 검색?<수식라인1>지수평균((lowest(종가,5)+lowest(종가,20))/2.,20) +if(종가<시가,1-(( 시가-종가) / lowest ((종가-시가),20 )),1 )*0.5 *stdev((저가+고가+종가)/3,20)<수식라인2>A1 = ((High+Close)/2)*Volume;A2 = SUM(A1,20);A3 = SUM(Volume,20);Shift(Highest((A2/A3),20),25) <수식라인3>//기간은 5 K는2M = BBandsUP(30, 1.8);LL = Lowest(M, 기간);HH = Highest(M, 기간);NL = Valuewhen(1,M<LL(1),M);Valuewhen(1,BarsSince(M<LL(1))==(기간-k),NL)
2026-02-27
682
글번호 230808
답변완료
문의 드립니다.
인녕하세요 평소 많은 도움 주심에 감사드립니다. 아래의 라인1 이 라인2를 돌파하는 종목의 검색식을 부탁 드립니다. 라인1.A=LinearRegressionValue(C,50,0);A1=LinearRegressionValue(A,20,0);eq= A-A1;zlsma =A+eq라인2.UP3 = SMEMA + STEP*3;참고:SMEMA = avg(eavg(c, 10), 10);STEP = avg(EMA_HL, 100);EMA_HL = eavg(HL_RANGE, 100);HL_RANGE = h - l;감사합니다.
2026-02-27
398
글번호 230807
답변완료
문의드립니다
텍스트표시 좀해주세요If Score > Score[1] Then SetPlotColor(1, Red); Else If Score < Score[1] Then SetPlotColor(1, Blue);
2026-02-27
72
글번호 230806
답변완료
수식 부탁드립니다
다음 수식 변환 부탁드립니다A=Disparity(20);A1=ValueWhen(1,CrossUp(A,100) or CrossDown(A,100),(H+L)/2);갱신 = H > Highest(H(1), 5-1);기준고 = Valuewhen(1, 갱신, H);상단 = Valuewhen(1, BarsSince(갱신)==(5-2), 기준고);R1=RSI(7);R2=R1/avg(A,7)*100;CrossUp(C,상단) 감사합니다
2026-02-27
101
글번호 230805