커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7045
글번호 230811
답변완료
조건만족 관련 추가질문
crossup이나 crossdown 같은 조건으로 매수신호를 발생시킨다고 할 때
if 1번조건 and 2번조건 and 3번조건 then {buy();}
이런 시스템의 경우 1, 2, 3번조건이 동시에 충족해야만 신호가 발생하는 것으로 알고있습니다.
대신
1. 1번>2번>3번을 순차적으로 만족하는 경우나
2. 순서 상관없이 해당 조건을 한번 만족한 후에는 나머지 조건이 만족되기 전까지 계속 조건성립인채로 유지되는 방법이 있을까요?(첫 조건 만족 후 몇분안에 조건을 모두 만족시키지 않으면 다시 처음부터)
3 1번 2번을 동시에 사용할 수도 있을까요?
4. 추가로 봉이 형성되는 도중에 crossup같은 조건이 충족되면 신호가 발생하나요?
표현이 가능하다면 아래 식으로 부탁드립니다.
crossup(value1,0) and crossdown(value2,0) and value3=value4 then buy
2022-02-27
906
글번호 156782
답변완료
함수를 만들고 싶은데요
1.원래 있는 함수들이나 지표들(보라색이나 파란색 또는 빨간색 글씨들)은 사용할 때 변수 선언을 하지 않아도 된다는거죠?
사용자 함수를 만든다는 게 지표나 시스템을 만들 때 특정 공식을 매번 쓰기 귀찮으니까 함수로 만들어놓는건가요 ?
2. 근데 프로그래밍을 접해본 적이 없어서 이것저것 보면서 해보고 있습니다.
다름이 아니라 어떤 함수를 만들고 싶은데 검증을 하면 항상
"외부함수의 입력값이 1개 필요합니다"
값을 대입할 수 있는 변수나 배열의 요소, 입력변수,..."
이 두 문장이 항상 뜹니다.
3. 기존에 있는 함수를 복사해서 새로 만들기에 붙여넣기 해도 같은 오류가 발생하는데 뭐가 문제인가요?
만들고 싶은 함수는 많은데 그중 Q&A를 보고 따라해보다 안되는 예시를 올려보겠습니다.
---
아래식은 최근 100봉중 거래량이 1000개인 봉의 갯수를 게산하는 지표식입니다.
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 99{
if v[cnt] == 1000 Then
count = count+1;
}
plot1(count);
---
4. 만약 이 지표식을 함수식으로 만들려면 어떻게 해야 하나요?
5. 그리고 제가 이 지표를 좀 변경해서
n일에 n일부터 최근 10일간 양봉의 갯수를 세는 지표를 만들어봤는데 잘 안됩니다.
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 10{
if OpenD(cnt) < CloseD(cnt) Then
count = count+1;
}
plot1(count);
긴 글 읽어주셔서 감사합니다 수고하세요
2022-02-27
1458
글번호 156781
답변완료
종목검색합니다
다음 조건을 모두 만족하는 종목검색식 구합니다
1. 최근 n봉이내에 볼린저밴드 상단을 돌파했었고
2. 일목균형표 전환선이 기준선 보다 크고, 기준선은 선행스펜1,2보다 크다
3. 전환선과 기준선의 가격차이는 오늘 종가의 20%이내이고, 선행스펜1,2의 가격차이도 오늘
종가의 20%이내이다
4. 거래량은 최근 20일간의 평균보다 2배이상 많다
5. 오늘의 종가는 기준선보다 크다
위1-5의 조건을 모두 만족하는 종목검색식을 구합니다
감사합니다
2022-02-27
1153
글번호 156780
답변완료
문의드립니다
수고많으십니다
채널에 가격과%를넣을려하는데 45줄에 에러 뜨고 맞는지도 모르겠습니다
챠트에 가격과%를 출력하고싶습니다 환절기 감기 조심하시고 수고하십시오
input : P1(1), Mult1(0.5), mult2(0.9), mult3(1.5), mult4(2.5), mult5(3.1), mult6(4.2),mult7(6.8) ;
var : sumV(0), DailyVol(0),text(0), count(0), ChUp1(0), ChDn1(0), ChUp2(0), ChDn2(0), ChUp3(0), ChDn3(0), ChUp4(0), ChDn4(0), ChUp5(0), ChDn5(0), ChUp6(0), ChDn6(0), ChUp7(0), ChDn7(0) ;
sumV = 0;
for count = 1 to P1 {
sumV = sumV+(DayHigh(count)-DayLow(count));
}
DailyVol = sumV / P1;
ChUp1 = dayOpen + DailyVol*Mult1;
ChUp2 = dayOpen + DailyVol*Mult2;
ChUp3 = dayOpen + DailyVol*Mult3;
ChUp4 = dayOpen + DailyVol*Mult4;
ChUp5 = dayOpen + DailyVol*Mult5;
ChUp6 = dayOpen + DailyVol*Mult6;
ChUp7 = dayOpen + DailyVol*Mult7;
ChDn1 = dayOpen - DailyVol*Mult1;
ChDn2 = dayOpen - DailyVol*Mult2;
ChDn3 = dayOpen - DailyVol*Mult3;
ChDn4 = dayOpen - DailyVol*Mult4;
ChDn5 = dayOpen - DailyVol*Mult5;
ChDn6 = dayOpen - DailyVol*Mult6;
ChDn7 = dayOpen - DailyVol*Mult7;
plot1(ChUp1);
plot2(ChUp2);
plot3(ChUp3);
plot4(ChUp4);
plot5(ChUp5);
plot6(ChUp6);
plot7(ChUp7);
plot8(ChDn1);
plot9(ChDn2);
Plot10(ChDn3);
plot11(ChDn4);
plot12(ChDn5);
plot13(ChDn6);
plot14(ChDn7);
For count = 1 to 14
{
Text_Delete(sumv[count]);
Text [count] = Text_New(sDate,sTime,p1[count],"("+NumToStr(P1[count],2)+"%)"+NumToStr(p1[count],2));
Text_Delete(p1[count]);
}
2022-02-27
1054
글번호 156779
답변완료
문의드립니다
안녕하세요?
아래수식에 조건문을 추가하길원합니다
if Condition1 == true Then
{
# 매수/매도청산
If C > value Then
{
Buy();
}
# 매도/매수청산
If C < value Then
{
Sell();
}
}
추가조건:신호발생시 일목앞구름이 양운이어야 매수발생 ,음운이어야 매도발생
(현재봉 기준 앞쪽으로 25봉(26봉?)이 음운이면 매수신호가 발생할수없게,양운이면 매도신호가 발생할수없게).
아래와같이해봤는데 원하는데로 안되고있습니다(음운인데매수가되고,음운인데도 매도가안되는등 ,매수는반대현상)
# 매수/매도청산
If 선행스팬1[25]> 선행스팬2[25] and C > value Then
{
Buy();
}
# 매도/매수청산
If 선행스팬1[25]< 선행스팬2[25] and C < value Then
{
Sell();
}
감사합니다
2022-02-28
1064
글번호 156778
답변완료
수식 질문드립니다.
선물1분봉 입니다.
실제 적용해보고 테스트부탁드립니다.
value5 의 최근 5일간의 average를 당일에 그리고 싶습니다.
부탁드립니다.
일봉지표를 1분봉 하루치에 값하나로 일자로 그리는겁니다.
감사합니다.
if sTime>=90000 and sTime<90100 Then
{
value1 = abs(DayClose[1]-DayOpen);
if value1=0 Then value1 = 0.1;
Else value1 = abs(DayClose[1]-DayOpen);
}
if sTime>= 151900 and sTime<152000 Then
{
Value2 = DayHigh - DayLow;
}
if sTime>= 152000 and sTime<152100 Then
{
Value3 = Value2/Value1;
if Value3>4 Then Value3=4;
Else Value3 = Value2/Value1;
#Value5= (Value3+Value3[1]+Value3[2]+Value3[3]+Value3[4])/5;
}
if sdate!=sdate[1] Then
{
Value2=0;
Value3=0;
Value5=Value3[1];
}
plot4(Value5);
2022-02-27
1179
글번호 156777
답변완료
지표식
혼자 하다가 잘 안되어서 도움 요청 드립니다
이동평균선이 10개 차트에 그려져 있다고 했을 때,
특정 이동평균선 (예를 들어서 20 이동평균선) 과
나머지 이동평균선( 어느것이더도 관계 없음) 들 중에서,
3개가 일정범위 이내에 모여 있는 경우를 강조식으로 나타내고 싶습니다.
예를 들어서 20 이동 평균선과 , 5,10,60 이동평균선이 ,
10틱 이내에 모여있는 경우 등을 표시되도록 하고 싶은 것입니다.
감사 드립니다.
2022-02-27
1257
글번호 156776
답변완료
수식부탁드립니다
1. 첫번째 이미지와 같이 volume[1]*2 < volume 의 조건을 만족하고 이미지의 라인을 돌파 하였는데도 진입하지 않는구간들이자주 보입니다
어떤 부분에서 잘못됬는지 알수있을까요?
2. 여기서 추가로 궁금한건 2번째 이미지에서 라인을 돌파하고 거래량 조건이 만족 하였음에도 왜 다음봉에 진입한건지 궁금합니다. 여기서 생각해봐야할게 거래량 조건이 만족된건 봉의 완성이 된 다음에야 알수있기 때문에 다음봉 진입이라고 생각하였지만
다른 진입을 보았을때 거래량을 만족한 해당 캔들 내에 진입한것도 있어서
일관성 있게 진입되는 모습이 보이지 않아 어떤부분이 문제인지 정확히 파악하기가 어려운것 같습니다
마지막 캡쳐사진은 진입표시가 있는 캔들은 돌파라인을 터치는 하였지만 거래량조건이
만족되지 않아 진입되지 않았어야 했는데 진입하였습니다
3. 백테스트가 가능한 캔들의 갯수는 최대 1만개가 맞나요?
4.진입가격을 신호가격에 지정가로 했을시 체결이 안될경우 호가에 계속 남아있나요?
남아있다면 나중에 해당가격으로 돌아왔을때 체결될수도있는데
진입가격을 신호가격에 지정가로 했을때 체결이 안된다면 얼마후에 취소주문을 할수도있을까요? 부가기능에 시간 자동정정 주문이 있는데 n초 후에 주문을 다시 넣는기능뿐이 없더라구요
슬리피지를 줄이기위해서는 어떤식으로 사용하는게 가장 효과적인가요?
CONDITION은 임의의 변수입니다
If MarketPosition <= 0 and C < CONDITION and Volume[1]*2 <Volume Then
Begin
Buy("매수",AtStop,CONDITION);
End;
If MarketPosition == 1 and C > CONDITION[1] Then
Begin
ExitLong("매수청산",AtStop,CONDITION);
End;
If MarketPosition >= 0 and C > CONDITION and Volume[1]*2 <Volume Then
Begin
Sell("매도",AtStop,CONDITION);
End;
If MarketPosition == -1 and C < CONDITION[1] Then
Begin
ExitShort("매도청산",AtStop,CONDITION);
End;
2022-02-28
1627
글번호 156775
답변완료
지표 수식 변경문의 부탁드립니다
a=BBandsC(Period,D1);
a2=a<c ;
a2 && !a2(1)
period 20
d1 2
2022-02-26
1244
글번호 156773