커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

부탁 드립니다.

도움에 감사 드립니다. 해선용으로 사용하는 수식을 국내 주식용으로 사용코자 합니다. 그대로 사용해도 되는지요? input : ntime(30),P(10),sig(5); var : S1(0),D1(0),TM(0),TF(0); var : cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup(0),BBdn(0),VV(0),V3(0),V5(0),V7(0); Array : CC[100](0),V1[100](0),V2[100](0),V4[100](0),V6[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { for cnt = 1 to 99 { CC[cnt] = CC[cnt-1][1]; V1[cnt] = V1[cnt-1][1]; V2[cnt] = V2[cnt-1][1]; V4[cnt] = V4[cnt-1][1]; V6[cnt] = V6[cnt-1][1]; } } CC[0] = C; if CC[P-1] > 0 then { sum = 0; for cnt = 0 to P-1 { sum = sum + CC[cnt]; } V1[0] = sum/P;#var1 } if V1[P-1] > 0 then { sum = 0; for cnt = 0 to P-1 { sum = sum + V1[cnt]; } V2[0] = sum/P;#var2 } if V2[P-1] > 0 then { sum = 0; for cnt = 0 to P-1 { sum = sum + V2[cnt]; } VV = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (V2[cnt] - VV)^2; } Stdv = SquareRoot(SumSqrt / P); V3 = 2*stdv; V4[0] = V2[0]+v3; } if V4[sig-1] > 0 then { sum = 0; for cnt = 0 to sig-1 { sum = sum + V4[cnt]; } V5 = sum/sig; V6[0] = C-V5; } if V5[sig+sig-1] > 0 then { sum = 0; for cnt = 0 to sig-1 { sum = sum + V6[cnt]; } V7 = sum/sig; plot1(V7); } }
프로필 이미지
뮬리
2020-06-15
1991
글번호 139830
지표
답변완료

지표문의

안녕하세요 지표문의 드립니다. 검토 부탁드립니니다. 볼린져 밴드를 그물망 챠트 처럼 보고 싶습니다. 5 분봉 15 분봉 30 분봉 60 분봉 120 분봉 400 분봉 상기 6개의 봉챠트의 볼린져 밴드를 15분봉 챠트에 한번에 표현되게 부탁드립니다. 색상은 각 분봉의 볼린져 밴드가 한가지 색상으로 상단 하단 중앙이 표현되며 하기와 같이 부탁드립니다. 5 분봉 - 빨강 15 분봉 - 흰색 30 분봉 - 파랑 60 분봉 - 검정색 120 분봉 - 노랑 400 분봉 - 연두 감사합니다.
프로필 이미지
softtoug
2020-06-14
1999
글번호 139829
지표
답변완료

문의드립니다

안녕하세요. 늘 감사드립니다. 무포지션에서 모든 변수는 초기화 하고 매수: 무포지션에서 첫음봉뒤에 양봉이 2연속으로 발생하면 매수준비 조건가 = O; // 현재봉 양봉의 시가 매수준비 T = 1 라고 정의하고 이후에 또 양봉이 발생하면 매수준비 조건가 = O; // 현재봉 양봉의 시가 가 되고 또는 이후에 음봉이 발생하고 음봉의 종가가 위의 매수준비 조건가 를 하방으로 깨면 매수조건 T = 0 ; // 숫자 0 으로 초기화 매수준비 조건가 =0 // 숫자 0 으로 초기화 처럼 모든변수 초기화 합니다. 즉 현재봉 발생음봉의 종가가 가장 최근의 양봉(전봉일 수도 있고 전봉 이전봉들 일수도 있음)의 시가를 하방으로 깨지 않으면 매수 준비 상태는 그대로 유지하고 깨면 초기화합니다. 이 상태에서 가장 최근의 음봉의 시가를 다음 발생하는 양봉의 종가가 상방으로 돌파하면 매수합니다. 매수손절: 매수봉의 시가를 현재가가 하방으로 돌파하면 손절합니다. 매수추적청산 : 매수후 20 틱 이상 ~ 50틱 까지 이익이 나면 최대 이익이 30% 까지 떨어지면 추적이익 청산 합니다. 매수후 50 틱 이상 이익이 나면 최대 이익이 50% 까지 떨어지면 추적이익 청산 합니다. 매도: 매도도 매수와 동일한 논리로 수식을 부탁드립니다.
프로필 이미지
종호
2020-06-14
2130
글번호 139828
시스템
답변완료

삼성전자 매매 수식 부탁드림니다.

data1 삼성전자 일봉 챠트 data2 코스피(업종) 일봉 챠트 진입 수식 data2(코스피차트) 120일 평균 값에 -10% 하락시 1차 진입 data1(삼성전자) 종가 진입 100만원 2차 진입 data1(삼성전자) 1차 종가진입가 보다 -5% 하락시 추가로 100만원 진입 3차 진입 data1(삼성전자) 1차 종가진입가 보다 -10% 하락시 추가로 100만원 진입 4차 진입 data1(삼성전자) 1차 종가진입가 보다 -15% 하락시 추가로 100만원 진입 5차 진입 data1(삼성전자) 1차 종가진입가 보다 -20% 하락시 추가로 100만원 진입 청산 수식 data1(삼성전자) 차트에서 MFI(15) > 85 또는 투자심리도(15) > 85 일때 일괄 청산
프로필 이미지
이형지
2020-06-14
2244
글번호 139827
시스템
답변완료

수식 부탁 드립니다

고생이 많으십니다. 지표수식 변환 부탁 드립니다. 수식1 LL=lowest(L,기간); HH=highest(H,기간); DH=valuewhen(1,H>HH(1),H); Valuewhen(1,barssince(H>HH(1))==(기간-k),DH) 수식2 LL=lowest(L,기간); HH=highest(H,기간); DH=valuewhen(1,H>HH(1),H); Valuewhen(1,barssince(H>HH(1))==(기간-k),LL) 기간 : 10 k : 5 추가문의) 색상 표시를 여러개 알고 싶습니다 예를들어 빨강은 red , 청색은 blue..등등 그외 분홍 , 그레이, 주황, 녹색, 황금색..... 색상분류표 명칭 영문으로 있다면 부탁 드립니다 감사합니다
프로필 이미지
vlfaud3
2020-06-15
2158
글번호 139826
지표
답변완료

수식 수정부탁드려요

여기 글중에 참고 한 시스템인데요 1 매수 추세 신호는 나오는데 매도 추세신호가 안나와서요 수식이 잘못된건지 조건이 안맞는건지 만약 조건이면 조건 어느부분을 완화 하면 되는 지 알려주세요 2 이 시스템 열리는데 올래걸리는데 선을 표시하는거 때문에 올래걸리는거면 결과에 영향을 안주게 삭제 가능하면 삭제부탁드려요 3 매매시작시간 8시 40분 종료시간 새벽 5시에 할려고 시간 추가했는데 적용이 안되는거 같아서 수정부탁드려요 input : StartTime(84000),EndTime(50000); var : mav1(0),mav11(0),mav2(0),mav21(0), Tcond(false); value1 = 0; # 매수 / 매도청산 If CCI(9) > 0 Then value1 = 1; If MACD(12,26) > 0 Then value1 = value1+1; If DIPlus(14) > DIMinus(14) Then value1 = value1+1; If StochasticsK(12,5) > StochasticsD(12,5,5) Then value1 = value1+1; value2 = 0; # 매도/매수청산 If CCI(9) < 0 Then value2 = 1; If MACD(12,26) < 0 Then value2 = value2+1; If DIPlus(14) < DIMinus(14) Then value2 = value2+1; If StochasticsK(12,5) < StochasticsD(12,5,5) Then value2 = value2+1; if H[1] == highest(H,5)[1] and H[1] > max(C[1],O[1]) and V[1] >= 5000 and C[0] < C[1] Then exitlong("매수분청산"); if L[1] == Lowest(L,5)[1] and H[1] > max(C[1],O[1]) and V[1] >= 5000 and C[0] > C[1] Then ExitShort("매도분청산"); if H[2] == highest(H,5)[1] and H[2] > max(C[2],O[2]) and V[2] >= 5000 and C[0] < C[2] Then exitlong("매수분올청산"); if L[2] == Lowest(L,5)[1] and H[1] > max(C[1],O[1]) and V[1] >= 5000 and C[0] > C[1] Then ExitShort("매도분올청산"); Input : length(10),종가사용여부(0),수치표시(0),표시(0); input : 추세두께(1),추세상승색(red),추세하락색(blue); input : 고점연결두께(2),고점연결색상(LGREEN); input : 저점연결두께(2),저점연결색상(MAGENTA); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),TL11(0),TL12(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetSize(TL1,추세두께); TL_SetColor(TL1,추세상승색); if 저[1,1] > 저[2,1] Then { if 표시 == 0 Then TL_Delete(TL11); TL11 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]); TL_SetExtRight(TL11,true); TL_SetColor(TL11,저점연결색상); TL_SetSize(TL11,저점연결두께); } If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)+NewLine+"+"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱"); Text_SetStyle(Text1, 2, 1); } if value1 >= 3 then buy("추세매수"); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)+NewLine+"+"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱"); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,추세두께); TL_SetColor(TL1,추세하락색); if 고[1,1] < 고[2,1] Then { if 표시 == 0 Then TL_Delete(TL12); TL12 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]); TL_SetExtRight(TL12,true); TL_SetColor(TL12,고점연결색상); TL_SetSize(TL12,고점연결두께); } If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)+NewLine+"-"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱"); Text_SetStyle(Text1, 2, 0); } if value3 >= 3 then sell("추세매도"); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)+NewLine+"-"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱"); } } 최종꼭지점 = "저점"; } --------------------------------------------- 또 다른시스템인데요 매수 신호만 나오게 되어 있는데 매수신호의 수식의 반대 일때 매도 신호 나오게 수정부탁드려요 추가적으로 이것도 8시40분에 해서 새벽 5시에 끝나개 설정했는데 안되서 이것도 수정부탁드립니다 input :신고가평균봉수(100); input : 신고가거래제한봉수(50); input : 거래량(1000); input : StartTime(83500),EndTime(50000); #청산 조건 input : 청산이평(50); input : 손절이평(100); input : 터치익절(1.5),즉시손절(0.7); var : hi1(0),hi2(0),mav1(0),mav2(0); var : mav11(0),mav21(0), Tcond(false); mav1 = ma(C,청산이평); mav2 = ma(C,손절이평); Condition1 = C > highest(H,신고가평균봉수)[1]; #지정한 StartTime 시간봉이 발생하면 Tcond는 true if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then Tcond = true; #지정한 EndTime 시간봉이 발생하면 Tcond는 false if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; #지정한 시간대이면 if Tcond == true then { if Condition1 == true Then { hi1 = index; hi2 = hi1[1]; if (hi2 == 0 or (hi2 > 0 and hi1 > hi2+신고가거래제한봉수)) and V >= 거래량 Then buy("매수진입",AtMarket); } if MarketPosition == 1 then { if c < EntryPrice and CrossDown(c,mav2) Then exitlong("손절"); if c > EntryPrice and CrossDown(c,mav1) Then exitlong("이익실현"); } } SetStopLoss(즉시손절 , PercentStop); SetStopProfittarget(터치익절 , PercentStop);
프로필 이미지
가날
2020-06-14
1774
글번호 139825
시스템

2wnwn 님에 의해서 삭제되었습니다.

프로필 이미지
2wnwn
2020-06-14
312
글번호 139824
지표
답변완료

수식문의드립니다

1. 특정 기간동안의 최고점, 최저점을 구하고 그 지점에서의 봉 번호를 변수로 지정하고싶습니다. Input : Navg(3); Var : HighIdx(0), HighValue(0), LowIdx(0), LowValue(0), Length(0), Height(0); HighValue = 0; HighValue = Highest(High, Navg); LowValue = 0; LowValue = Lowest(Low, Navg); If High == HighValue Then HighIdx = Index; If Low == LowValue Then LowIdx = Index; plot으로 일일이 확인해보았는데 HighIdx는 제대로 작동을 하는데 LowIdx가 작동에 오류가 있는듯 합니다. 제가 수식작성에 어떤 부분을 잘못하였을까요? 2. RSI지표가 15, 85인 지점들을 찾고 85 -> 85 연속으로 나오면 매수 진입, 15 -> 15 연속으로 나오면 매도 진입하는 시스템식을 작성하고 싶습니다. Array 기능을 활용해야 하는지.. 어렵네요
프로필 이미지
파트라
2020-06-14
1631
글번호 139823
지표
답변완료

문의드립니다.

아래수식을 예스로 부탁드립니다. // Base line_VX1 source2 = close short = sma(close, 7) long = sma(close, 25) plot(short, color=red, linewidth=2) plot(long, color=navy, linewidth=4) plot(cross(long, short) ? long : na, style = circles, color=blue, linewidth = 9) OutputSignal = long >= short ? 1 : 0 bgcolor(OutputSignal>0?red:gray, transp=100) //======================================================= //Vdub_Tetris_V2 LRG_Channel_TF_mins_D_W_M = input("30") Range2 = input(1) SELL = security(tickerid, LRG_Channel_TF_mins_D_W_M, highest(Range2)) BUY = security(tickerid, LRG_Channel_TF_mins_D_W_M, lowest(Range2)) HI = plot(SELL, color=SELL!=SELL[1]?na:red,linewidth=2 ) LO = plot(BUY, color=BUY!=BUY[1]?na:green,linewidth=2 ) fill(HI, LO, color=#E3CAF1, transp=100) Hcon = high >= SELL Lcon = low <= BUY plotshape(Hcon, style=shape.triangledown, color=maroon, location=location.abovebar) plotshape(Lcon, style=shape.triangleup, color=green, location=location.belowbar) range2 = SELL-BUY //-------------------------------------------------- SML_Channel_TF_mins_D_W_M = input('240') M_HIGH = security(tickerid, SML_Channel_TF_mins_D_W_M, high) M_LOW = security(tickerid, SML_Channel_TF_mins_D_W_M, low) plot(M_HIGH, color=M_HIGH != M_HIGH[1] ?na:fuchsia, style=line, linewidth=2) plot(M_LOW, color=M_LOW != M_LOW[1] ?na:fuchsia, style=line, linewidth=2)
프로필 이미지
as8282
2020-06-14
1939
글번호 139822
지표