커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 문의드립니다.

안녕하세요 항상 많은 도움 감사드리며... 연말을 맞이하여 하나 더 질문 드립니다 ㅠㅠ 일봉차트에서 data2는 주봉, data3은 월봉으로 설정하고, 최근 월봉 거래량이 1000000 이상인 종목이면서 주봉 거래량이 500000 이상인 종목을 검색하는 식 문의드립니다. 참조데이터 사용이 불가능하다면... 일봉 최근 10개봉에서 거래량이 1000000을 넘으면서 거래총액이 10억이 넘는 종목들을 검색하는 식과 시장가 매수식 부탁드립니다. 연말 잘 보내시고~ 새로운 한해 잘 맞이하시길 바래요~!
프로필 이미지
이엘성투
2020-12-31
752
글번호 145033
시스템
답변완료

시스템매매 함수로 부탁드립니다.

아래와 같은 지표수식에서 돌파와 붕괴 지표가 RED로 바뀌고 이평1이 이평2를 돌파할때 매수 돌파와 붕괴 지표가 BLUE로 바뀌고 이평2가 이평1를 돌파할때 매도, 10틱 이익이면 청산, 10틱손실이면 손절할수 있게 수식을 분단위 기준으로 부탁드립니다. var : 이평1(0),이평2(0),t(0); var : hh(0),hd(0),ht(0),hh1(0),hd1(0),ht1(0),고점추세선(0); var : ll(0),ld(0),lt(0),ll1(0),ld1(0),lt1(0),저점추세선(0); 이평1 = ma(C,20); 이평2 = ma(C,60); Plot1(이평1); Plot2(이평2); If crossup(이평1,이평2) Then { t = 1; hh = h; hd = sDate; ht = sTime; hh1 = hh[1]; hd1 = hd[1]; ht1 = ht[1]; if hh1 > 0 Then { TL_SetExtRight(고점추세선,False); 고점추세선 = TL_New(hd1,ht1,hh1,hd,ht,hh); TL_SetColor(고점추세선,RED); TL_SetExtRight(고점추세선,true); } } If crossdown(이평1,이평2) Then { t = -1; ll = l; ld = sDate; lt = sTime; ll1 = ll[1]; ld1 = ld[1]; lt1 = lt[1]; if ll1 > 0 Then { TL_SetExtRight(저점추세선,False); 저점추세선 = TL_New(ld1,lt1,ll1,ld,lt,ll); TL_SetColor(저점추세선,BLUE); TL_SetExtRight(저점추세선,true); } } if t == 1 Then { if h > hh Then { hh = h; hd = sDate; ht = sTime; TL_SetEnd(고점추세선,hd,ht,hh); } } if t == -1 Then { if l < ll Then { ll = l; ld = sDate; lt = sTime; TL_SetEnd(저점추세선,ld,lt,ll); } } If c > TL_GetValue(고점추세선,sDate,sTime) and C[1] < TL_GetValue(고점추세선,sDate[1],sTime[1]) Then { plot3(L-0.5,"돌파",BLUe); } If c > TL_GetValue(저점추세선,sDate,sTime) and C[1] < TL_GetValue(저점추세선,sDate[1],sTime[1]) Then { plot3(L-0.5,"돌파",REd); } If c < TL_GetValue(고점추세선,sDate,sTime) and C[1] > TL_GetValue(고점추세선,sDate[1],sTime[1]) Then { plot4(H+0.5,"붕괴",BLUe); } If c < TL_GetValue(저점추세선,sDate,sTime) and C[1] > TL_GetValue(저점추세선,sDate[1],sTime[1]) Then { plot4(H+0.5,"붕괴",REd); }
프로필 이미지
미완
2020-12-30
845
글번호 145032
시스템
답변완료

아래 70458 재질문 답변 부탁드립니다 (내용 무)

.
프로필 이미지
골드드래곤
2020-12-30
774
글번호 145031
지표
답변완료

수식 문의

안녕하세요? 수식 정정 부탁 드립니다. 감사드리며, 멋진 2021 되길 기원합니다.
프로필 이미지
에구머니
2021-01-04
783
글번호 145030
시스템
답변완료

오류수정 부탁드립니다. 감사합니다.

Inputs: Length(NumericSimple),TargetUpLevel(NumericSimple),TargetDnLevel(NumericSimple), NxtYn(NumericSimple), // 다음 봉의 값을 구하려면 1을 아니면 0을 넣어준다. oUpBand(NumericRef), // 주소전달방식임을 선언 oDnBand(NumericRef), // 값을 입력받는게 아니라 여기에 결과값을 채워서 반환한다. oMidLine(NumericRef); // 변수명 앞에 소문자를 o를 붙인 것은 output 변수입을 나타냅니다. Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else If CurrentBar > 1 AND Length > 0 Then Begin UpAmt = C[0] - C[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If nxtYn == 1 Then // 다음 봉 여부가 1일 경우 { If Value1 > TargetUpLevel Then // 상단밴드 oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg) + DownAvg) * (Length - 1) + C; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg) - UpAvg) * (Length - 1) + C; If Value1 > TargetDnLevel Then // 하단밴드 oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg) + DownAvg) * (Length - 1) + C; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg) - UpAvg) * (Length - 1) + C; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; // 중간라인 If Value1 > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg) + DownAvg) * (Length - 1) + C; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg) - UpAvg) * (Length - 1) + C; } Else // 다음 봉 여부가 0인 경우 { If Value1[1] > TargetUpLevel Then oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; If Value1[1] > TargetDnLevel Then oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; } RSI_BAND = 1; //사용자함수는 반환값이 있어야 한다고 했습니다. // oUpBand, oDnBand, oMidLine 는 메모리 주소이지 반환값이 아닙니다. // 그래서 마지막에 아무 값이나 넘겨 줘야 하기 때문에 그냥 1을 넣어 줬습니다.
프로필 이미지
매버릭
2020-12-30
956
글번호 145029
사용자 함수

골드드래곤 님에 의해서 삭제되었습니다.

프로필 이미지
골드드래곤
2020-12-30
1
글번호 145028
지표
답변완료

DATA2와 DATA3을 이용하는 시스템 매매식을 부탁드립니다.

해외선물 기준 동일종목으로 시간은 다르게 참조 주종목 10분 Keltner Channel 변수값 MALEN 10 CONST 0.8 ATRs 0 Price Channel 변수값 LENGTH 14 DATA2 60분 Keltner Channel 변수값 MALEN 10 CONST 0.8 ATRs 0 Price Channel 변수값 LENGTH 20 DATA3 240분 Keltner Channel 변수값 MALEN 10 CONST 0.8 ATRs 0 Price Channel 변수값 LENGTH 24 기준으로 해외선물을 다음 조건을 기준(전체기준 중 일부입니다)으로 매매를 할 예정입니다. 기본 시스템식을 부탁드립니다. [진입은 1계약으로 청산 후 동일 조건이 오면 계속 진입과 청산을 반복 하도록 매매식을 부탁드립니다] [1]매수 1.매수1조건 매수1 진입 1.CrossDown(C,BCHAN) and DATA2 CrossDown(C,LOWER) and DATA3 CrossDown(C,CENTLINE) 2.L(저가)==BCHAN-PriceScale*4 and DATA2 LOWER > C > BCHAN and DATA3 CENTLINE > C > LOWER 매수1 청산 1.CrossUp(C,TCHAN) and DATA2 CrossUp(C,TCHAN) and DATA3 CrossUp(C,TCHAN) 2.H(고가)==TCHAN+PriceScale*4 and DATA2 H==TCHAN+PriceScale*12 and DATA3 H==TCHAN+PriceScale*12 매수1 손절 1.L(저가)==BCHAN-PriceScale*6 2.매수2조건 매수2 진입 1.CrossDown(C,BCHAN) and DATA2 CrossDown(C,LOWER) and DATA3 CrossDown(C,CENTLINE) 2.L==BCHAN-PriceScale*4 and DATA2 LOWER > C > BCHAN and DATA3 CENTLINE > C > LOWER 매수2 청산 1. CrossUp(C,TCHAN) and DATA2 CrossUp(C,TCHAN) and DATA3 CrossUp(C,UPPER) 2. H==TCHAN+PriceScale*4 and DATA2 H==TCHAN+PriceScale*12 and DATA3 TCHAN>C>UPPER 매수2 손절 1.L==BCHAN-PriceScale*6 3.매수3조건 매수3 진입 1.CrossDown(C,BCHAN) and DATA2 CrossDown(C,BCHAN) and DATA3 CrossDown(C,LOWER) 2.L==BCHAN-PriceScale*4 and DATA2 L==BCHAN-PriceScale*12 and DATA3 LOWER > C > BCHAN 매수3 청산 1.CrossUp(C,TCHAN) and DATA2 CrossUp(C,CENTLINE) and DATA3 CrossUp(C,UPPER) 2.H==TCHAN+PriceScale*4 and DATA2 UPPER>C>CENTLINE and DATA3 CENTLINE>C>LOWER 매수3 손절 1.L==BCHAN-PriceScale*6 and DATA2 L==TCHAN-PriceScale*19 [2]매도 1.매도1조건 매도1 진입 1.CrossUp(C,TCHAN) and DATA2 CrossUp(C,TCHAN) and DATA3 CrossUp(C,TCHAN) 2.H(고가)==TCHAN+PriceScale*4 and DATA2 H==TCHAN+PriceScale*12 and DATA3 H==TCHAN+PriceScale*12 매도1 청산 1.CrossDown(C,BCHAN) and DATA2 CrossDown(C,BCHAN) and DATA3 CrossDown(C,LOWER) 2.L(저가)==BCHAN-PriceScale*4 and DATA2 L==BCHAN-PriceScale*12 and DATA3 LOWER > C > BCHAN 매도1 손절 1.H(고가)==TCHAN+PriceScale*6 and DATA2 H==TCHAN+PriceScale*19 and DATA3 H==TCHAN+PriceScale*19 2.매도2조건 매도2 진입 1.CrossUp(C,TCHAN) and DATA2 CrossUp(C,TCHAN) and DATA3 CrossUp(C,TCHAN) 2.H==TCHAN+PriceScale*4 and DATA2 H==TCHAN+PriceScale*12 and DATA3 H==TCHAN+PriceScale*12 매도2 청산 1.CrossDown(C,BCHAN) and DATA2 CrossDown(C,LOWER) and DATA3 CrossDown(C,CENTLINE) 2.L==BCHAN-PriceScale*4 and DATA2 LOWER>C>BCHAN and DATA3 CENTLINE > C > LOWER 매도2 손절 1.H==TCHAN+PriceScale*6 and DATA2 H==TCHAN+PriceScale*19 and DATA3 H==TCHAN+PriceScale*19 3.매도3조건 매도3 진입 1.CrossUp(C,TCHAN) and DATA2 CrossUp(C,TCHAN) and DATA3 CrossUp(C,UPPER) 2.H==TCHAN+PriceScale*4 and DATA2 H==TCHAN+PriceScale*12 and DATA3 TCHAN>C>UPPER 매도6 청산 1.CrossDown(C,BCHAN) and DATA2 CrossDown(C,LOWER) and DATA3 CrossDown(C,CENTLINE) 2.L==BCHAN-PriceScale*4 and DATA2 LOWER>C>BCHAN and DATA3 CENTLINE > C > LOWER 매도6 손절 1.H==TCHAN+PriceScale*6 and DATA2 H==TCHAN+PriceScale*19
프로필 이미지
황금룰
2020-12-30
879
글번호 145005
시스템

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2020-12-30
167
글번호 145004
지표
답변완료

포지션 주문 수식 문의 드립니다.

1) 단기 이평선이 장기 이평선을 상향 돌파시 최초 매수 포지션 진입하고, 2) 최초 진입가에서 ATR(12일 평균) / 2 값 만큼 상향 돌파 시, "ATR(12일 평균) / 2"에 해당 하는 가격으로 추가 진입 하고, 3) 단기 이평선이 장기 이평선을 하향 돌파시 포지션 전량 청산 하는 전략입니다. 1) 과 3)은 잘 되는거 같은데, 2) 부분이 잘 안되는거 같아서 문의 드립니다. 제가 사용한 수식은 다음과 같습니다. 그리고 Yes language에서 계산되는 ATR 값은 %로 나오는지 아니면 가격으로 나오는지 궁금합니다. 감사합니다. ================================================================== Input : shortPeriod(10), longPeriod(200); Var1 = ema(C , shortPeriod); Var2 = ema(C , longPeriod); Var3 = ATR(12)/2 ; # 매수 If Var1 > Var2 and CrossUP(var1, var2) Then { Buy("Buy1", OnClose, DEF, 1); } # 불타기 If MarketPosition >= 1 and Var1 > Var2 Then { if High > EntryPrice(1) + Var3 Then Buy("Add",AtStop,EntryPrice(1) + Var3 , 1); } # 매수청산 If CrossDown(var1, var2) Then { ExitLong(); }
프로필 이미지
leblanc
2020-12-30
697
글번호 145002
시스템