커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3640
글번호 230811
답변완료
수식 요청 드립니다.
주식 거래 대금 지표를 다시 작성해보고 싶은데
상승거래대금 , 하락거래대금 구분없이 해당 봉의 총 거래대금을 막대그래프로 나타나게 하고 싶고 인풋 변수로 100억 또는 1조원에 원하는 금액에 선을 그리고 싶습니다. 감사합니다.
2019-07-28
183
글번호 130707
답변완료
다음 사용자함수와 지표
안녕하세요?
아래와 같은 함수를 만들었습니다.
----------------------------------------
Inputs: Length(NumericSimple);
Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), bd(0), bds(0);
bd= BollBandDown(Length,2);
bds = SquareRoot( bd[0]/bd[1] ) ;
If CurrentBar == 1 AND Length > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = bds[Counter] - bds[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 = bds[0] - bds[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
RBD = 100 * UpAvg / (UpAvg + DownAvg);
Else
RBD = 0;
----------------------------------
그런 다음 아래와 같은 지표식을 만들어 그래프로 표시해보았습니다.
--------------------------------------
var : rd(0);
rd = RBD(10);
plot1(rd);
-----------------
테스트한 종목에서 상당 경우들이 일봉.주봉,월봉 주기에서 그래프가 이상 없게 나타났습니다.
예) 삼성엔지니어링
그런데 더존비즈온, 셀트리온은 일봉그래프는 나타나나, 주봉, 월봉 그래프가 나타나지 않고 계속 0값만 표시됩니다.
SK하이닉스 일봉 나타남, 주봉 나타남, 월봉 안나타남
전부 일봉은 나타나는데, 일부 주봉과 월봉 들이 안 나타날 때가 있습니다
이유를 알 수 없어 질문을 드립니다.
파일로 캡쳐한 이미지 첨부합니다.
2019-07-28
298
글번호 130706
답변완료
타 주기 그물망을 불려와서 지금차트에 보이게 하고 싶습니다.
1. 아래는 기간5로 설정 시 50개(이것도 80개로 늘려주세요)의 그물망차트의 기본수식입니다.
2. 여기에서 구현해 보고 싶은 것은 타 주기(지금이 보고 있는 것이 오분봉이면 타주기(예를 들면 십분봉 차트의 그물망이 5분봉에 나타내게 한다는 의미) 그물망차트를 지금 내가 보고있는 오분봉상에 나타내고 싶습니다.)의 그물망 차트를 지금 보이는 주기에서 보이게 하고 싶습니다.
Input : Period(5);
Plot1(ma(C,Period*1), "이동평균1");
Plot2(ma(C,Period*2), "이동평균2");
Plot3(ma(C,Period*3), "이동평균3");
Plot4(ma(C,Period*4), "이동평균4");
Plot5(ma(C,Period*5), "이동평균5");
Plot6(ma(C,Period*6), "이동평균6");
Plot7(ma(C,Period*7), "이동평균7");
Plot8(ma(C,Period*8), "이동평균8");
Plot9(ma(C,Period*9), "이동평균9");
Plot10(ma(C,Period*10), "이동평균10");
Plot11(ma(C,Period*11), "이동평균11");
Plot12(ma(C,Period*12), "이동평균12");
Plot13(ma(C,Period*13), "이동평균13");
Plot14(ma(C,Period*14), "이동평균14");
Plot15(ma(C,Period*15), "이동평균15");
Plot16(ma(C,Period*16), "이동평균16");
Plot17(ma(C,Period*17), "이동평균17");
Plot18(ma(C,Period*18), "이동평균18");
Plot19(ma(C,Period*19), "이동평균19");
Plot20(ma(C,Period*20), "이동평균20");
Plot21(ma(C,Period*21), "이동평균21");
Plot22(ma(C,Period*22), "이동평균22");
Plot23(ma(C,Period*23), "이동평균23");
Plot24(ma(C,Period*24), "이동평균24");
Plot25(ma(C,Period*25), "이동평균25");
Plot26(ma(C,Period*26), "이동평균26");
Plot27(ma(C,Period*27), "이동평균27");
Plot28(ma(C,Period*28), "이동평균28");
Plot29(ma(C,Period*29), "이동평균29");
Plot30(ma(C,Period*30), "이동평균30");
Plot31(ma(C,Period*31), "이동평균31");
Plot32(ma(C,Period*32), "이동평균32");
Plot33(ma(C,Period*33), "이동평균33");
Plot34(ma(C,Period*34), "이동평균34");
Plot35(ma(C,Period*35), "이동평균35");
Plot36(ma(C,Period*36), "이동평균36");
Plot37(ma(C,Period*37), "이동평균37");
Plot38(ma(C,Period*38), "이동평균38");
Plot39(ma(C,Period*39), "이동평균39");
Plot40(ma(C,Period*40), "이동평균30");
Plot41(ma(C,Period*41), "이동평균41");
Plot42(ma(C,Period*42), "이동평균42");
Plot43(ma(C,Period*43), "이동평균43");
Plot44(ma(C,Period*44), "이동평균44");
Plot45(ma(C,Period*45), "이동평균45");
Plot46(ma(C,Period*46), "이동평균46");
Plot47(ma(C,Period*47), "이동평균47");
Plot48(ma(C,Period*48), "이동평균48");
Plot49(ma(C,Period*49), "이동평균49");
Plot50(ma(C,Period*50), "이동평균50");
2019-07-28
276
글번호 130705
답변완료
수식 문의합니다.
Easy Language로 부탁합니다.
질문:
4 연속 손실 이하일 경우는, condition1으로 매매하고,
4 연속 손실 이상일 경우는 condition2로 매매 하고 싶습니다.
부탁드립니다. 여기서 강조하고싶은것은 연속 손실입니다.
감사합니다.
2019-07-28
181
글번호 130704
답변완료
식문읟드립니다
안녕하세요, 앞전에 문의드린 식이 잘되지않아 다시 문의드리며
변경하고자하는건이있어 문의드립니다.
1.
아래 식적용시 예로 7/10일에 진입비율1이 진입하고난뒤
7/11에 진입비율2에 왔을시 진입하여야하는데 진입하지않고 설정하지않은 비율에서
진입이 일어납니다.
청산은 잘됨
2.
진입비율1이 발생하지않고 갭하락등으로 진입비율2가 먼저 다을시
진행되지않는데
이럴때 진입비율2에 다을시
진입비율1,2가 같이진입하고 진입비율2청산에 맞춰 청산부탁드립니다.
진입비율3에먼저다으면 진입안함은 유지해주세요
감사합니다
----------------------------------------------------------------------
input : 저점날짜(20190619),저점가격(3275);
input : 고점날짜(20190620),고점가격(3380);
input : 시작일(20190620),시작시간(101000);
input : 진입비율1(65.2),수량1(100),청산비율1(40.0);
input : 진입비율2(70.0),수량2(50),청산비율2(45.0);
input : 진입비율3(80.0),수량3(30),청산비율3(60.0);
input : 손절비율(90);
var : HH(0),LL(0),newHigh(false),Tcond(false),Trade(false);
if sdate == 저점날짜 and sdate != sdate[1] Then
LL = 저점가격;
if sdate == 고점날짜 and sdate != sdate[1] Then
{
HH = 고점가격;
newHigh = true;
}
if sdate == 시작일 and stime > 시작시간 Then
Trade = true;
if sdate >= 고점날짜 and sdate >= 저점날짜 and HH > 0 and LL > 0 Then
Tcond = true;
if tcond == true then
{
if C <= HH*0.85 Then
newhigh = false;
if newhigh == true and H > HH Then
HH = H;
if Trade == true then
{
#첫진입(65.2%위에서 아래로 터치하면 즉시 매수)
if TotalTrades == 0 and MarketPosition == 0 then
{
if L > HH-(HH-LL)*(진입비율1/100) Then
buy("b1",atlimit,HH-(HH-LL)*(진입비율1/100),수량1);
if H < HH-(HH-LL)*(진입비율1/100) Then
buy("b1.",AtStop,HH-(HH-LL)*(진입비율1/100),수량1);
}
#매수 후
if MarketPosition == 1 then
{
#두번째진입(70.0% 위에서 아래로 터치하면 즉시 추가매수)
if MaxEntries == 1 then
{
if L > HH-(HH-LL)*(진입비율2/100) Then
buy("b2",atlimit,HH-(HH-LL)*(진입비율2/100),수량2);
if H < HH-(HH-LL)*(진입비율2/100) Then
buy("b2.",AtStop,HH-(HH-LL)*(진입비율2/100),수량2);
}
#세번째진입(80.0% 위에서 아래로 터치하면 즉시 추가매수)
if MaxEntries == 2 then
{
if L > HH-(HH-LL)*(진입비율3/100) Then
buy("b3",atlimit,HH-(HH-LL)*(진입비율3/100),수량3);
if H < HH-(HH-LL)*(진입비율3/100) Then
buy("b3.",AtStop,HH-(HH-LL)*(진입비율3/100),수량3);
}
#첫 진입후 40%를 상회하면 즉시 전량청산
if MaxEntries == 1 Then
ExitLong("bx1",Atlimit,HH-(HH-LL)*(청산비율1/100));
#두번 진입후 45%를 상회하면 즉시 전량청산
if MaxEntries == 2 Then
ExitLong("bx2",Atlimit,HH-(HH-LL)*(청산비율2/100));
#세번 진입후 60%를 상회하면 즉시 전량청산
if MaxEntries == 3 Then
ExitLong("bx3",Atlimit,HH-(HH-LL)*(청산비율3/100));
#손절비율 이하로 하락시 즉시 전량청산
ExitLong("bx",AtStop,HH-(HH-LL)*(손절비율/100));
}
}
}
2019-07-28
197
글번호 130703
답변완료
시초가 매매
분봉차트에서, 특정 요일을 지정하여 시초가에 매수, 또는 매도를 하려고 힙니다.
다음 식으로 해보니
input : 요일(2),BSdir(1); /// 월요일=1, 화요일=2, 수요일=3, 목요일=4, 금요일=5
if nextBarSdate > sDate && nextBarStime>=090000 &&
((요일==1 && DayofWeek(date)>=5) or (DayofWeek(date)==요일-1)) then {
if BSdir==1 then buy("B",atMarket);
else if BSdir==-1 then sell("S",atMarket);
}
=> 요일=2, BSdir=1로 하면 화요일은 맞는데, 시초가(9:00)에 매수하지 않고 9:05에 매수가 됩니다.
시초가 매수가 되도록 수정하여 주십시요. 감사합니다.
2019-07-28
265
글번호 130702
답변완료
이평선 신호 하나 만들고 싶습니다.
항상 감사합니다.
분봉에서 120분봉이 변곡되는 곳에 화살표가 표시되는 신호를 만들어 주시면 감사하겠습니다.
2019-07-27
231
글번호 130701
답변완료
1분봉에서 30분봉의 ADX, DMI, MACD오실레이터 지표 추가
data1은 연결선물지수(1분봉)이고
data2는 연결선물지수(30분봉)일때
DMI, ADX, MACD오실레터 지표를 추가하고 싶은데 1분봉에 것이 아니라 30분봉 것으로 지표를
추가하고 싶습니다.
이평선을 예로 들자면
30분봉이평선 = ma(data2(c),period);
수식으로 1분봉에 30분봉의 이평선을 지표화 했는데
dmi, adx, macd오실레이터는 방법을 모르겠습니다.
2019-07-27
319
글번호 130700
답변완료
문의 드립니다.
도움주심에 감사 드립니다.
당일 이후에 계산방식이 아닌
과거 n개봉전에서 계산할수 있도록 수정 부탁 드립니다.
미리 감사 드립니다.
input:p12(10),p배수(10);
var:md2(0),sig(0);
var1=ema(c,p12);
md2=var1[1]+((c-var1[1])/(c/var1[1])/p12*p배수);
sig=ema(md2,5);
if bdate != bdate[1] Then
var2 = sig[1];
var3 = (sig-var2)/var2*100; #등락률
var4=sig-var2; #차이값
2019-07-27
195
글번호 130699