커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3650
글번호 230811
답변완료
흐음
1
2020-10-16
647
글번호 143146
답변완료
지표 질문입니다
일봉에서 5캔들전 시가를 틱봉에서 구현하는 수식 부탁드립니다
감사합니다
2020-10-16
630
글번호 143144
답변완료
수식 문의 드립니다.
아래 수식에서
색변환후 주가가 44일선 돌파시 7봉째종가에서 매수진입후 33호가 상승시 자동청산되고
44일선 이탈시 5봉째종가에서 청산되도록(단, 투자금 전체수량의 전량매수, 전량청산)
시스템식 부탁드립니다.
input : P(60);
var : T(0);
var1 = ma(C,P);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
if T == 1 Then
plot1(var1,"이평",red);
if T == -1 Then
plot1(var1,"이평",black);
2020-10-16
744
글번호 143143
답변완료
식문의드립니다
안녕하세요, 식문의드립니다.
주식(1분봉)
설정한 일자부터 매수,매도 진행( 20년10월16일 장시작부터 설정한 매수매도 진행)
가격과 수량 설정할수 있게 부탁드립니다.
해당가격에 봉꼬리가 닫거나 갭발생시 설정값 이상,이하일때 바로 진입
1.매수
가격 : 1000원 이하
수량 : 50개
2.매도
가격 : 1100원 이상
수량 : 1번매수 전량
3.매수
<1번(1000원 이하 매수)에서 2번 매도 되지않고 가격이 하락시
가격 : 900원 이하
수량 : 80개
4.매도
<1번(1000원이하 매수),3번(900원 이하 매수) 매수가 발생한 이후에만 4번가격에서 매도
가격 : 950원 이상
수량 : 1번매수+3번매수 전량
5.손절
1번,3번 매수 후 매도 되지 못하고 가격이 더 하락하면 손절
가격 : 800원 이하
수량 : 1번매수+3번매수 전량
----------------------------------------
1번 2번이 발생되면 시스템 끝 ( 3,4번이 진행안됨)
3번 4번이 발생되면 시스템 끝
5번 발생되면 시스템 끝
부탁드립니다.
2020-10-15
831
글번호 143142
답변완료
부탁 드립니다.
도움에 감사 드립니다.
함수를 사용 하면
그림과 같이 점 그래프를 설정해도 그려지지 않습니다.
함수를 사용해서
점 그래프가 그려질수 있도록 부탁 드립니다.
1)함수를 사용 하지 아니한 점 그래프 수식
input:rightleftbars(15);
input:volumeThresh(20);
var: toggleBreaks(true);
var:rightBars(0);
rightBars=rightleftbars;
var : SH(0),SL(0),highUsePivot(0),lowUsePivot(0),tx1(0),tx2(0);
if SwingHigh(1,h,rightleftbars,rightBars,rightleftbars+rightBars+1) != -1 Then
SH = H[rightBars];
highUsePivot = SH[1];
if SwingLow(1,l,rightleftbars,rightBars,rightleftbars+rightBars+1) != -1 Then
SL = L[rightBars];
lowUsePivot = SL[1];
var : short(0),long(0),osc(0);
short = ema(volume, 5);
long = ema(volume, 10);
osc = 100 * (short - long) / long;
condition1=toggleBreaks and CrossDown(close,lowUsePivot)
and !(open - close < high - open) and osc > volumeThresh ;
if condition1 then
plot1(h,"1",yellow,def,14);
2)함수를 사용하여 실행은 정상 이지만 점그래프가 그려지지 않음
실행식)
input:rightleftbars(15);
input:volumeThresh(20);
var1=허9300test(15,20);
plot1(var1);
함수식)
input:rightleftbars(numeric);
input:volumeThresh(numeric);
var: toggleBreaks(true);
var:rightBars(0);
rightBars=rightleftbars;
var : SH(0),SL(0),highUsePivot(0),lowUsePivot(0),tx1(0),tx2(0);
if SwingHigh(1,h,rightleftbars,rightBars,rightleftbars+rightBars+1) != -1 Then
SH = H[rightBars];
highUsePivot = SH[1];
if SwingLow(1,l,rightleftbars,rightBars,rightleftbars+rightBars+1) != -1 Then
SL = L[rightBars];
lowUsePivot = SL[1];
var : short(0),long(0),osc(0);
short = ema(volume, 5);
long = ema(volume, 10);
osc = 100 * (short - long) / long;
condition1=toggleBreaks and CrossDown(close,lowUsePivot)
and !(open - close < high - open) and osc > volumeThresh ;
if condition1 then
허9300test=h;
2020-10-16
813
글번호 143141
답변완료
질문드립니다 답변 부탁드릴게요 ㅍ.ㅍ
안녕하세요
어제 질문에 대한 답변 잘 받았습니다
지표식을 검색식으로 변환시켜주셨는데요
이렇게요
condition1 = Highest(H,2)[2] >= C[4]*1.06;
condition2 = Accumn(H-O,1)[3] > Accumn(H-O,1)[2];
condition3 = Highest(H,2)[2] > Highest(H,1)[1];
condition4 = AccumN(v,1)[1] <= AccumN(v,2)[2]*0.30;
condition5 = AccumN(v,1)[2] > AccumN(v,1)[1] and AccumN(v,1)[2] > AccumN(v,1)[3]*0.1;
condition6 = countif(m >= 500000000,3)[1] == 3;
condition7 = (AccumN(money,3)[1]/AccumN(Volume,3)[1]-C[4])/(highest(H,3)[1]-C[4]) >= 0.65;
condition8 = Accumn(Volume,2)[2]/Accumn(Volume,2)[4] >= 8;
condition9 = Accumn(Volume,2)[2]/Accumn(Volume,4)[4] >= 8;
condition10 = Accumn(Volume,2)[2]/Accumn(Volume,6)[4] >= 8;
condition11 = Accumn(Volume,2)[2]/Accumn(Volume,8)[4] >= 8;
condition12 = Accumn(Volume,2)[2]/Accumn(Volume,10)[4] >= 8;
condition13 = Highest(H,3)[1] > Highest(H,90)[4];
condition14 = AccumN(Volume,3)[1] > Highest(AccumN(v,3),90)[4];
condition15 = C[1] >= C[4]*1.06;
condition16 = C[1] <= C[2]*1.01 and C[1] >= C[2]*0.99;
condition17 = AccumN(DownVol,1)[1]/AccumN(Volume,1)[1] >= 0.45 and AccumN(DownVol,1)[1]/AccumN(Volume,1)[1] <= 0.60;
condition18 = C[1] < C[4]*1.06;
if condition1 and condition2 and condition3 and condition4 and condition5 and condition6 and condition7 and
(condition8 or condition9 or condition10 or condition11 or condition12) and
condition13 and condition14 and ((condition15 and (condition16 or condition17)) or condition18) Then
find(1);
근데 여기서 궁금한점이있습니다.
질문 1. 저 조건들 뿐만 아니라 여러가지 더 확장해서 사용할건데요
그렇게 되면 컨디션 1 2 3 4 쭉쭉늘어나서 1000까지 될거같아요
컨디션 1 2 3 들을 컨디션 1로 모아서 해도 되나요?
그렇게 해도 똑같은 종목검색이 될까요? 결과값이 같을지...
예를 들면 이렇게요
(18개 컨디션들을 and or로 통합해서 하나의 컨디션으로)
condition1 = Highest(H,2)[2] >= C[4]*1.06 and Accumn(H-O,1)[3] > Accumn(H-O,1)[2] and Highest(H,2)[2] > Highest(H,1)[1] and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.30 and AccumN(v,1)[2] > AccumN(v,1)[1] and AccumN(v,1)[2] > AccumN(v,1)[3]*0.1 and countif(m >= 500000000,3)[1] == 3 and (AccumN(money,3)[1]/AccumN(Volume,3)[1]-C[4])/(highest(H,3)[1]-C[4]) >= 0.65 and (Accumn(Volume,2)[2]/Accumn(Volume,2)[4] >= 8 or Accumn(Volume,2)[2]/Accumn(Volume,4)[4] >= 8 or Accumn(Volume,2)[2]/Accumn(Volume,6)[4] >= 8 or Accumn(Volume,2)[2]/Accumn(Volume,8)[4] >= 8 or Accumn(Volume,2)[2]/Accumn(Volume,10)[4] >= 8) and Highest(H,3)[1] > Highest(H,90)[4] and AccumN(Volume,3)[1] > Highest(AccumN(v,3),90)[4] and ((C[1] >= C[4]*1.06 and (C[1] <= C[2]*1.01 and C[1] >= C[2]*0.99 or AccumN(DownVol,1)[1]/AccumN(Volume,1)[1] >= 0.45 and AccumN(DownVol,1)[1]/AccumN(Volume,1)[1] <= 0.60)) or C[1] < C[4]*1.06);
if condition1 then find(1);
질문 2. 두번째 질문은 첫번째 질문과 비슷하지만 좀 다릅니다.
질문 1은 컨디션들의 통합이 되나 안되나 여부였고
질문 2는 find의 질문입니다.
즉 컨디션 1~18까지 find 또 추가해서
컨디션 19~36까지 finf 또 추가해서
컨디션 37~54까지 find 또 추가해서 ....쭈욱해서
컨디션 500정도까지 한다고 했을떄
find 가 20개가 넘어가게 됩니다.
하나의 종목검색식에서 복수의 find를 쓸수있는지요
있다면 어떻게 작성해야한는건지 알려주세요 즉,
find 를 하나의 종목검색식에서 여러개 사용할수 있는 방법좀 알려주세요
질문 3. 간혹가다 예스랭귀지가 작동하지않습니다.
혹시 재설치를 하게되면 이럴때 안에 저장되어있는
시스템식 종목식 지표식들이 날라갈까봐 걱정되요
저장되어있는 식들을 살릴수 있는 방법좀 알려주세요
2020-10-16
788
글번호 143140
답변완료
수식 수정 및 보완 부탁드립니다.
현재 다른 시그널이 올때까지 기존 시그널 자리가오면 계속 진입하는데
익절하고 나온 시그널은 다시 진입하지 않게 해주세요.
익절하면 시그널 리셋 입니다.
손절시만 다시 진입하게 해주시고 다시 진입전 새로운 시그널이 오면 먼저 오는 시그널로 진입하게 해주세요.
그리고 현재 기준봉의 절반에서 익절청산으로 되어있는데
기준봉의 (고가-저가) 크기가 12틱 이상일 경우에만 시그널로 인정하고 진입하게 부탁드립니다.
그보다 낮은경우에는 진입금지
+추가
매매를 시작한 시간부터 조건 카운팅되게 할 순 없나요?
예를들어 아래수식에선 10시 15분 시작인데 그 이전 데이터를 포함해서 조건을 카운팅해서
진입을 하더라구요.
10시 15분 시작이면 이전데이터는 무시하고 시작시간부터 조건이 만들어지면 진입되는식으로 부탁드립니다.
아래 수식에서 수정부탁드립니다.
input : StartTime(101500),EndTime(130000);
var : Tcond(false);
var : T(0),T1(0),P(0),N(0),B(False),S(False);
var : HH(0),HL(0),HM(0),LL(0),LH(0),LM(0),cnt(0);
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);
}
if EndTime > StartTime Then
SetStopEndofday(EndTime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(EndTime);
}
if C > O Then
T = 1;
if C < O Then
T = -1;
if T != T[1] Then
{
T1 = T[1];
}
if T == 1 and CountIf(C > O and C > C[1],2) == 2 Then
{
T = 2;
P = Index[1];
if T1 == -2 Then
{
LL = L;
LH = H;
For cnt = 0 to Index-N
{
if L[cnt] < LL then
{
LL = L[cnt];
LH = H[cnt];
LM = (LL+LH)/2;
}
}
}
}
if T == -1 and CountIf(C < O and C < C[1],2) == 2 Then
{
T = -2;
N = Index[1];
if T1 == 2 Then
{
HH = H;
HL = L;
For cnt = 0 to Index-P
{
if H[cnt] > HH then
{
HH = H[cnt];
HL = L[cnt];
HM = (HH+HL)/2;
}
}
}
}
if MarketPosition == 0 and HL > 0 and NextBarOpen < HL and Tcond == true Then
{
Buy("매수",AtStop,HL+PriceScale*3);
ExitLong("매수익절.",AtLimit,HM);
}
if MarketPosition == 1 Then
{
ExitLong("매수익절",AtLimit,HM[BarsSinceEntry]);
ExitLong("매수손절",AtStop,L[BarsSinceEntry+1]);
}
if MarketPosition == 0 and LH > 0 and NextBarOpen > LH and Tcond == true Then
Sell("매도",AtStop,LH-PriceScale*3);
ExitShort("매도익절.",AtLimit,LM);
if MarketPosition == -1 Then
{
ExitShort("매도익절",AtLimit,LM[BarsSinceEntry]);
ExitShort("매도손절",AtStop,H[BarsSinceEntry+1]);
}
2020-10-16
894
글번호 143136
답변완료
안녕하세요
지표부탁 합니다.
일목균형지표의.후행성 지표를 단독으로 하구요.
예시)20개전 에 표시를하는것으로 막대1개만 수직선으로 길게 표시할수 없을까요.
(변화의 위치알수수있게요)(표시 현재값을 알고자 하기보단.20개전 캔들을 알고자함입니다
감사합니다.
2020-10-15
733
글번호 143128
대구어린울프 님에 의해서 삭제되었습니다.
2020-10-15
3
글번호 143127