커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

종목검색 부탁합니다

아래와 같이 종목검색 부탁합니다 일봉 시가<종가 시가총액 1000억 이상 30분봉 캔들 저가대비 고가 변동폭이 7%이상 이면서 거래대금이 100억이상인 종목 검색 변수는 다른 숫자로도 고칠수있게 변수로 해주세요
프로필 이미지
팔보채
2022-12-26
1413
글번호 164847
종목검색
답변완료

문의 드립니다 - 시가 진입 당일 청산

안녕하십니까. 테스트용으로 시가 상승 출발시 바로 진입하고 당일 내 지정손익 청산하는 시스템 수식을 이하와 같이 작성하였습니다. Input : 수익(1.0), 손실(1.0); if NextBarSdate <> sDate Then { if NextBarOpen > DayClose Then Buy("b", AtMarket, Def, 1); } SetStopProfitTarget(수익, PointStop); SetStopLoss(손실, PointStop); SetStopEndofday(); 그런데 이 수식을 시뮬레이션 차트에 적용해보면 이해가 안되는 점이 있습니다. 진입했다가 청산된 후에는 더이상 포지션이 없으니 수익률 차트가 변화 없이 수평이어야 할 것 같은데, 시뮬레이션에서는 수평이 아닙니다. (첨부 이미지에 적색 수평 화살표로 표시한 구간입니다) 왜 이렇게 나오는 것인지 도저히 모르겠습니다. 꼭 좀 이유를 알려주시길 부탁드립니다.
프로필 이미지
좋은밤
2022-12-26
1277
글번호 164846
시스템
답변완료

수정 의뢰드립니다.

안녕하세요! 아래 첨부 파일은 다이버전스를 응용한 스토케스틱과 볼린저밴드등의 매매식들 입니다! 다름이 아니라 아래 수식들을 적용해 보았는데 원본과 다르게 나타나네요! 첨부파일 처럼 우측 원본과 동일하게 수식기호들이 나타나도록 수정을 부탁드립니다! 그리고 시스템식도 단방향으로만 나오는걸 양방향 거래가 되게 끔 수정을 부탁드립니다! 감사합니다! -------------------------------------------------------------------- [지표식] INPUT : RsiPeriod(13),PLPeriod(2),TSLPeriod(7), BandPeriod(34), 표준편차(1.6185); var :RSIV(0), RSIPL(0), TSL(0), MidBand(0), UpBand(0),DnBand(0) ; var : TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0), TX5(0), TX6(0); RSIV = RSI(RSIPeriod); RSIPL = ma(RSIV,PLPeriod); //RSI_Price_Line TSL = ma(RSIV,TSLPeriod); //Trade_Signal_Line MidBand = ma(RSIV,BandPeriod); //Volatility_Band UpBand = MidBand + (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Up DnBand = MidBand - (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Down # if RSIPL > RSIPL[1] and RSIPL[1] < RSIPL[2] and RSIPL < 50 then { //스토캐스틱 상승반전 var1 = RSIPL[1]; var2 = var1[1]; var3 = C[1]; var4 = var3[1]; var5 = sdate[1]; var6 = var5[1]; var7 = stime[1]; var8 = var7[1]; if var1 > var2 and var3 < var4 then //지표값은 높아지고 종가는 낮아지고 var9 = 1; } else var9 = 0; if var9 == 1 then { TL1 = TL_New(var6,var8,var4,var5,var7,var3); TLi1= TL_New_self(var6,var8,var2,var5,var7,var1); TX1 = Text_new(var5, var7, L, "★"); TL_SetSize(TL1, 2); TL_SetColor(TL1, Red); TL_SetSize(TLi1, 2); TL_SetColor(TLi1, Red); Text_SetColor(Tx1,Magenta); Text_SetStyle(Tx1,0,0); } if CrossUp(RSIPL, DnBand) then { TX3 = Text_new(sdate, stime, L, "▲"); Text_SetColor(Tx3,rgb(160,70,255)); Text_SetStyle(Tx3,2,0); } if RSIPL < RSIPL[1] and RSIPL[1] > RSIPL[2] and RSIPL > 50 then {//스토캐스틱 하락반전 var11 = RSIPL[1]; var12 = var11[1]; var13 = C[1]; var14 = var13[1]; var15 = sdate[1]; var16 = var15[1]; var17 = stime[1]; var18 = var17[1]; if var11 < var12 and var13 > var14 then //지표값은 낮아지고 종가는 높아지고 var19 = 1; } else var19 = 0; if var19 == 1 then { TL2 = TL_New(var16,var18,var14,var15,var17,var13); TLi2= TL_New_self(var16,var18,var12,var15,var17,var11); TX2 = Text_new(var15, var17, H, "★"); TL_SetSize(TL2, 2); TL_SetColor(TL2, blue); TL_SetSize(TLi2, 2); TL_SetColor(TLi2, blue); Text_SetColor(Tx2,Lcyan); Text_SetStyle(Tx2,0,1); } if CrossDown(RSIPL, UpBand) then { TX4 = Text_new(sdate, stime, H, "▼"); Text_SetColor(Tx4,Rgb(0,255,0)); Text_SetStyle(Tx4,2,1); } # plot1(RSIPL, "RSIPL",Lgreen,def,0); plot2(TSL,"TSL",red,def,0); plot3(MidBand,"MidBand",magenta,def,0); plot4(UpBand,"UpBand",blue,def,0); plot5(DnBand,"DnBand",blue,def,0); if CrossUp(RSIPL,DnBand) then plot6(RSIPL, "상향돌파시점"); if CrossDown(RSIPL, UpBand) then plot7(RSIPL, "하향이탈시점"); if var9 == 1 then plot8(RSIPL, "상승다이버전스"); if var19 == 1 then plot9(RSIPL, "하락다이저번스"); [시스템식] INPUT : RsiPeriod(13),PLPeriod(2),TSLPeriod(7), BandPeriod(34), 표준편차(1.6185); var :RSIV(0), RSIPL(0), TSL(0), MidBand(0), UpBand(0),DnBand(0) ; var : TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0); RSIV = RSI(RSIPeriod); RSIPL = ma(RSIV,PLPeriod); //RSI_Price_Line TSL = ma(RSIV,TSLPeriod); //Trade_Signal_Line MidBand = ma(RSIV,BandPeriod); //Volatility_Band UpBand = MidBand + (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Up DnBand = MidBand - (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Down # if RSIPL > RSIPL[1] and RSIPL[1] < RSIPL[2] and RSIPL < 50 then { //스토캐스틱 상승반전 var1 = RSIPL[1]; var2 = var1[1]; var3 = C[1]; var4 = var3[1]; var5 = sdate[1]; var6 = var5[1]; var7 = stime[1]; var8 = var7[1]; if var1 > var2 and var3 < var4 then //지표값은 높아지고 종가는 낮아지고 var9 = 1; } else var9 = 0; if RSIPL < RSIPL[1] and RSIPL[1] > RSIPL[2] and RSIPL > 50 then {//스토캐스틱 하락반전 var11 = RSIPL[1]; var12 = var11[1]; var13 = C[1]; var14 = var13[1]; var15 = sdate[1]; var16 = var15[1]; var17 = stime[1]; var18 = var17[1]; if var11 < var12 and var13 > var14 then //지표값은 낮아지고 종가는 높아지고 var19 = 1; } else var19 = 0; # if var9 == 1 then buy("Div_Buy"); if CrossUp(RSIPL, DnBand) then buy("PL_Buy"); if var19 == 1 then exitlong("Div_EL"); if CrossDown(RSIPL, UpBand) then exitlong("PL_EL"); ----------------------------------------------------------------- 스토케스틱 다이버전스는 시스템 수식이 없습니다. 지표식만이라도 수정을 부탁드립니다. [지표식] Input : Period(5), Period1(3), Period2(3); var : StoK(0),StoD(0), TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0), TX5(0), TX6(0); StoK = StochasticsK(Period,Period1); StoD = StochasticsD(Period,Period1,Period2); if StoK > StoK[1] and StoK[1] < StoK[2] and StoK < 60 then { //스토캐스틱 상승반전 var1 = StoK[1]; var2 = var1[1]; var3 = C[1]; var4 = var3[1]; var5 = sdate[1]; var6 = var5[1]; var7 = stime[1]; var8 = var7[1]; if var1 > var2 and var3 < var4 then //지표값은 높아지고 종가는 낮아지고 var9 = 1; } else var9 = 0; if var9 == 1 then { TL1 = TL_New(var6,var8,var4,var5,var7,var3); TLi1= TL_New_self(var6,var8,var2,var5,var7,var1); TX1 = Text_new(var5, var7, L, "★"); TL_SetSize(TL1, 2); TL_SetColor(TL1, Red); TL_SetSize(TLi1, 2); TL_SetColor(TLi1, Red); Text_SetColor(Tx1,Magenta); Text_SetStyle(Tx1,0,0); } if CrossUp(stoK, 20) and ma(C,5) > ma(C,20) then { TX3 = Text_new(sdate, stime, L, "▲"); Text_SetColor(Tx3,rgb(160,70,255)); Text_SetStyle(Tx3,2,0); } if StoK < StoK[1] and StoK[1] > StoK[2] and StoK > 40 then {//스토캐스틱 하락반전 var11 = StoK[1]; var12 = var11[1]; var13 = C[1]; var14 = var13[1]; var15 = sdate[1]; var16 = var15[1]; var17 = stime[1]; var18 = var17[1]; if var11 < var12 and var13 > var14 then //지표값은 낮아지고 종가는 높아지고 var19 = 1; } else var19 = 0; if var19 == 1 then { TL2 = TL_New(var16,var18,var14,var15,var17,var13); TLi2= TL_New_self(var16,var18,var12,var15,var17,var11); TX2 = Text_new(var15, var17, H, "★"); TL_SetSize(TL2, 2); TL_SetColor(TL2, blue); TL_SetSize(TLi2, 2); TL_SetColor(TLi2, blue); Text_SetColor(Tx2,Lcyan); Text_SetStyle(Tx2,0,1); } if CrossDown(stoK, 80) then { TX4 = Text_new(sdate, stime, H, "▼"); Text_SetColor(Tx4,Rgb(0,255,0)); Text_SetStyle(Tx4,2,1); } Plot1(StoK, "StochasticsK"); Plot2(StoD, "StochasticsD"); PlotBaseLine1(20, "기준선20"); PlotBaseLine2(80, "기준선80"); if CrossUp(stoK, 20) and ma(C,5) > ma(C,20) then plot3(stoK, "상향돌파시점"); if CrossDown(StoK,80) then plot4(StoK, "하락이탈시점"); if var9 == 1 then plot5(stoK, "상승다이버전스"); if var19 == 1 then plot6(stoK, "하락다이저번스");
프로필 이미지
qha71
2022-12-26
1551
글번호 164845
지표
답변완료

문의

볼린저밴드 period 500 d1 2 하한밴드에 근접한 종목을 찾는 식 부탁드려요
프로필 이미지
anj
2022-12-25
1225
글번호 164844
종목검색
답변완료

시스템식 부탁드립니다.

항상 도움 주셔서 감사합니다. 아래의 조건에 맞는 시스템식 부탁드립니다. 종목 : 마이크로 나스닥 100 차트 : 5분봉 요청내용1 매매결과 하루 총손실이 -100point 손실이면 더이상 매매하지 않는 시스템식 부탁드립니다. 요청내용2 매매결과 하루 총손실과 현재 포지션 총손실이 -100point 손실이면 더이상 매매하지 않는 시스템식 부탁드립니다. 감사합니다.
프로필 이미지
양치기
2022-12-25
1232
글번호 164843
시스템
답변완료

문의드립니다.

앞전에 문의했었는데 실제 적용해보니 첫 거래 이후 그다음은 거래가 되지 않습니다. 현재봉 포함을 빠뜨려서 그런듯도 합니다. 다시 한번 부탁드릴 내용을 정리하자면 "현재봉 포함하여" 직전 20봉 동안에 "가장 거래량이 많이 터진 봉"의 고가와 저가 중간값을 기준으로 그 아래에 있을때는 매수조건이 만족해도 매수신호가 안나오게 하고 싶습니다. 매도는 그 반대입니다. input : N(20); var : Hv(0),cnt(0),HVM(0); Input : Period1(5), Period2(20); var1 = ma(C,Period1); var2 = ma(C,Period2); HV = 0; HVM = 0; For cnt = 1 to N { if HV == 0 or (HV > 0 and V[cnt] > HV) Then { HV = V[cnt]; HVM = (H[cnt]-L[cnt])/2; } } if HV > 0 and C >= HVM and var1 > Var2 Then buy(); if HV > 0 and C <= HVM and var1 < Var2 Then Sell(); 수식 확인 부탁드립니다. ※ 시간이 되신다면 위의 매매신호가 안나오게하는 것외에 매수진입후 위의 진입제한 기준값인 고저 중간값 아래로 가면 즉시 청산되게 하는 청산식도 부탁드립니다. 노고에 늘 감사드립니다!
프로필 이미지
카르마다
2022-12-25
1370
글번호 164842
시스템
답변완료

시스템

안녕하세요 아래식을 작동되게 부탁드립니다 Input:t1(10000),t2(10000); var : sum(0,Data2),sum1(0,data2); sum = data2(c) + t1; sum1 = data2(c) - t2; if Data2(CountIf(sum>sum[1],3) == 3) Then Buy(); if Data2(CountIf(sum1<sum1[1],3) == 3) Then Sell(); 가령 5분봉기준 전봉보다 매수일때 data2[3] + t1 < data2[2] and data2[2] + t1 < data2[1] and data2[1] + t1 < data2(c) 일때 매수 입니다 수고하세요
프로필 이미지
달마7
2022-12-25
1159
글번호 164841
시스템
답변완료

지표 작성부탁합니다

사용지표: 볼린져밴드(60.2) 이평선 120 지표조건 : 60이평선이 볼린져밴드 상단보다 위에 있으면 노랑색으로 표현되는 지표조건식 작성 부탁합니다
프로필 이미지
파워
2022-12-25
1083
글번호 164840
지표
답변완료

슈퍼 트렌드 쌍바닥 쌍봉 변수 상하 분리

inputs: ATRLength(15), Strength(18), 폭(0.2); input : 쌍봉상(2),쌍봉하(2),상1(2),상2(0),하1(1),하2(2); var : STrend(0),ATRv(0), avgv(0), dnv(0), upv(0), trend(1), flag(0), flagh(0), ST(0),hl(0); var : idx(0),hh(0),ll(0),EP1(0),EP2(0); var : ema1(0),ema2(0),ema3(0),h1(0),h2(0),h3(0),h4(0),L1(0),l2(0),l3(0),l4(0); var :tx(0),tl(0),tx1(0),tx2(0); Ep1 = 2/(ATRLength+1); Ep2 = 2/(Strength+1); idx = idx+1; if idx < ATRLength Then { hh = DayHigh; ll = daylow; } Else { hh = Highest(High, ATRLength); ll = Lowest(Low, ATRLength); } if idx < Strength Then { h1 = DayHigh; l1 = daylow; } Else { h1 = Highest(High, Strength); l1 = Lowest(Low, Strength); } hl = hh-ll; if idx == 1 Then { ema1 = hl; ema2 = h; ema3 = l; } Else { ema1 = hl * EP1 + ema1 * (1-EP1); ema2 = h * EP2 + ema2 * (1-EP2); ema3 = l * EP2 + ema3 * (1-EP2); } atrv = ema1; avgv = (ema2+ema3)/2; upv = avgv + ATRv; dnv = avgv - ATRv; if idx >= 2 then { if c > upv[1] and c > h1[1] then trend = 1; else if c < dnv[1] and c < l1[1] then trend = -1; if trend < 0 and trend[1] > 0 then flag=1; else flag=0; if trend > 0 and trend[1] < 0 then flagh = 1; else flagh = 0; if trend > 0 and dnv < dnv[1] then dnv=dnv[1]; if trend < 0 and upv > upv[1] then upv=upv[1]; if flag == 1 then upv = avgv + ATRv; if flagh == 1 then dnv = avgv - ATRv; if trend == 1 then ST = dnv; else ST = upv; STrend = trend; } Plot1(st,"SuperTrend",iff(strend == 1,red,blue)); if Trend != Trend[1] Then { if Trend == 1 Then { var1 = h; var2 = var1[1]; TL = TL_New_Self(sDate,sTime,0,sDate,sTime,99999999); TL_SetColor(TL,Red); TL_SetSize(TL,0.5); tx = Text_New_Self(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx,Red); Text_SetSize(tx,20); Text_SetStyle(tx,2,2); if Var4 > 0 and var3 <= Var4+PriceScale*상1 and var3 >= Var4+PriceScale*상2 Then { tx1 = Text_New_Self(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx1,Magenta); Text_SetSize(tx1,30); Text_SetStyle(tx1,2,2); } if Var4 > 0 and var3 <= Var4-PriceScale*하1 and var3 >= Var4-PriceScale*하2 Then { tx1 = Text_New_Self(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx1,Lime); Text_SetSize(tx1,30); Text_SetStyle(tx1,2,2); } } Else { Var3 = l; Var4 = Var3[1]; tx = Text_New_Self(sDate,sTime, st+PriceScale*0,"●"); Text_SetColor(tx,Blue); Text_SetSize(tx,20); Text_SetStyle(tx,2,2); if Var2 > 0 and var1 <= Var2+PriceScale*쌍봉상 and var1 >= Var2-PriceScale*쌍봉하 Then { tx2 = Text_New_Self(sDate,sTime, st+PriceScale*0,"●"); Text_SetColor(tx2,Cyan); Text_SetSize(tx2,30); Text_SetStyle(tx2,2,2); } } } Else { if Trend == 1 Then { if h > var1 Then var1 = h; } if Trend == -1 Then { if l < var3 Then var3 = l; } } if Trend != Trend[1] Then { if Trend == 1 Then { h2 = h; h3 = h2[1]; h4 = h3[1]; if L4 > 0 and max(L2,l3,l4) <= min(L2,l3,l4)+폭 Then { tx1 = Text_New_Self(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx1,Black); Text_SetSize(tx1,20); Text_SetStyle(tx1,2,2); } } Else { L2 = l; l3 = l2[1]; l4 = l3[1]; } } Else { if Trend == 1 Then { if h > h2 Then h2 = h; } if Trend == -1 Then { if l < L2 Then L2 = l; } } 쌍바닥을 상하 2틱씩 일괄에서 (현재 쌍봉같이), 쌍바닥이 상승중인지 하락중인지 동그라미 색으로 구분하기 위해 변수를 상 0~2틱(직저 동일 포함)과 하 1~2틱으로 따로 분리했는데, 쌍봉 수식 때문인지 가끔 하나씩 출력이 안될 때가 있습니다. 수정 부탁합니다. 쌍봉도 상 1~2틱과, 직고 동일 포함한 하 0~2틱의 두개의 수식으로 따로 따로, 변수와 동그라미 표시를 분리하면 좋겠습니다.
프로필 이미지
고성
2022-12-25
1449
글번호 164839
지표