커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다

Input : 하락폭(16), 상승폭(70), 손절값(0); input : StartTime(70000),EndTime(60000); var : Tcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; IF Endtime <= starttime Then { SetStopEndofday(0); } } Var : Entry(0); if Bdate != Bdate[1] Then { Entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then Entry = Entry + 2; if MarketPosition == 0 and Entry < 2 Then { if Bdate != NextBarSdate Then Buy("B1",AtLimit,NextBarOpen-(PriceScale*하락폭)); Else if Bdate == Bdate[1] Then Buy("B2",AtLimit,DayOpen-(PriceScale*하락폭)); } SetStopProfittarget(PriceScale*상승폭,PointStop); SetStopLoss(PriceScale*손절값,PointStop); 위 수식어를 진입 2회로 부탁드립니다. 미리 감사드립니다.
프로필 이미지
푸른
2023-03-16
1081
글번호 167226
시스템
답변완료

옵션 매매시 매도부터 시작하는 함수

안녕하세요 옵션매매시 매도매매만 하는 투자자입니다. 시스템매매시 첫번째 매매를 매도로 시작하는 함수부탁합니다. 현재는 조건식에 부합하는 첫번째 매수신호가 나오면 매수를 하도록 되어있는데 첫번째 신호가 매수일경우 무시하고 매도일경우만 진입하는 함수가 필요합니다. 현재는 간단히 아래와 같이 시스템식이 되어 있습니다. if sell조건식 then sell if buy조건식 then buy 원하는 내용은 buy하기전에 이 조건을 만족하는게 첫번째이면 패스하거나 sell이 되어 있는 경우에 buy( 즉 청산)를 하도록 하고 싶습니다. 감사합니다.
프로필 이미지
눈뜬사람
2023-03-16
1118
글번호 167222
시스템
답변완료

쌍쓰리 동시

input : Period(120); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0); Array: HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0); var : tx1(0),tx2(0),tx3(0),tx4(0); var : tx99(0),tx99count(0),l1(0),l2(0),l3(0),l4(0); Plot1(value12); For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; } LoVal[0] = L; LoBar[0] = 0; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; Condition99 = False; tx99count = 0; } Else { If LoVal[0] >= L Then { LoVal[0] = L; LoBar[0] = 0; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; date22 = date[0]; time22 = stime[0]; Condition99 = False; } Else { if Condition99 == False and value12 <= value11-0.5 and H >= value12+PriceScale*3 Then { Condition99 = true; l1 = value12; l2 = l1[1]; l3 = l2[1]; l4 = l3[1]; tx99count = tx99count+1; if tx99count >= 2 Then { if max(L1,L2) <= min(L1,L2)+PriceScale*2 Then { tx2 = Text_New(date12,time12,L1-PriceScale*0,"●"); Text_SetStyle(tx2,2,2); Text_SetColor(tx2,Cyan); Text_SetSize(tx2,30); } } if tx99count >= 3 Then { if max(L1,L2,L3) <= min(L1,L2,L3)+PriceScale*5 Then { tx3 = Text_New(date12,time12,L1-PriceScale*0,"●"); Text_SetStyle(tx3,2,2); Text_SetColor(tx3,Black); Text_SetSize(tx3,25); } } } } } } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; } HiVal[0] = H; HiBar[0] = 0; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; date32 = date[0]; time32 = stime[0]; } } 2틱 이내 쌍반등과 5틱 이내 쓰리반등이 동시 발생시 동그라미 따로 추가. 부탁드립니다. (두 수식의 동그라미가 겹치는, 쌍반등이면서 쓰리반등인 부분에 동그라미 따로 추가)
프로필 이미지
고성
2023-03-16
1281
글번호 167221
지표
답변완료

지표식 문의드립니다

분기 단위로 시가 고가 저가 종가를 나타내어 일주월봉에 적용하려고 하는데 수식 문의드립니다 예를들면 1분기 1~3월 2분기 4~6월 3분기 7~9월 4분기 10-12월
프로필 이미지
왓썹
2023-03-16
1065
글번호 167220
지표
답변완료

초보 여쭙니다~~

안녕하세요^^ 초보라 이것 저것 해보고 짜집기 하면서 공부 중입니다. 밑에 운영자님이 답변 해주신 내용중에 input : signal_length(11),lin_reg(1),linreg_length(11); input : lengthMA(34),lengthSignal(9); input : sto1(12),sto2(5),sto3(5); input : RSIP(9); var : bopen1(0,Data1),bhigh1(0,Data1),blow1(0,Data1),bclose1(0,Data1),r1(False,Data1); var : bopen2(0,Data2),bhigh2(0,Data2),blow2(0,Data2),bclose2(0,Data2),r2(False,Data2); var : bopen3(0,Data3),bhigh3(0,Data3),blow3(0,Data3),bclose3(0,Data3),r3(False,Data3); var : bopen4(0,Data4),bhigh4(0,Data4),blow4(0,Data4),bclose4(0,Data4),r4(False,Data4); var : src1(0,Data1),hi1(0,Data1),lo1(0,Data1),Ema1(0,Data1),eema1(0,Data1),mi1(0,Data1); var : md1(0,Data1),sb1(0,Data1),sh1(0,Data1),mdc1(0,Data1); var : src2(0,Data2),hi2(0,Data2),lo2(0,Data2),Ema2(0,Data2),eema2(0,Data2),mi2(0,Data2); var : md2(0,Data2),sb2(0,Data2),sh2(0,Data2),mdc2(0,Data2); var : src3(0,Data3),hi3(0,Data3),lo3(0,Data3),Ema3(0,Data3),eema3(0,Data3),mi3(0,Data3); var : md3(0,Data3),sb3(0,Data3),sh3(0,Data3),mdc3(0,Data3); var : src4(0,Data4),hi4(0,Data4),lo4(0,Data4),Ema4(0,Data4),eema4(0,Data4),mi4(0,Data4); var : md4(0,Data4),sb4(0,Data4),sh4(0,Data4),mdc4(0,Data4); var : stok1(0,Data1),stod1(0,Data1),RSIV1(0,Data1); var : stok2(0,Data2),stod2(0,Data2),RSIV2(0,Data2); var : stok3(0,Data3),stod3(0,Data3),RSIV3(0,Data3); var : stok4(0,Data4),stod4(0,Data4),RSIV4(0,Data4); var : Bcond(False,Data1),Scond(False,Data1); bopen1 = data1(iff(lin_reg == 1 , LRL(open, linreg_length) , open)); bhigh1 = data1(iff(lin_reg == 1 , LRL(high, linreg_length) , high)); blow1 = data1(iff(lin_reg == 1 , LRL(low, linreg_length) , low)); bclose1 = data1(iff(lin_reg == 1 , LRL(close, linreg_length) , close)); r1 = data1(bopen1 < bclose1); bopen2 = data2(iff(lin_reg == 1 , LRL(open, linreg_length) , open)); bhigh2 = data2(iff(lin_reg == 1 , LRL(high, linreg_length) , high)); blow2 = data2(iff(lin_reg == 1 , LRL(low, linreg_length) , low)); bclose2 = data2(iff(lin_reg == 1 , LRL(close, linreg_length) , close)); r2 = data2(bopen2 < bclose2); bopen3 = data3(iff(lin_reg == 1 , LRL(open, linreg_length) , open)); bhigh3 = data3(iff(lin_reg == 1 , LRL(high, linreg_length) , high)); blow3 = data3(iff(lin_reg == 1 , LRL(low, linreg_length) , low)); bclose3 = data3(iff(lin_reg == 1 , LRL(close, linreg_length) , close)); r3 = data3(bopen3 < bclose3); bopen4 = data4(iff(lin_reg == 1 , LRL(open, linreg_length) , open)); bhigh4 = data4(iff(lin_reg == 1 , LRL(high, linreg_length) , high)); blow4 = data4(iff(lin_reg == 1 , LRL(low, linreg_length) , low)); bclose4 = data4(iff(lin_reg == 1 , LRL(close, linreg_length) , close)); r4 = data4(bopen4 < bclose4); src1 = Data1((h+l+c)/3); hi1 = data1(IFF(IsNan(hi1[1]) == true, ma(high,lengthMA), hi1[1]*(lengthMA-1)+high)/lengthMA); lo1 = data1(IFF(IsNan(lo1[1]) == true, ma(low,lengthMA), lo1[1]*(lengthMA-1)+low)/lengthMA); ema1 = data1(ema(src1, lengthMA)); eema1 = data1(ema(ema1, lengthMA)); mi1 = ema1+(ema1-eema1); md1 = data1(IFf((mi1>hi1), (mi1-hi1) , IFf((mi1<lo1) , (mi1 - lo1) , 0))); sb1 = data1(ma(md1, lengthSignal)); sh1 = md1-sb1; mdc1 = data1(iff(src1>mi1,iff(src1>hi1,lime,green),iff(src1<lo1,red,orange))); src2 = Data2((h+l+c)/3); hi2 = data2(IFF(IsNan(hi2[1]) == true, ma(high,lengthMA), hi2[1]*(lengthMA-1)+high)/lengthMA); lo2 = data2(IFF(IsNan(lo2[1]) == true, ma(low,lengthMA), lo2[1]*(lengthMA-1)+low)/lengthMA); ema2 = data2(ema(src2, lengthMA)); eema2 = data2(ema(ema2, lengthMA)); mi2 = ema2+(ema2-eema2); md2 = data2(IFf((mi2>hi2), (mi2-hi2) , IFf((mi2<lo2) , (mi2 - lo2) , 0))); sb2 = data2(ma(md2, lengthSignal)); sh2 = md2-sb2; mdc2 = data2(iff(src2>mi2,iff(src2>hi2,lime,green),iff(src2<lo2,red,orange))); src3 = Data3((h+l+c)/3); hi3 = data3(IFF(IsNan(hi3[1]) == true, ma(high,lengthMA), hi3[1]*(lengthMA-1)+high)/lengthMA); lo3 = data3(IFF(IsNan(lo3[1]) == true, ma(low,lengthMA), lo3[1]*(lengthMA-1)+low)/lengthMA); ema3 = data3(ema(src3, lengthMA)); eema3 = data3(ema(ema3, lengthMA)); mi3 = ema3+(ema3-eema3); md3 = data3(IFf((mi3>hi3), (mi3-hi3) , IFf((mi3<lo3) , (mi3 - lo3) , 0))); sb3 = data3(ma(md3, lengthSignal)); sh3 = md3-sb3; mdc3 = data3(iff(src3>mi3,iff(src3>hi3,lime,green),iff(src3<lo3,red,orange))); src4 = Data4((h+l+c)/3); hi4 = data4(IFF(IsNan(hi4[1]) == true, ma(high,lengthMA), hi4[1]*(lengthMA-1)+high)/lengthMA); lo4 = data4(IFF(IsNan(lo4[1]) == true, ma(low,lengthMA), lo4[1]*(lengthMA-1)+low)/lengthMA); ema4 = data4(ema(src4, lengthMA)); eema4 = data4(ema(ema4, lengthMA)); mi4 = ema4+(ema4-eema4); md4 = data4(IFf((mi4>hi4), (mi4-hi4) , IFf((mi4<lo4) , (mi4 - lo4) , 0))); sb4 = data4(ma(md4, lengthSignal)); sh4 = md4-sb4; mdc4 = data4(iff(src4>mi4,iff(src4>hi4,lime,green),iff(src4<lo4,red,orange))); stok1 = data1(StochasticsK(sto1,sto2)); stod1 = data1(StochasticsD(sto1,sto2,sto3)); RSIV1 = data1(RSI(RSIP)); stok2 = data2(StochasticsK(sto1,sto2)); stod2 = data2(StochasticsD(sto1,sto2,sto3)); RSIV2 = data2(RSI(RSIP)); stok3 = data3(StochasticsK(sto1,sto2)); stod3 = data3(StochasticsD(sto1,sto2,sto3)); RSIV3 = data3(RSI(RSIP)); stok4 = data4(StochasticsK(sto1,sto2)); stod4 = data4(StochasticsD(sto1,sto2,sto3)); RSIV4 = data4(RSI(RSIP)); Bcond = r1 == true and md1 == green and stok1 > stod1 and RSIV1 > 50 and r2 == true and md2 == green and stok2 > stod2 and RSIV2 > 50 and r3 == true and md3 == green and stok3 > stod3 and RSIV3 > 50 and r4 == true and md4 == green and stok4 > stod4 and RSIV4 > 50 ; Scond = r1 == False and md1 == Red and stok1 < stod1 and RSIV1 < 50 and r2 == False and md2 == Red and stok2 < stod1 and RSIV2 < 50 and r3 == False and md3 == Red and stok3 < stod1 and RSIV3 < 50 and r4 == False and md4 == Red and stok4 < stod1 and RSIV4 < 50; if MarketPosition <= 0 and Bcond == true and Bcond[1] == False Then Buy(); if MarketPosition >= 0 and Scond == true and Scond[1] == False Then Sell(); if MarketPosition == 1 and Bcond == False Then ExitLong(); if MarketPosition == -1 and Scond == False Then ExitShort(); 가 있어서 실행해 봤는데요 '수식에서 참조한 2번째 종목데이터가 없습니다.' 라고 뜨는데 무슨말인지 모르겠어서요. 혹시 간단한 설명 부탁드려도 될까요^^? 항상 감사드립니다^^
프로필 이미지
말비
2023-03-16
1259
글번호 167219
시스템
답변완료

식 부탁드립니다.

식 부탁드립니다. 0.지정한 날자부터 조건에 부합하면 계속 자동매수 진행 1.지정한가격 돌파시 매수 2.이후 설정한 가격으로 매도, 손절 매수조건 :시초가가 지정한 돌파매수가격보다 낮을것 매수안하는조건: 당일 가격이 매도설정가격보다 낮게되면 매수안한다 매도,손절 :지정한 가격 이상이면 매도, 이하면 손절 시장가 매수 매도 손절 부탁드립니다
프로필 이미지
스누피독
2023-03-16
1007
글번호 167218
시스템
답변완료

지표식 문의드립니다

전달 주봉의 마지막 주봉을 새로운 달의 일자가 포함되지 않은 주의 주봉으로 결정하는 지표식을 만들어서 일주월봉에 적용하고 싶습니다. 예를 들어 2월의 경우 2월 20 ~ 2월 24일 2월 27 ~ 3월 3일 로써 2월의 마지막 주봉이 2월 27일~3월 3일에 해당하는 주로 되었는데 제가 원하는 것은 2월 27일 ~ 3월 2일주는 3월이 포함되어있으므로 2월의 마지막 주로 결정하지 않으며, 2월의 마지막 주는 2월 20~24일에 해당하는 주로 결정하고자 하는 목적입니다. 그리고 이 지표를 일주월봉에 적용하고 싶습니다
프로필 이미지
왓썹
2023-03-16
1077
글번호 167217
지표
답변완료

시스템식 부탁드립니다.

항상 도움 주셔서 감사합니다. 종목: 해외선물 차트 : 주봉차트 주봉차트에서 봉완성 기준이 아닌 가격조건 만족기준으로만 매매하려 합니다. 아래와 같이 코딩 했는데 위 조건처럼 매매가 되지 않습니다.[느림] 제가 놓치고 있는게 무엇인지 모르겠습니다. 도움 부탁드립니다. 매수 : 현재가가 주봉 10일 이동평균선 위에 있고 현재 이동평균선이 상승중이고 MACD가 0선 위면 매수 위 3가지 모두 만족하면 현재가에서 10틱 하락시 매수 매수물타기 : 포지션 진입이후 진입가격 대비 10틱이 하락하거나 이미 진입된 포지션의 평균진입가격 대비 10틱 하락할때 마다 1계약씩 추가매수(최대 진입횟수 20회) 매수 물타기 청산1 : 포지션 진입이후 계약수가 10개 이내일 경우에는 진입 건별로 10틱 이상 수익이 발생할때마다 1계약씩 청산 포지션 진입이후 계약수가 11개 이상일 경우에는 평균 진입가격보다 10틱 이상 수익발생할 경우 모든 계약 청산 매수청산 : 캔들(현재가가)이 10일 이동평균선 아래로 하락하거나 10일 이동평균선추세가 하락전환하거나 MACD가 0선 아래로 하락시 매수청산 매도 : 현재가가 주봉 10일 이동평균선 아래에 있고 현재 이동평균선이 하락중이고 MACD가 0선 아래면 매도 위 3가지 모두 만족하면 현재가에서 10틱 상승시 매도 매도물타기 : 포지션 진입이후 진입가격 대비 10틱이 상승하거나 이미 진입된 포지션의 평균진입가격 대비 10틱 상승할때 마다 1계약씩 추가매도(최대 진입횟수 20회) 매도 물타기 청산1 : 포지션 진입이후 계약수가 10개 이내일 경우에는 진입 건별로 10틱 이상 수익이 발생할때마다 1계약씩 청산 포지션 진입이후 계약수가 11개 이상일 경우에는 평균 진입가격보다 10틱 이상 수익발생할 경우 모든 계약 청산 매도청산 : 캔들(현재가가)이 10일 이동평균선 위로 상승하거나 10일 이동평균선추세가 상승전환하거나 MACD가 0선 위로 상승시 매도청산 위에 설명한대로 아래 시스템식 수정 부탁드립니다. #----------------------------------------------------------------------- # 매수 If marketposition == 0 and C > 이평 and 이평 > 이평[1] and MACDV > 0 then Buy("B",AtLimit,C-PriceScale*매수폭,amt); If marketposition == 1 and MACDv < 0 or 이평[0] < 이평[1] or C < 이평 Then ExitLong("BX",AtLimit,C,"",amt,1); # 매도 If marketposition == 0 and C < 이평 and 이평 < 이평[1] and MACDV < 0 then Sell("S",AtLimit,C+PriceScale*매도폭,amt); If marketposition == -1 and MACDv > 0 or 이평[0] > 이평[1] or C > 이평 Then ExitShort("SX",AtLimit,C,"",amt,1); 도움 부탁드립니다. 감사합니다.
프로필 이미지
양치기
2023-03-16
823
글번호 167216
시스템
답변완료

문의드립니다

차트쉐어에 공개된 지표의 수식을 구하는 방법이 있나요?
프로필 이미지
kns
2023-03-16
985
글번호 167215
시스템