커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1345
글번호 230811
와우리 님에 의해서 삭제되었습니다.
2025-01-03
304
글번호 186837
답변완료
질문 부탁드립니다
For 문 관련해서 반복 특성에 대해서 궁금한데요
아래 같은 수식의 for 문에서
if h>l*1.08 Then
{
TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999);
For cnt = 49 DownTo 1
{
ii[cnt] = ii[cnt-1];
}
ii[0] = Index;
if ii[1] > 0 and ii[0] >= ii[1]+5 then
{
if (ii[1] >= ii[2]+5 and ii[2] > 0) or ii[2] == 0 Then
{
StartBarIndex = ii[1];
}
Else
{
if ii[1] < ii[2]+5 and ii[2]>0 and ii[3] ==0 Then
{
startbarindex = ii[2];
}
StartBarIndex = 0;
For cnt = 1 to 49
{
if ii[cnt] >= ii[cnt+1]+5 and ii[cnt+1] > 0 Then
{
StartBarIndex = ii[cnt+1];
}
}
}
만약 cnt값이 3 일때 조건이 true 라면 거기서 for loop 이 중단되고 startbarindex 에 ii[4] 가 들어가는게 맞죠?
그런데
var1 = Index;
var2 = var1[1];
var3 = H;
value1 = 0;
Value2 = 0;
for cnt = 1 to (var1-var2)-1
{
if h[cnt] > var3 Then
{
value1 = value1 + H[cnt];
Value2 = Value2 + 1;
}
}
if Value2 >= 3 Then
value3 = value1/Value2;
Else
Value3 = 0;
이럴때는 var3 보다 큰 고가값을 찾으면 중단되는게 아니라 루프 횟수가 끝날때까지 계속 탐색을 하는데
위의 경우와 이 경우의 차이가 뭔지 헷갈립니다
***그리고 이 식에서 가장 처음 조건을 만족하는 h값은 h[1] 을 변수에 저장하면 되는데, 가장 마지막에 만족하는 h값을 찾으려면 어떻게 해야할까요??
답변 부탁드립니다
감사합니다
2025-01-03
530
글번호 186836
답변완료
수식 수정 부탁드립니다.
if c < bbbot2 and bbbot2 < h and c <o Then
{
sell("s")
}
위의 진입식입니다.
*만약 최근에 sp1으로 청산되었다면 위의 조건을 만족하면서 추가로 최근 청산가격 이하로
종가가 형성되어야 진입한다.
LatestExitName (0) == "sp1" and LatestExitPrice(0) > c
*첨부파일처럼 같은 봉에서 sp1으로 익절청산되었다면 위의 조건을 만족하면서 추가로 청
산가격보다 종가가 작아야 진입한다.
두가지 좀 만들어 주셔요
2025-01-03
586
글번호 186835
답변완료
지표 질문입니다
Input : Period(20), MultiD(2);
var : MAv(0),BBup(0),BBdn(0);
MAv = ma(C,Period);
BBup = BollBandUp(Period,MultiD);
BBdn = BollBandDown(Period,MultiD);
if MAv[1]>MAv[2] and MAv<MAv[1] Then
var1=MAv[1];
if MAv[1]<MAv[2] and MAv>MAv[1] Then
var2=MAv[1];
if BBdn[1]>BBdn[2] and BBdn<BBdn[1] Then
var3=BBdn[1];
if BBup[1]<BBup[2] and BBup>BBup[1] Then
var4=BBup[1];
var1의 당일 최고치를 표시한다
var2의 당일 최저치를 표시한다
var3의 당일 최고치를 표시한다
var4의 당일 최저치를 표시한다
감사합니다
2025-01-03
623
글번호 186834
답변완료
종목 검색 부탁드립니다.
선행1=(highest(high,9)+lowest(low,9)+highest(high,26)+lowest(low,26))/4;
선행2=(highest(high,52)+lowest(low,52))/2;
거래=V>V(1)*10;
최종=sum(거래,20)>0 &&
Crossup(H,Max(선행1(25),선행2(25)));
최종&&!최종(1)
종목 검색식 부탁드립니다
2025-01-02
590
글번호 186833
답변완료
시스템식 부탁드립니다.
안녕하세요.
아래 조건에 맞는 시스템식 부탁드립니다.
전략 : 물타기 및 불타기 전략
종목 : 해외선물
차트 : 10분봉
매수조건 : 10일 이평선 20일 이평선 상향 돌파시 매수
불타기 : 포지션 진입 이후 진입가격 대비 20틱 상승시 1계약 추가 매수
물타기 : 포지션 진입 이후 진입가격 대비 20틱 하락시 1계약 추가 매수
매수익절 : 전체 수익이 20틱 이상 수익시 올 청산
매수손절 : 전체 수익이 20틱 이상 손실시 올 청산
매매중단 : 일 청산 수익이 40틱 이상일 경우 매매중단
일 청산 손실이 40틱 이상일 경우 매매중단
매도조건 : 10일 이평선 20일 이평선 하향 돌파시 매도
불타기 : 포지션 진입 이후 진입가격 대비 20틱 하락시 1계약 추가 매도
물타기 : 포지션 진입 이후 진입가격 대비 20틱 상승시 1계약 추가 매도
매도익절 : 전체 수익이 20틱 이상 수익시 올 청산
매도손절 : 전체 수익이 20틱 이상 손실시 올 청산
매매중단 : 일 청산 수익이 40틱 이상일 경우 매매중단
일 청산 손실이 40틱 이상일 경우 매매중단
매매조건 : 하루에 매수 매도 포함 총 최대 3번만까지만 진입가능
2025-01-03
481
글번호 186832
답변완료
문의드립니다
var : 상태(0);
Condition2 = weekLow(2)>weekLow(1);
if Condition2==true Then 상태=10;
Plot1(상태,"a");
이렇게 하면 '상태'가 0 이 되고
var : 상태(0);
Condition2 = weekLow(2)<weekLow(1);
if Condition2==true Then 상태=10;
Plot1(상태,"a");
이렇게 해야 (부등호 차이) 정상적으로 10 이 되는데 이게 왜 이런건지 모르겠습니다.
언제나 감사드립니다.
2025-01-02
650
글번호 186829
답변완료
질문 드리겠습니다
몇 가지 질문 부탁드립니다
질문1)
현재봉과 직전봉을 비교해서
직전봉이 현재봉보다 크다면 그 값을 현재봉에 나타내고,
그렇지 않다면 그냥 현재봉값을 그대로 유지하게 하려는 조건을 만들고자 합니다
아래처럼 작성하면 문제가 생기는데요
예를들어서
차트상에서 2봉전 값이 10, 1봉전이 5 , 0봉이 8 이라고 한다면
원하는 바에 따르면 2봉전이 1봉보다 크므로 1봉전에는 10의 값을 나타내야되고, 0봉은 1봉전보다 (차트상에서) 크기때문에
0봉 값 8이 그대로 출력이 되어야하는데
아래처럼 작성하면
2봉전 값이 1봉으로 대입되면서 0봉보다 더 크기 때문에 계속 10이 유지가 됩니다
혹시 비교를 한다음에 차트상의 값으로 리셋을 하거나 변수를 이용해서 새로운 봉이 나오면 다시 비교하는 방식이 구현 가능한가요?
제가 원하는건
2봉전: 10,
1봉전 : 10,
0 봉: 8 이런식으로 나오게 하고싶습니다
var: cnt(0), sum1(0), sumi(0),sumsqrt(0),t(0),stand(0);
var : sum2(0),sumi2(0),avg2(0);
array: ii[50](0),aa[50](0);
if h>l*1.08 Then
{
TL_NEW(sDatE,sTimE,h*1.15,sDatE,sTimE,99999);
For cnt = 49 DownTo 1
{
aa[cnt] = aa[cnt-1];
}
aa[0] = h;
if aa[1]>aa[0] and aa[1]>0 Then
{
aa[0]=aa[1];
}
Plot11(aa[0],"aa",Orange,Def,1);
}
질문2) 수식을 하나 부탁드립니다
0봉 조건만족봉의 값 (aa[0]) 과 전봉들 값을 순차적으로 더해서 평균을 냈을때 0봉 보다 값이 클때 0봉에 그 값을 표시를 하고 싶습니다
예를들어서
먼저 0봉과 전봉의 평균을 (0봉+전봉의 평균) 내서 0봉보다 크면, 그값을 0봉에 출력하고
그렇지 않다면
전전봉까지 더해서 평균을 내고 (0봉+전봉+전전봉의 평균) 0봉의 값과 비교해서 크면 0봉에 출력하고 loop 를 끝내는 식을 만들고 싶습니다
var : cnt(0), sum1(0), sumi(0);
var : t(0),StartBarIndex(0);
Array : ii[50](0),aa[50](0);
if h>l*1.08 Then
{
TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999);
var1=Index;
Var2=var1[1];
For cnt = 49 DownTo 1
{
aa[cnt] = aa[cnt-1];
}
aa[0] = h;
For cnt = 49 DownTo 1
{
ii[cnt] = ii[cnt-1];
}
ii[0] = Index;
For cnt = 1 to 49
{
sum1=sum1+aa[cnt];
sumi=sumi+1;
}
value1=sum1/sumi;
}
감사합니다
2025-01-03
548
글번호 186828
답변완료
진입시점의 지표를 데이터화 하고싶은데
진입시점의 지표를 데이터화하고싶은데 생각한게
if ~ then buy("buy")에서 출력값 "buy"에
stok, atr이나 작성된 사용자함수를 집어넣고싶은데 방법없을까요?
예를들어 일단 진입후 5봉청산 입력해놓은후 진입시점별로 지표값
stok(0~100) 뜨게한후 '시스템성능보고서'상 '거래내역'을
엑셀로보내면 분석이 용이할듯합니다
2025-01-02
526
글번호 186827