커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1408
글번호 230811
답변완료
문의
안녕하세요
1. 예스렝기지에 수식들을 폴더별로 정리해놨는데요
이 정리된 폴더들 그대로 다른 컴퓨터에 옮길 수 있는 방법이 있을까요?
수식만 옮기는 방법은 아는데 그 다음에 다시 다 그 컴퓨터에서 폴더를 생성하고 집어넣는
방법 말고요
지금 폴더구조 그대로 옮기는 간단한 방법이 있나 궁금합니다.
2024-05-28
744
글번호 180057
답변완료
문의드립니다.
늘 고맙습니다.
1. 시간제한을 여러 구간대로 나눠서 사용하려고 하는데요.
어제 가르쳐주신 것을 가지고 응용을 해보았습니다.
그런데 Tcond1과 4,5는 제대로 색깔이 나오는데요.
그런데 2에는 휜색이 나오지 않고 아무색도 안나오고, 3번구간에 노란색이 아닌 휜색이 나옵니다.
복사해서 그대로 한다고 했는데 뭐가 잘못된 건지 모르겠네요.
도움 부탁드립니다.
input : StartTime1(180000),EndTime1(073000);
input : StartTime2(073000),EndTime2(083000);
input : StartTime3(083000),EndTime3(090000);
input : StartTime4(090000),EndTime4(150000);
input : StartTime5(150000),EndTime5(160000);
var : Tcond1(false),Tcond2(false),Tcond3(false),Tcond4(false),Tcond5(false);
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond1 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
{
Tcond1 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime2) or
(sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then
{
Tcond2 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime2) or
(sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then
{
Tcond2 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime3) or
(sdate == sdate[1] and stime >= StartTime3 and stime[1] < StartTime3) Then
{
Tcond3 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime3) or
(sdate == sdate[1] and stime >= EndTime3 and stime[1] < EndTime3) Then
{
Tcond3 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime4) or
(sdate == sdate[1] and stime >= StartTime4 and stime[1] < StartTime4) Then
{
Tcond4 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime4) or
(sdate == sdate[1] and stime >= EndTime4 and stime[1] < EndTime4) Then
{
Tcond4 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime5) or
(sdate == sdate[1] and stime >= StartTime5 and stime[1] < StartTime5) Then
{
Tcond5 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime5) or
(sdate == sdate[1] and stime >= EndTime5 and stime[1] < EndTime5) Then
{
Tcond5 = False; #프리장
}
#############################################################################
if tcond1 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Gray);
TL_SetSize(Value98,1);
}
if tcond2 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,White);
TL_SetSize(Value98,1);
}
if tcond3 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Yellow);
TL_SetSize(Value98,1);
}
if tcond4 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Red);
TL_SetSize(Value98,1);
}
if tcond5 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Lime);
TL_SetSize(Value98,1);
}
2. 그리고 예를 들어 083100 시간의 캔들만 지정해서 사용하려면 어떻게 해야하나요?
083100봉에서 50포 이상의 양봉이 나왔다면~~~
2024-05-28
784
글번호 180056
답변완료
종목검색식부탁드림니다.
종목검색식부탁드림니다.
항상감사드림니다.
crossup(c,c(20)) and
crossup(c,c(60)) and
O<C
and
V(1)*5<=V
2024-05-28
1156
글번호 180055
쿠르나미 님에 의해서 삭제되었습니다.
2024-05-28
3
글번호 180054
답변완료
수식
안녕하세요.
늘 감사한 마음으로 질문 드려요..
키움 수식인데요.. YL 검색식(차트에 표시하는 것)으로 부탁 드립니다.
부탁드리는 것은 2가지 수식입니다.
1) 아래 수식을 변경 부탁 드려요.
기준봉=C(1)*(1+12/100)<H;
FF=countsince(기준봉==1,C<O)==5;
GG=FF && !FF(1);
조건=countsince(GG==1,O<C)==3;
조건 && !조건(1)
2) 기준봉이 양봉일 때
* 기준봉 발생 후 n봉(예 10봉) 이내에
* 현재의 종가 값이 기준봉의 시가와 종가 사이에 있는 조건을 만족하는 봉에 [강조]를 표시하고 싶습니다.
항상 많이 고맙습니다. 좋은 하루 보내세요.
2024-05-28
999
글번호 180053
살빼고싶다 님에 의해서 삭제되었습니다.
2024-05-28
212
글번호 180052
답변완료
문의드립니다.
안녕하세요.
항상 도움 주셔서 감사합니다.
일봉으로 거래 시,
최근 매수(또는 매도)가 발생한 경우에는 진입을 하지 않으려고 합니다.
현재는
if maxentries>0 또는 countif(maxentries>0,10)==0 이런 식으로 체크하고 있었는데 이거 당일 매도되는 경우에는 확인이 불가능하네요.
당일에 매수/매도가 동시에 일어나는 경우를 체크하고 싶은데 어떻게 하면 되는지 문의드립니다.
다시 한 번 감사드립니다.
즐거운 하루 보내세요.
2024-05-28
718
글번호 180051
답변완료
수식이 문제가 있는거 같아 재문의 드립니다
이하 작성해주신 수식입니다
input : P1(5),P2(10),P3(20),P4(50),p5(100);
var : cnt(0),mx(0),mn(0),t(0);
Array : mav[10](0);
mav[1] = ma(C,P1);
mav[2] = ma(C,P2);
mav[3] = ma(C,P3);
mav[4] = ma(C,P4);
mav[5] = ma(C,P5);
mx = 0;
mn = 0;
For cnt = 1 to 5
{
if max(C,O) >= mav[cnt] and mav[cnt] >= min(C,O) Then
{
if mx == 0 or (mx > 0 and mav[cnt] > mx) Then
mx = mav[cnt];
if mn == 0 or (mn > 0 and mav[cnt] < mn) Then
mn = mav[cnt];
}
}
if mav[3] > mav[3][1] Then
T = 1;
if mav[3] < mav[3][1] Then
T = -1;
if C > mav[3] and !(T == -1 and (mav[3][1]-mav[3])*1.5 > C-mav[3]) Then
{
if mx > 0 Then
{
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
}
Else
Buy("b3");
if MarketPosition <= 0 Then
value1 = lowest(L,2);
}
if C < mav[3] and !(T == 1 and (mav[3]-mav[3][1])*1.5 > mav[3]-C) Then
{
if mn > 0 Then
{
var2 = Ceiling(mn/PriceScale)*PriceScale;
if NextBarOpen > var2 Then
Sell("s1",AtStop,var2);
Else
Sell("s2",AtLimit,var2);
}
Else
Sell("s3");
if MarketPosition >= 0 Then
value2 = highest(H,2);
}
if value1 > 0 Then
ExitLong("bx",AtStop,value1-PriceScale*1);
if Value2 > 0 Then
ExitShort("sx",AtStop,Value2+PriceScale*1);
여기서부턴 문의사항입니다
첫번째 사진을 보시면 b2 매수신호가 왜 등장한지 모르겠습니다.
원글에
#
3. 20선 위에서 마감한 a봉 이후 다음봉부터, a봉과 a봉 이전1봉의 저가중 더 낮은 저가를 1틱 더 낮은 가격으로 돌파시 그 가격에 매수청산과 매도진입
4. 20선 아래에서 마감한 a봉 이후 다음봉부터, a봉 a봉 이전1봉의 고가중 더 높은 고가를 1틱 더 높은 가격으로 돌파 그 가격에 매도청산과 매수진입
라고 요청을 드렸으니 왼편 b3 매수신호 이후 bx로 b3매수한 계약의 매수청산과 동시에 매도진입을 해야되는데 b2라는 매수진입이 발생하는 상황입니다.
##
그리고 아래는 수정 요청사항입니다.
input : 배수(1.5), 봉수(2), 틱수(1);
var : cnt(0),mx(0),mn(0),t(0);
Array : mav[10](0);
mav[1] = ma(C,5);
mav[2] = ma(C,10);
mav[3] = ma(C,20);
mav[4] = ma(C,50);
mav[5] = ma(C,100);
mx = 0;
mn = 0;
For cnt = 1 to 5
{
if max(C,O) >= mav[cnt] and mav[cnt] >= min(C,O) Then
{
if mx == 0 or (mx > 0 and mav[cnt] > mx) Then
mx = mav[cnt];
if mn == 0 or (mn > 0 and mav[cnt] < mn) Then
mn = mav[cnt];
}
}
if mav[3] > mav[3][1] Then
T = 1;
if mav[3] < mav[3][1] Then
T = -1;
if C > mav[3] and !(T == -1 and (mav[3][1]-mav[3])*배수 > C-mav[3]) Then
{
if mx > 0 Then
{
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
}
Else
Buy("b3");
if MarketPosition <= 0 Then
value1 = lowest(L,봉수);
}
if C < mav[3] and !(T == 1 and (mav[3]-mav[3][1])*배수 > mav[3]-C) Then
{
if mn > 0 Then
{
var2 = Ceiling(mn/PriceScale)*PriceScale;
if NextBarOpen > var2 Then
Sell("s1",AtStop,var2);
Else
Sell("s2",AtLimit,var2);
}
Else
Sell("s3");
if MarketPosition >= 0 Then
value2 = highest(H,봉수);
}
if value1 > 0 Then
ExitLong("bx",AtStop,value1-PriceScale*틱수);
if Value2 > 0 Then
ExitShort("sx",AtStop,Value2+PriceScale*틱수);
이평선을 변수로 두고 싶지 않아 빼버렸고 배수는 맞는거 같고, 봉수, 틱수라고 선언한 부분이 제가 원문에
#
3. 20선 위에서 마감한 a봉 이후 다음봉부터, a봉과 a봉 이전1봉의 저가중 더 낮은 저가를 1틱 더 낮은 가격으로 돌파시 그 가격에 매수청산과 매도진입
#
여기에서 제가 선언한 "봉수"가 a봉과 이전봉까지 봉 두개 카운트하는부분, "틱수"라고 선언한 부분이 "1틱 더 낮은 가격" 이 맞을까요? 검수좀 부탁드립니다.
그리고 첫번째 원하는 수정사안입니다
b3, s3가 봉안에 이평선이 없을경우 매수,매도 하는 식인데
그냥 20선 위, 아래에서 가격이 지속되는 두번째 봉에서 매수, 매도하는 식으로 바꾸면 두번째 봉에서 b2,s2와 충돌을 일으킬까요?
두번째 봉에서 b2,s2가 봉 움직임중에 체결되는 감시형 주문인데 if문과 동 시점에 적용되면 감시가 실패했을경우 후적용되는 방식이라면 그렇게 바꿔주세요.
두번째 수정사안입니다.
저렇게 수정된 b3,s3 는 b3x,s4 s3x,b4 로 청산과 진입이 동시에 이루어지게 다른 조건을 설정하려고 합니다.
b3,s3에 한정해서 진입한 봉과 직전봉 두봉 전체의 고가+저가/2 가격을 하향돌파할경우 b3x로 매수청산과 s4매도진입, 상향돌파할경우는 s3x로 매도청산과 b4매수진입
b4와 s4는 손절과 익절을 틱수로 설정할 수 있게 부탁드립니다.
세번째 수정사안입니다.
bx,sx로 청산과 진입을 동시에 했을때, 항상 손실을 보면서 청산과 반대방향으로 진입하는 조건인데 손실틱수를 계산한 후, 청산 익절틱수를 손실틱수 대비 퍼센티지로 변수 설정 부탁드립니다.
오늘도 좋은하루 되세요. 감사합니다.
2024-05-27
788
글번호 180050
답변완료
ma20 crossup 시뮬레이션
시뮬레이션하려구 CPU 7950X 맞췄습니다. ㅎㅎ
ma20 기준으로 하구요.
~로 되어있는것은 가장 결과값이 가장 좋은 인자를 시뮬레이션 돌릴 수 있게...
1) ma20의 90 ~ 110%를 crossup 할 때 매수 (90~110 사이에서 가장 결과값이 좋은 것을 시뮬레이션 해주는 기능)
2) ma20의 90~110%를 crossdown 할 때 매도
3) 1~30% 최고점 도달 후 최고점에서 1~15% 떨어졌을 때 매도
4) stoploss는 -1 ~ -30%
오랜만에 하려니 다 까먹어서 부탁드립니다. ~로 되어 있는 것은 모두 숫자를 선택해서 시뮬레이션 돌릴 수 있게 부탁드려요
2024-05-27
706
글번호 180049