커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

참조 데이터

제가 뭔가 참조 데이터 쓰는 법을 잘 모르나 봅니다. 다음 수식 수정 부탁드립니다 (작동을 제대로 안 합니다) 이용하는 차트 = 1분봉 참조1 (data2) = 일봉 1. 갭 메우기 오늘 시가가 어제 저가보다 낮으면 090000 매수해서 어제 저가 또는 151900 에 청산 if stime==090000 and data2(O[0]) < data2(L[1]) then buy ("B",atmarket); if marketposition == 1 and c >= data2(L[1]) then exitlong ("Ex",atmarket); if marketposition == 1 and stime==151900 then exitlong ("Ex1",atmarket); 2. 가격이 (오늘 시가 + 어제 고가, 저가의 평균값) 에 도달할 경우 그 시점에 매수, 151900에 청산 var : higher(0); higher = data2(O[0]) + (data2(H[1])+data2(L[1]))/2 ; if marketposition == 0 and c=higher then buy ("B", atmarket); if marketposition == 1 and stime == 151900 then exitlong ("Ex", atmarket); 3. 오늘 110000 가격이 오늘 시가보다 높고 AND 130000 가격이 그때까지 오늘 고가,저가의 평균값보다 높으면 130000에 매수, 151900에 청산 if MarketPosition ==0 and (C>DayOpen and stime==110000) and (stime==130000 and C>(H+L)/2 ) then buy ("B",atmarket); if marketposition == 1 and stime == 151900 then exitlong ("Ex", atmarket); 4. 151900 가격이 일봉 5MA 위면 매수, 090001 청산 if marketposition == 0 and stime ==151900 and data2(C[0]) > data2(MA(C[0],5)) then buy ("B", atmarket); if marketpostion == 1 and stime ==090001 then exitlong ("Ex", atmarket); 한수 가르침 부탁드립니다^^
프로필 이미지
lch05
2018-10-23
315
글번호 122928
지표
답변완료

문의 합니다

1번 시스템 수식 input : 시작시간(090000),종료시간(152000); input : Period15(15),Period20(20),Period30(30),Period120(120),Period180(180),Period240(240),Period480(480),Period960(960),Period60(60),Period3(3),Period10(10),Period2(2),Period7(7),Period144(144),Period100(100),익절틱수(10),손절틱수(10); var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0),mav480(0),mav960(0),mav60(0),mav1(0),mav3(0),mav10(0),mav2(0),mav7(0),mav144(0),mav100(0),Bxcond(false),Sxcond(false); var : Tcond(false); var : T(0); mav15 = ma(c, Period15); mav20 = ma(c, Period20); mav30 = ma(c, Period30); mav120 = ma(c, Period120); mav180 = ma(c, Period180); mav240 = ma(c, Period240); mav480 = ma(c, Period480); mav960 = ma(c, Period960); mav60 = ma(c, Period60); mav3 = ma(c, Period3); mav10 = ma(c, Period10); mav2 = ma(c, Period2); mav7 = ma(c, Period7); mav144 = ma(c, Period144); mav100 = ma(c, Period100); if (sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and (Stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) Then { Tcond = True; BXcond = false; SXcond = false; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{ Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if TotalTrades > TotalTrades[1] then{ BXcond = false; SXcond = false; if (IsExitName("bl",0) == true or IsExitName("bp",0) == true or IsExitName("bx",1) == true or IsExitName("bx",1) == true) Then BXcond = true; if (IsExitName("sl1",0) == true or IsExitName("sp1",0) == true or IsExitName("sx",1) == true or IsExitName("sx",1) == true) Then SXcond = true; } if Tcond == true then{ if MarketPosition <= 0 and Bxcond == false and (mav144[1] < mav144 and mav60[60] > mav60[2] and mav60[2] <= mav60[1] and mav60[1] < mav60 and mav15[1] < mav15) Then{ buy("매수",OnClose,def,1); } if MarketPosition == 1 Then{ if mav15[1] < mav15 and mav7 > mav15 and mav15 > mav30 and mav30[1] < mav30 and crossup(mav2, mav3) and CurrentContracts < 10 Then buy("매수1",OnClose,def,1); } if MarketPosition == 1 Then{ if (mav100[2] >= mav100[1] and mav100[1] > mav100) Then exitlong("수청산",OnClose,def,"매수"); if (mav100[2] >= mav100[1] and mav100[1] > mav100) Then exitlong("수청산1",OnClose,def,"매수1"); ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수); ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수); } if MarketPosition >= 0 and Sxcond == false and (mav144[1] > mav144 and mav60[60] < mav60[2] and mav60[2] >= mav60[1] and mav60[1] > mav60 and mav15[1] > mav15) Then{ sell("매도",OnClose,def,1); } if MarketPosition == -1 then{ if mav15[1] > mav15 and mav7 < mav15 and mav15 < mav30 and mav30[1] > mav30 and CrossDown(mav2, mav3) and CurrentContracts < 10 Then sell("매도1",OnClose,def,1); } if MarketPosition == -1 then{ if (mav100[2] <= mav100[1] and mav100[1] < mav100) Then ExitShort("도청산",OnClose,def,"매도"); if (mav100[2] <= mav100[1] and mav100[1] < mav100) Then ExitShort("도청산1",OnClose,def,"매도1"); ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수); ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수); } } 2번 시스템 수식 input : ntime1(20),P(20); var : S1(0),D1(0),TM(0),TF(0); var : cnt(0),sum1(0),mav1(0),mav11(0),mav12(0); Array : C1[50](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%ntime1; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { for cnt = 1 to 49 { C1[cnt] = C1[cnt-1][1]; } mav11 = mav1[1]; mav12 = mav11[1]; } C1[0] = C; if C1[P] > 0 then{ sum1 = 0; for cnt = 0 to P-1{ sum1 = sum1+C1[cnt]; } mav1 = sum1/P; if mav12 < mav11 and mav11 < mav1 and mav12 > 0 Then buy(); if mav12 > mav11 and mav11 > mav1 and mav12 > 0 Then sell(); } } 1번 수식에 2번 수식 함께 적용하여 하나의 수식으로 합쳐주세요 감사합니다 1번 수식에 최초 매수진입할 때 2번 수식 매수진입 수식을 합쳐주세요 (즉 1번 최초 매수진입과 1번 매수진입 만족하면 매수 진입) mav144[1] < mav144 and mav60[60] > mav60[2] and mav60[2] <= mav60[1] and mav60[1] < mav60 and mav15[1] < mav15 and mav12 < mav11 and mav11 < mav1 and mav12 > 0 1번 수식에 최초 매도진입할 때 2번 수식 매도진입 수식을 합쳐주세요 (즉 1번 최초 매도진입과 1번 매도진입 만족하면 매도 진입) mav144[1] > mav144 and mav60[60] < mav60[2] and mav60[2] >= mav60[1] and mav60[1] > mav60 and mav15[1] > mav15 and mav12 > mav11 and mav11 > mav1 and mav12 > 0
프로필 이미지
남산
2018-10-22
258
글번호 122927
시스템
답변완료

부탁 드립니다.

도움주심에 깊이 감사 드립니다. 다음 타주기 수식의 일봉 주봉 월봉지표를 분봉에 나타 나도록 부탁 드립니다. 미리 감사 드립니다.. /* Input:P4(4); VAR:VARQ1(0); VARQ1=ATR(P4); plot1(varq1); */ input : 타주기분(60),Period(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0),CC(0),C1(0); var : sumTR(0),ATRV(0); Array : TH[100](0),TL[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%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { HH = H; LL = L; C1 = CC[1]; for cnt = 1 to 99 { TH[cnt] = TH[cnt-1][1]; TL[cnt] = TL[cnt-1][1]; } } if H > HH Then HH = H; if L < LL Then LL = L; CC = c; TH[0] = max(C1,HH); TL[0] = Min(C1,LL); if TH[Period-1] > 0 and TL[Period-1] > 0 then { sumTR = 0; for cnt = 0 to Period-1 { sumTR = sumTR + (TH[cnt]-TL[cnt]); } ATRV = sumTR/Period; plot1(ATRV); } }
프로필 이미지
yes
2018-10-23
270
글번호 122926
지표
답변완료

수식 부탁드립니다.

감사합니다. 수식부탁드립니다. 매수 포지션 일때 N개의 봉(캔들)의 시작가와 종가가 20틱 만큼 하락하면 청산 매수 포지션 일때 N개의 봉(캔들)의 최대값과 최소값이 20틱 만큼 하락하면 청산 매도 포시션 반대
프로필 이미지
라떼처럼
2018-10-22
238
글번호 122923
시스템
답변완료

부탁 드립니다.

항상 고맙습니다. 타주기 분용으로 사용토록 부탁 드립니다. input : Period(5); var1 = Ceiling((Period*2+1) * 0.5); value1 = ma(ma(C, var1), var1);
프로필 이미지
뮬리
2018-10-22
268
글번호 122917
지표
답변완료

해외선물 틱챠트 이용중인데요

1. 틱 봉의 갯수가 틀려집니다. - 가령 12;00;00 에서 12;10;00 까지 약 10분간 120틱의 봉갯수가 10개로 진행되고 있는 중에 분봉으로 챠트를 달리 보고 넘어오면 데이타가 갱신이 되어서인지 봉갯수가 15개정도로 변해 있습니다. 2. 이에 따라 보조지표들도 기존에 보던것과는 완전히 틀려지고 3. 시스템 신호도 발생했던것이 없어지곤 합니다. 이런 현상이 왜 발생하는것일까요? 사용자가 설정을 잘못한 부분이 있는지요? 위의 상황을 이해하시기가 어렵다면 그림 화잉을 첨부 하도록 하겠습니다. 감사합니다. ************************************************************************** ==> 캡쳐화면 올립니다. 재조회 전 지정한 기간의 120틱의 봉갯수는 167개에서 재조회후 봉갯수는 258개로 늘어나 있습니다. *************************************************************************
프로필 이미지
fighter
2018-10-22
340
글번호 122916
지표
답변완료

수식좀 부탁합니다.

1, 상승시 틱수 캔들 좌측 상단배열과 적색으로 표시를 원합니다. 하락시 틱수 캔들 캔들 좌측 하단배열과 검정색으로 표시를 원합니다. 그리고 현재는 캔들 중안에 너무 가깝게 표시가 되어서 캔들과 틱수가 겹쳐보입니다. 2, 진입신호에서 매수 또는 매도 하고 목표치 틱수 도달시 청산호가 기호와함께 한글로 표시가 되게끔 가능하신지요.있다면 어떻게~~~~ 3, 바탕하면에 상승세 또는 하락세를 배경에 연출하는 시스템을 여쭙니다. 참고로 사진첨부 하오니 도움 주시면 감사하겠습니다. 마지막 사진은 타인의 챠트를 예를 듭니다.
프로필 이미지
원칙대응
2018-10-22
310
글번호 122903
시스템
답변완료

선물 캔들 상품별 틱수 계산 수식0

안녕하세요. ~ 항상 도움을 주셔서 감사합니다. 캔들의 양봉/음봉이 만들어 질때 상승/하락 틱수를 알고 싶어 해당 수식을 작성했는데 국선/해선의 주가단위에 따라 달라 도움을 요청드립니다. 과거 데이터를 기준으로 계산했는데 금일 라이브상태에서 보니 완성된 캔들의 상/하락 틱수가 틀리게 나오네요 ㅠㅠ #기준안 수식 var1 = Abs((C-O)*1); //틱수 계산 #국선 var1 = Abs((C-O)*100); //국선 양봉/음봉 틱수 계산 #항생 var1 = Abs((C-O)*1); //항생 양봉/음봉 틱수 계산 #나스닥 var1 = Abs((C-O)*10); //나스닥 양봉/음봉 틱수 계산 #골드 var1 = Abs((C-O)*10); //골드 양봉/음봉 틱수 계산 #유로FX var1 = Abs((C-O)*10000); //유로 양봉/음봉 틱수 계산 표현은 첨부파일의 그림처럼 캔들에 표시하려 합니다. 확인 부탁 드립니다.
프로필 이미지
무한도전짱짱
2018-10-22
356
글번호 122890
지표
답변완료

다시 한번 봐 주세요..

주봉의 4,9,19일선을 일봉에 표시하는 수식인데 지나간 자리는 맞는데 현위치가 맞지 않습니다 지금 정확한 것은 정규장 일봉뿐입니다 다시 한번만 봐 주세요... 1. 주봉 input : weekP1(5),weekP2(10),weekP3(20); var : cnt(0),count(0),sum1(0),mav1(0),sum2(0),mav2(0),sum3(0),mav3(0); array : weekC[100](0); if dayofweek(date) <= dayofweek(date[1]) and sdate > sdate[1] then{ for cnt = 1 to 99{ weekC[cnt] = weekC[cnt-1][1]; } } weekC[0] = C; sum1 = 0; sum2 = 0; sum3 = 0; if weekC[weekP3] > 0 Then{ for count = 0 to weekP3{ if count < weekP1 Then sum1 = sum1+weekC[count]; if count < weekP2 Then sum2 = sum2+weekC[count]; if count < weekP3 Then sum3 = sum3+weekC[count]; } mav1 = sum1/weekP1; mav2 = sum2/weekP2; mav3 = sum3/weekP3; } plot1(mav1); plot2(mav2); plot3(mav3); 월봉의 1봉전 4,9,19일선을 주봉에 표시하는 수식인데 오차가 있습니다.. 수정 부탁합니다 (주봉을 일봉에 표시하는거는 정확히 맞는데요...) 2, 월봉 input : monthP1(5),monthP2(10),monthP3(20); var : cnt(0),count(0),sum1(0),mav1(0),sum2(0),mav2(0),sum3(0),mav3(0); array : monthC[100](0); if date > date[1]+30 then{ for cnt = 1 to 99{ monthC[cnt] = monthC[cnt-1][1]; } } monthC[0] = C; sum1 = 0; sum2 = 0; sum3 = 0; if monthC[monthP3] > 0 Then{ for count = 0 to monthP3{ if count < monthP1 Then sum1 = sum1+monthC[count]; if count < monthP2 Then sum2 = sum2+monthC[count]; if count < monthP3 Then sum3 = sum3+monthC[count]; } mav1 = sum1/monthP1; mav2 = sum2/monthP2; mav3 = sum3/monthP3; } plot1(mav1); plot2(mav2); plot3(mav3);
프로필 이미지
하늘거지
2018-10-23
310
글번호 122889
지표