커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

안녕하세요이평선기준 진입수식mav7200 > mav4800 and mav4800 > mav2400 and mav2400 < mav1200 진입이후 청산 수식( b2-2)을 필요합니다. var : cc61(0),cc62(0); if MarketPosition == 1 Then if mav4800 < mav2400 and mav2400[1] > mav2400 and mav1200[1] > mav1200 and mav600[1] > mav600 and mav300[1] > mav300 and mav300[1] > mav300 and mav150[1] > mav150 and mav2400 > mav150 and mav2400 > mav300 and mav1200 > mav600 and mav600 > mav300 and mav300 > mav150 hen { exitlong("b2-1",OnClose,def,"b2"); } Else if Index == crossDown(mav300,mav1200) Then cc61 = c; if Index == crossuP(mav300,mav1200) Then cc62 = c; if cc61 < cc62 and crossDown(mav150,mav300) Then { exitlong("b2-2",OnClose,def,"b2"); } Else { if mav7200 > mav4800 and mav4800 > mav2400 and mav2400 > mav1200 and mav7200[1] > mav7200 and mav4800[1] > mav4800 and mav2400[1] < mav2400 and mav1200[1] > mav1200 and mav600[1] > mav600 and mav300[1] > mav300 and mav150[1] > mav150 Then exitlong("b2-5",OnClose,def,"b2"); }위 수식에서 매수진입후 b2-2에 의거 진입 청산을 하려고 합니다.매수진입후 crossDown(mav300,mav1200) < crossuP(mav300,mav1200) and crossDown(mav150,mav300)에 진입청산하고자 합니다혹시 진입후 범위가 필요하면 범위는mav7200 > mav4800 and mav4800 > mav2400 and mav2400 < mav1200 로 하겠습니다.현재 수식이 맞아요.수식이 문제가 있으면 수정 부탁합니다.감사합니다.
프로필 이미지
남산
2026-07-30
236
글번호 233036
시스템
답변완료

종목 검색식 부탁드립니다.

1. 아래의 수식을 참고하여, 수식 1 ) 을 돌파하는 "양봉 몸통캔들" 종목 검색식 부탁드려요.2. 아래의 수식을 참고하여, 수식 1 ) 을 돌파하는 "양봉 몸통캔들" 0봉전~5봉전까지의 모든종목 검색식 부탁드려요.3. 아래의 수식을 참고하여, 수식 1 ) 을 돌파하는 "양봉 몸통캔들" 이 , 0-10봉전 안에서 "처음으로 양봉 몸통돌파" 할때 ( 직전까지는 돌파 못하다가) 모든종목 검색식 부탁드려요.-아래-수식1 ) M=floor(date/80);CC=sum(C);월S=countsince(M!=M(1), C>0);월C=CC-valuewhen(1,M!=M(1),CC(1));월평종가=월C/월S;수식 2)M=floor(date/80);CC=sum(O);월S=countsince(M!=M(1), C>0);월C=CC-valuewhen(1,M!=M(1),CC(1));월평시가=월C/월S;수식 3)MO=floor(date/80);MO1=MO%80;월봉시가=VALUEWHEN(1, MO1!=MO1(1),O);
프로필 이미지
일지매7
2026-07-30
201
글번호 233034
종목검색
답변완료

수고하십니다

항상 좋은 일만 있으시기 바랍니다아래수식 중 각라인의 색상이변하지 않으니 바로 잡아 주세요/var : HH(0),LL(0),OO(0),DD(0),TT(0),TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),TL9(0),TL18(0),TL19(0); if Bdate > Bdate[1]+1000 Then{ oo = o; HH = H; LL = L; Var1=(OO+HH)/2; Var2=(OO+LL)/2; Var3=((OO+HH)/2+(OO+LL)/2)/2; Var4=(OO+HH)/2+((oo+HH)/2-(OO+LL)/2); Var5=(OO+LL)/2-((oo+HH)/2-(OO+LL)/2); DD = Bdate; TT = sTime; TL3 = TL_New(sDate,sTime,((OO+HH)/2+(OO+LL)/2)/2,NextBarSdate,NextBarStime,((OO+HH)/2+(OO+LL)/2)/2); TL4 = TL_New(sDate,sTime,(OO+HH)/2,NextBarSdate,NextBarStime,(OO+HH)/2); TL5 = TL_New(sDate,sTime,(OO+LL)/2,NextBarSdate,NextBarStime,(OO+LL)/2); TL7 = TL_New(sDate,sTime,(OO+HH)/2+((OO+HH)/2-(OO+LL)/2)/2,NextBarSdate,NextBarStime,(OO+HH)/2+((OO+HH)/2-(OO+LL)/2)/2); TL8 = TL_New(sDate,sTime,(OO+LL)/2-((OO+HH)/2-(OO+LL)/2)/2,NextBarSdate,NextBarStime,(OO+LL)/2-((OO+HH)/2-(OO+LL)/2)/2);}Else{ if HH > 0 and H > HH Then HH = H; if LL > 0 and L < LL Then LL = L; TL_SetBegin(TL3,DD,TT,((OO+HH)/2+(OO+LL)/2)/2); TL_SetBegin(TL4,DD,TT,(OO+HH)/2); TL_SetBegin(TL5,DD,TT,(OO+LL)/2); TL_SetBegin(TL7,DD,TT,(OO+HH)/2+((OO+HH)/2-(OO+LL)/2)/2); TL_SetBegin(TL8,DD,TT,(OO+LL)/2-((OO+HH)/2-(OO+LL)/2)/2); TL_SetEnd(TL3,sDate,sTime,((OO+HH)/2+(OO+LL)/2)/2); TL_SetEnd(TL4,sDate,sTime,(OO+HH)/2); TL_SetEnd(TL5,sDate,sTime,(OO+LL)/2); TL_SetEnd(TL7,sDate,sTime,(OO+HH)/2+((OO+HH)/2-(OO+LL)/2)/2); TL_SetEnd(TL8,sDate,sTime,(OO+LL)/2-((OO+HH)/2-(OO+LL)/2)/2); }############################################## if Var1 < C Then TL_SetColor(TL4,RED); Else TL_SetColor(TL4,BLUE); if Var2 < C Then TL_SetColor(TL5,RED); Else TL_SetColor(TL5,BLUE); if var3 < C Then TL_SetColor(TL3,RED); Else TL_SetColor(TL3,BLUE); if Var4 < C Then TL_SetColor(TL7,RED); Else TL_SetColor(TL7,BLUE); if var5 < C Then TL_SetColor(TL8,RED); Else TL_SetColor(TL8,BLUE);
프로필 이미지
2wnwn
2026-07-30
193
글번호 233028
지표
답변완료

키움수식 변환_sto매수/ 웨이브트렌드매수

아래 키움지표식을 시스템식으로 변환해주시기 바랍니다1.<웨이브트렌드3선 매수 신호 화살표>ap = (HIGH+LOW+CLOSE)/3;esa = eavg(ap, 10);esa1 = eavg(ap, 15);esa2 = eavg(ap, 33);d = eavg(abs(ap - esa), 10);d1 = eavg(abs(ap - esa1), 15);d2 = eavg(abs(ap - esa2), 33);ci = (ap - esa) / (0.015 * d);ci1 = (ap - esa1) / (0.015 * d1);ci2 = (ap - esa2) / (0.015 * d2);wt1 = eavg(ci,21);wt3 = eavg(ci1,33);wt5 = eavg(ci2,52);WT1(1)<20 AND WT3(1)<20 AND WT5(1)<20 AND CROSSUP(WT1,20)++++++++++++++++++++++++++++++++++++++++++++++++++++2.<스토3선 매수 신호 화살표>A=Sum(C-lowest(L,9),9)/Sum((highest(H,9)-lowest(L,9)),9)*100;A1=Sum(C-lowest(L,17),9)/Sum((highest(H,17)-lowest(L,17)),9)*100;A2=Sum(C-lowest(L,26),9)/Sum((highest(H,26)-lowest(L,26)),9)*100;A(1)<20 AND A1(1)<20 AND A2(1)<20 AND CROSSUP(A,20)+++++++++++++++++++++++++++++++++++++++++++++++++++++감사합니다
프로필 이미지
조민철
2026-07-30
536
글번호 233027
시스템
답변완료

키움지표 변환_저점매수_ (WTL+STO+가격박스+극한공포 수렴)

아래 키움수식을 지표식으로 변환해주시기 바랍니다1.저점매수_ (WTL+STO+가격박스+극한공포 수렴)매수신호발생시 +1 로 표시베이스라인 :0++++++++++++++++++++++++++++++++++++++++A = EAVG(C,기간7);A1= A+AvgIf(C- A,-1,0.0)-2*StdevIf(C-A,-1,0.0);A2=EAVG(L,기간7);B= EAVG(C, 기간8);B1=B+AvgIf(C-B,-1,0.0) - 2 * StdevIf(C-B,-1,0.0);B2=eavg(L,기간7);ap=(HIGH+LOW+CLOSE)/3;esa=eavg(ap, 기간1);d=eavg(abs(ap - esa), 기간1);ci=(ap - esa) / (0.015 * d);wt1=eavg(ci,기간2);E1=Sum(C-lowest(L,9),S기간)/Sum((highest(H,9)-lowest(L,9)),S기간)*100;E2=Sum(C-lowest(L,17),S기간)/Sum((highest(H,17)-lowest(L,17)),S기간)*100;E3= Sum(C-lowest(L,26),S기간)/Sum((highest(H,26)-lowest(L,26)),S기간)*100;wvf=((highest(C,22)-low)/highest(C,22))*100;sDev=2.0*stdev(wvf,20);midLine=avg(wvf,20);upperBand=midLine+sDev;rangeHigh=(highest(wvf, 50))*ph;wt1<=-53&&((E1<=20 and E2<=20 and E3<=20)or(E1(1)<=20 and E2(1)<=20 and E3(1)<=20))&&(CrossDown(L,A1) or CrossDown(L,B1) or CrossUp(H,A1) or CrossUp(H,B1)) && (L < A1(1)*0.99 or L < A1(2)*1.02 orL< B1(1)*0.99 or L<B1(2)*1.02) && if(wvf >= upperBand or wvf >= rangeHigh, -wvf, 0);지표설정 - 기간1: 10 / 기간2: 21 /기간3 : 15 / 기간4: 33 / 기간5: 52 / 기간 7: 224 / 기간8:448 / S기간:9 / ph:0.85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++2.가격박스 지표2-1.<가격박스 상단 밴드>제목 : 가격박스상단(일목균형표)음영 수식은 수식4와 수식5에 들어갑니다.제목에 반드시 "일목균형표"가 들어가야합니다.수식4와 수식5에 음영이 들어가는 수식을 넣어야 합니다.(수식1) 120이평EAVG(C,120)(수식4) %가격1%A = MA( C, 가격1, 지수 );A + AvgIf( C - A, 1, 0.0 )+ 2 * StdevIf( C - A, 1, 0.0 )(수식5) %가격2%A = MA( C, 가격2, 지수 );A + AvgIf( C - A, 1, 0.0 )+ 2 * StdevIf( C - A, 1, 0.0 )- 지표조건설정가격1 : 224가격2 : 448================================================================2-2.<가격박스 하단 밴드>제목 : 가격박스하단(일목균형표)반드시 "일목균형표"가 들어가야합니다.음영 수식은 수식4와 수식5에 들어갑니다.(수식4) %가격1%A = MA( C, 가격1, 지수 );A + AvgIf( C - A, -1, 0.0 )- 2 * StdevIf( C - A, -1, 0.0 )(수식5) %가격2%A = MA( C, 가격2, 지수 );A + AvgIf( C - A, -1, 0.0 )- 2 * StdevIf( C - A, -1, 0.0 )- 지표조건설정가격1 :224가격2 : 448================================================================2-3.<가격박스 중단 밴드>제목 : 가격박스중단(일목균형표)반드시 "일목균형표"가 들어가야합니다.음영 수식은 수식4와 수식5에 들어갑니다.(수식4) %가격1%A = MA( C, 가격1, 지수 );(수식5) %가격2%A = MA( C, 가격2, 지수 );- 지표조건설정가격1 : 224가격2 : 448+++++++++++++++++++++++++++++++++++++++++++++++++++++++감사합니다
프로필 이미지
조민철
2026-07-29
1014
글번호 233026
지표
답변완료

지표 도움을 요청합니다.

안녕하세요?아래 거래량 수식에 이동평균선 5, 10, 20선을 넣을 수 있도록 부탁드려봅니다.감사합니다.====================================input : R(0),G(0),B(0);var : SC(0),SCV(0),sum(0),hh(0),ll(0),SCV1(0);SC = (C-O)/(H-L);SCV = SC*v; if Bdate != Bdate[1] Then{ sum = SCV; HH = sum; LL = sum; SCV1 = SCV;}else{ sum = sum + SCV; if hh > sum Then hh = sum; if ll < sum Then ll = sum;} if CurrentDate == sDate Then{ plot1(sum,"vs"); Plot2(HH,"최고"); Plot3(HH-(HH-LL)*0.25,"25%"); Plot4(HH-(HH-LL)*0.618,"61.8%"); Plot5(HH-(HH-LL)*0.5,"50.0%"); Plot6(HH-(HH-LL)*0.382,"38.2%"); Plot7(HH-(HH-LL)*0.75,"75%"); Plot8(LL,"최저"); Plot10(sum+150,"sum+250"); Plot11(sum-150,"sum-250"); Plot12(HH-(HH-LL)*0.125,"12.5%"); Plot13(HH-(HH-LL)*0.875,"87.5%"); plot14(SCV1+100,"첫봉종가+100"); plot15(sum+05,"vs2",Rgb(R,G,B)); Plot16(HH-(HH-LL)*0.253,"26%"); Plot17(HH-(HH-LL)*0.753,"76%"); plot9(SCV1,"첫봉종가"); plot18(SCV1+100,"첫봉종가+100"); plot19(SCV1-100,"첫봉종가-100"); Plot20(HH-(HH-LL)*0.48,"49.5%"); Plot21(HH-(HH-LL)*0.51,"50.5%"); Plot22(HH-(HH-LL)*0.503,"50.3%"); Plot23(HH-(HH-LL)*0.497,"49.7%"); Plot24(HH+80,"최고+50"); Plot25(LL-80,"최저-50"); plot26(sum+200,"vs+200"); plot27(sum-200,"vs-200"); PlotBaseLine2(40,"기준라인+40"); PlotBaseLine3(-40,"기준라인-40");} PlotBaseLine1(0,"기준라인 0"); PlotBaseLine4(500,"기준라인+500"); PlotBaseLine5(-500,"기준라인-500");
프로필 이미지
포보스
2026-07-29
498
글번호 233015
지표
답변완료

수식을 수정부탁드립니다.

// 요청: 최초 제공하신 수식을 현재 수정된 재진입 판단 로직으로 변환// 전략식(modified): 최초 수식 구조 유지 + 엄밀한 재진입 판단(시도가격/완료체결가 보정 포함)Input : StartDate(20260728); // 매매 시작일 (YYYYMMDD)Var : Use200MAFilter(1); // 200일 MA 필터 사용 여부: 1=적용, 0=미적용Var : MAFilterLen(200); // 필터용 이동평균 기간Var : ShortLen(6), LongLen(20), StopLossTicks(0), ProfitTargetTicks(0);Var : TotalTaxPercent(0.315); // 세금/수수료 합계(%)var : maShort(0), maLong(0), maFilter(0);var : requiredPct(0);// 추가 변수: 완료체결가 및 시도가격 추적Var : LastLongCompletedFillPrice(0), LastShortCompletedFillPrice(0);Var : LastLongAttemptPrice(0), LastShortAttemptPrice(0);Var : LastReservedPrice(0), LastReservedType("");Var : prevTotalTrades(0), prevMarketPos(0);// 이동평균 계산maShort = MA(C, ShortLen);maLong = MA(C, LongLen);maFilter = MA(C, MAFilterLen); // 필터용 이동평균// 필요한 최소 세후 수익률requiredPct = TotalTaxPercent + 0.5; // 백분율 기준// 이전 봉 상태prevTotalTrades = TotalTrades[1];prevMarketPos = MarketPosition[1];// 완료거래 감지 및 체결가 보정If TotalTrades > prevTotalTrades Then{ Var : estimatedFill(0); estimatedFill = EntryPrice(1); If LastReservedType == "ATSTOP" Then { If prevMarketPos <= 0 And MarketPosition == 1 Then estimatedFill = max(LastReservedPrice, NextBarOpen); Else If prevMarketPos >= 0 And MarketPosition == -1 Then estimatedFill = min(LastReservedPrice, NextBarOpen); } Else If LastReservedType == "ATLIMIT" Then { If prevMarketPos <= 0 And MarketPosition == 1 Then estimatedFill = min(LastReservedPrice, NextBarOpen); Else If prevMarketPos >= 0 And MarketPosition == -1 Then estimatedFill = max(LastReservedPrice, NextBarOpen); } If prevMarketPos <= 0 And MarketPosition == 1 Then LastLongCompletedFillPrice = estimatedFill; Else If prevMarketPos >= 0 And MarketPosition == -1 Then LastShortCompletedFillPrice = estimatedFill; Else { If MarketPosition == 1 Then LastLongCompletedFillPrice = EntryPrice(1); Else If MarketPosition == -1 Then LastShortCompletedFillPrice = EntryPrice(1); } // 완료 시도 초기화 If prevMarketPos <= 0 And MarketPosition == 1 Then LastLongAttemptPrice = 0; If prevMarketPos >= 0 And MarketPosition == -1 Then LastShortAttemptPrice = 0; LastReservedPrice = 0; LastReservedType = "";}// 매수진입 (원본 로직 유지: Bdate 조건 및 MA필터) - 재진입 판단만 강화If Bdate >= StartDate And CrossUp(maShort, maLong) Then{ If (Use200MAFilter == 0 Or C > maFilter) Then { Var : comparePrice(0); comparePrice = 0; If LastLongAttemptPrice > 0 Then comparePrice = LastLongAttemptPrice; Else If LastLongCompletedFillPrice > 0 Then comparePrice = LastLongCompletedFillPrice; If MarketPosition == 0 Or (MarketPosition == 1 And (comparePrice == 0 Or C < comparePrice)) Then { Buy("매수", onclose, Def); // 시도가격 기록(피라미딩 비교용) LastLongAttemptPrice = C; } }}// 롱포지션 청산 (원본 로직 유지, requiredPct 적용)If Bdate >= StartDate And MarketPosition == 1 And CrossDown(maShort, maLong) And C >= AvgEntryPrice*(1+(requiredPct)/100) Then ExitLong("매수청산", onclose, Def);// 매도진입 (원본 로직 유지) - 재진입 판단 강화If Bdate >= StartDate And CrossDown(maShort, maLong) Then{ If (Use200MAFilter == 0 Or C < maFilter) Then { Var : comparePriceS(0); comparePriceS = 0; If LastShortAttemptPrice > 0 Then comparePriceS = LastShortAttemptPrice; Else If LastShortCompletedFillPrice > 0 Then comparePriceS = LastShortCompletedFillPrice; If MarketPosition == 0 Or (MarketPosition == -1 And (comparePriceS == 0 Or C > comparePriceS)) Then { Sell("매도", onclose, Def); LastShortAttemptPrice = C; } }}// 숏포지션 청산If Bdate >= StartDate And MarketPosition == -1 And CrossUp(maShort, maLong) And C <= AvgEntryPrice*(1-(requiredPct)/100) Then ExitShort("매도청산", onclose, Def);// 포지션 완전청산 시 시도기록 초기화If MarketPosition == 0 And prevMarketPos != 0 Then{ LastLongAttemptPrice = 0; LastShortAttemptPrice = 0;}위 수식에서 당일 매수/재진입/청산이 이루어지고 다음날에는 청산신호 전까지만 이루어지고 청산이 되면 이후 매수신호가 나오지 않도록 부탁드립니다. 예스나와 한참을 해도 수정이 되지 않아 부탁드립니다.
프로필 이미지
하리마우
2026-07-29
899
글번호 233014
시스템
답변완료

알림창에 대해서 문의드립니다.

안녕하세요그래프 창을 띄워놓고 있으면은 우측 하단부분에 "파생시장 상하한가 예고" 라는 작은 알림창이 계속 뜹니다.뜨지않게 하는 방법은 없는지요?
프로필 이미지
뭐이런걸다
2026-07-29
245
글번호 233013
검색

선물에서 난 신호로 옵션에 적용

선물에서 난 신호를 지정한 옵션 가격에 매매하려면 어떻게 해야하나요?
프로필 이미지
sambuck
2026-07-29
149
글번호 233010
시스템