커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3363
글번호 230811
답변완료
검색식과 종목검색식 부탁 드립니다
아래와 조건으로 검색식과 종목 검색식 가능할까요?최근 5일의 15%(변수) 이상의 양봉이 발생한 이후 거래량이 급감(변수)한 몸통이 짧은 음봉인 종목의 검색식과 종목검색식 부탁드립니다
2025-11-13
178
글번호 227993
답변완료
시스템 작동 관련
input : 이평1(60);input : 윌리엄스R기간값(30);input : 손절틱수(300),청산틱수(300);var : mav1(0),WR(0);MAV1 = MA(c,이평1);WR = WILLR(윌리엄스R기간값);if TotalTrades > TotalTrades and IsExitName("StopLoss",1) ==true Then Condition2 = False;if Condition1 == true Then{ if CrossDown(WR, -20) Then Sell("s");if MarketPosition == -1 Then{ if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*청산틱수 Then if CrossUp(C,mav1) Then ExitShort("sx"); }SetStopLoss(PriceScale*손절틱수,PointStop);}이렇게 수식을 바꾸어도 진입이 안됩니다.시물레이션에서는 잘 나옵니다..
2025-11-13
150
글번호 227992
답변완료
시스템 진입 관령
input : 시작일(20250701),시작시간(090000);input : 이평1(60),이평2(60),이평3(240);input : 윌리엄스R기간값(12);input : 손절틱수(350),트레일링스탑틱수(100),목표틱수(300),청산틱수(300);var : mav1(0),mav2(0),mav3(0),WR(0);if Bdate >= 시작일 and sTime >= 시작시간 Then Condition1 = true; Condition2 = true;MAV1 = MA(c,이평1); MAV2 = MA(c,이평2);MAV3 = MA(c,이평3);WR = WILLR(윌리엄스R기간값);if TotalTrades > TotalTrades and IsExitName("StopLoss",1) ==true Then Condition2 = False;if Condition1 == true Then{ if MarketPosition == 0 and c < mav3 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"); }if MarketPosition == -1 Then{ if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*목표틱수 Then ExitShort("str",AtStop,EntryPrice-PriceScale*트레일링스탑틱수); }SetStopLoss(PriceScale*손절틱수,PointStop);}위의 수식으로 어제는 잘 작동이 되었는데.. 새벽시간 3시 이 후에 하려고 하니..시작날짜와 시작시간을 맞추고 해도..신호가 발생되지를 않습니다.즉 자동 진입이 되지를 않아요..
2025-11-13
174
글번호 227991
답변완료
시스템 작동 관련
input : 시작일(20251113),시작시간(090000); Input : Period(14); Var : value(0); value = WILLR(Period); if Bdate >= 시작일 and sTime >= 시작시간 Then Condition1 = true; Condition2 = true; # 매수/매도청산 If CrossUP(value, -80) Then { Buy(); } # 매도/매수청산 If CrossDown(value, -20) Then { Sell(); } 이 수식으로 시스템을 하면은 시작일과 시간을 트레이딩 시작 하기전 신호가 나오지 않아야 되는데.. 이전 신호도 나옵니다..해외선물 거래입니다..nh 선물에서 하고요..
2025-11-13
208
글번호 227990
답변완료
문의
sell 수식에서 익절 발생 후 그 이후 진입은 익절가보다 낮은 가격에서 진입하도록 수식을 수정했는데...익절가 발생 후 부터는 아예 진입을 하지 않는 수식이 되었습니다.살펴주십시요.첨부파일 1은 기존 수식 결과첨부파일 2는 수정 수식 결과***************************************************************************************************************************input : 최대(999999),최소(550);input : 진입시간(084700),진입제한시간(142400); input : 거래횟수(20),누적패수(5),연속패수(2),누적패수조정(2),bigdown(15.00),조정거래횟수(7),조정진입제한시간(113000); input : b1(50),진입눌림1(5),진입돌파1(0),X1(999999),청산눌림1(0),청산돌파1(0);input : 경과봉(0),b2(150),진입눌림2(5),진입돌파2(0),X2(999999),청산눌림2(0),청산돌파2(0);input : als(40),atr1(0),atr2(135);input : bls(130),btr1(0),btr2(182);input : s1lock(120000),익절가1(8);input : s2lock(115000),익절가2(4.9);input : 만기청산시간1(144500),만기외청산시간1(150000);input : 만기청산시간2(150000),만기외청산시간2(142400);var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);Var : 당일거래횟수(0),진입끝시간(0),bigdownCond(False);var : Tcond(false);var : loss(0),consecLoss(0),패수(0),익절가(0);//영업일변경if bdate != bdate[1] Then{ //손실횟수 초기화 0 loss = 0; //연속손실횟수 초기화 0 consecLoss = 0; //패수는 누적패수 패수 = 누적패수; //익절1이나 익절2가 발생하면 청산가격 저장할 변수 익절가 = 0;}//청산발생if TotalTrades > TotalTrades[1] Then{ //손실이면 if PositionProfit(1) < 0 Then { //loss 1씩 증가 loss = loss+1; //consecLoss 1씩 증가 consecLoss = consecLoss+1; //consecLoss이 3이면 패수를 누적패수에서 누적패수조정으로 변경 if consecLoss == 연속패수 Then { 패수 = 누적패수조정; } } Else //손실이 아니면 consecLoss으로 초기화 consecLoss = 0; //청산으로 익절1이나 익절2이면 익절가에 청산가격 저장 if IsExitName("익절1",1) == true or IsExitName("익절2",1) == true Then 익절가 = ExitPrice(1); Else // 아니면 익절가 = 0; //익절가는 0}//영업일 변경if bdate != bdate[1] Then{ //손실횟수 초기화 0 loss = 0; //연속손실횟수 초기화 0 consecLoss = 0; //패수는 누적패수 패수 = 누적패수; //당일거래횟수는 거래횟수 당일거래횟수 = 거래횟수; //진입끝시간은 진입제한시간 진입끝시간 = 진입제한시간; //bigdownCond는 False bigdownCond = False;}//bigdownCond가 False인 상태에서//진입시간이후 조정진입제한시간 전에 시초가대비 BigDown이하 하락한 종가가 발생하면if bigdownCond == False and stime >= 진입시간 and sTime < 조정진입제한시간 and L <= DayOpen-BigDown Then //전일종가대비이면 DayOpen-> DayClose(1){ //BigDown는 true bigdownCond = true; //당일거래횟수는 조정거래횟수로 변경 당일거래횟수 = 조정거래횟수; //진입끝시간은 조정진입제한시간로 변경 진입끝시간 = 조정진입제한시간; //진입제한시간이후에 발생했다면 Tcond가 False이므로 //Tcond는 true로 변경 if sTime >= 진입제한시간 and Tcond == False Then Tcond = true;}if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then loss = loss+1;if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입끝시간) or (sdate == sdate[1] and stime >= 진입끝시간 and stime[1] < 진입끝시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{ T1 = TotalTrades; E1 = 0; HH = H; }if stime >= 진입시간 then{ if H > HH Then HH = H; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then { if E1 == 0 and C <= HH-PriceScale*B1 Then { E1 = 1; L1 = L; i1 = index; V1 = HH; //시작점 종가 } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; #고가가 시작봉종가보다 작을 때만 눌림체크 if H <= V1 and H >= L1+PriceScale*진입눌림1 Then{ E1 = 2; i1 = index; S1 = L1; } } //시작점 종가보다 높은 가격이 발생하면 초기화 if E1 >= 1 and H > V1 Then{ E1 = 0; HH = H; } if loss < 패수 and E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파1 and Tcond == true and 최대 > C and C >= 최소 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 당일거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림2 Then{ E1 = 2; i1 = index; S1 = L1; } } if loss < 패수 and E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파2 and Tcond == true and 최대 > C and C >= 최소 and (익절가 == 0 or (익절가 > 0 and C < 익절가)) Then //익절가가 0이거나 익절가가 0보다 크면 종가가 익절가보다 작다 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 and IsEntryName("s1") == true Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림1 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파1 Then{ ExitShort("sx1"); E1 = 0; } } } if MarketPosition == -1 and IsEntryName("s2") == true Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림2 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파2 Then{ ExitShort("sx2"); E1 = 0; } } } if marketposition() == -1 and IsEntryName("s1") == true and stime<s1lock Then ExitShort("익절가1",Atlimit,EntryPrice-익절가1);if marketposition() == -1 and IsEntryName("s2") == true and stime<s2lock Then ExitShort("익절가2",Atlimit,EntryPrice-익절가2);if MarketPosition== -1 Then{ if IsEntryName("s1") == true Then { SetStopLoss(PriceScale*als,PointStop); SetStopTrailing(PriceScale*atr2,PriceScale*atr1,PointStop,1); } Else if IsEntryName("s2") == true Then { SetStopLoss(PriceScale*bls,PointStop); SetStopTrailing(PriceScale*btr2,PriceScale*btr1,PointStop,1); } Else { SetStopLoss(0); SetStopTrailing(0,0); }}var : Month(0),nday(0),week(0); month = int(date/100)-int(date/10000)*100; nday = date - int(date/100)*100; Week = DayOfWeek(date); if (nday >= 8 and nday <= 14 and week == 4) or (sdate == 20141008) then { if sdate < 20160801 Then SetStopEndofday(만기청산시간1); Else SetStopEndofday(만기청산시간2); } Else { if sdate < 20160801 Then SetStopEndofday(만기외청산시간1); Else SetStopEndofday(만기외청산시간2); }
2025-11-13
325
글번호 227989
답변완료
수식 부탁 드림니다
안녕하십니까?수식 부탁 드립니다1.기준선1(Highest(H, 기간1) + Lowest(L, 기간1))/22. 기준선2(Highest(H, 기간2) + Lowest(L, 기간2))/23.기준선3(Highest(H, 기간3) + Lowest(L, 기간3))/24.고점M1 = (Highest(H, 기간1) + Lowest(L, 기간1))/2;M2 = (Highest(H, 기간2) + Lowest(L, 기간2))/2;HighestSince(1, crossUp(M1, M2), M1)5.저점M1 = (Highest(H, 기간1) + Lowest(L, 기간1))/2;M2 = (Highest(H, 기간2) + Lowest(L, 기간2))/2;LowestSince(1, crossDown(M1, M2), M1)----------------------------------------------------기간1 = 5기간2 = 10기간3 = 20================================1. 5 이평ma(C, period1)고점, 저점2. 10이평ma(C, period2)고점, 저점3. 20 이평ma(C, period3)고점, 저점========================항상 감사 합니다
2025-11-13
237
글번호 227988
답변완료
부탁드립니다.
해선 5분봉 차트에서 전일 특정시간(예: 전일 13시10분)의 종가를 표시하는 수식을 부탁드립니다.
2025-11-13
150
글번호 227987
답변완료
검색식 문의 드립니다.
안녕하세요. 조건 검색시 부탁 드립니다.
2025-11-13
157
글번호 227986
답변완료
검색식 확인 부탁합니다.
input: starttime(90000), endtime(152000),starttimeB(90000), endtimeB(152000), billion(15), rising_rate(1.05), diff_limit(1.02);var: condA(false), condB(false), ma10(0), ma20(0), ma60(0),ma120(0), maxval(0), minval(0),maxval2(0), minval2(0);/* 이동평균 계산 */ma10 = ma(C, 10);ma20 = ma(C, 20);ma60 = ma(C, 60);ma120 = ma(C, 120);/* 최대/최소 계산 */maxval = maxlist(ma10, ma20, C);minval = minlist(ma10, ma20, C);maxval2 = maxlist(ma60, ma20, C);minval2 = minlist(ma60, ma20, C);condB = (stime >= starttimeB and stime <= endtimeB) and (((ma120 > ma120[1]) and (maxval2 / minval2 < diff_limit)) or ((ma60 > ma60[1]) and (maxval / minval < diff_limit))) ; if CountIf(condB == true, 390) >= 1 Then find(1);검색식 중에 일부분을 가져왔는데요. condB를 제외하면 검색이 되는데 condB를 포함하면 검색이 되지 않습니다.diff_limit를 크게 가져가도 검색이 되지 않아 무슨 문제인가 싶어서 질문드립니다.감사합니다.
2025-11-13
210
글번호 227984