커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3498
글번호 230811
회원 님에 의해서 삭제되었습니다.
2023-08-16
305
글번호 171515
답변완료
수식수정요청
안녕하세요 늘 도움 감사드립니다.
아래의 갭 발생 수식을 전봉 기준으로 발생한 상승 갭 하락 갭 을 시스템 신호로
표시할수 있도록 부탁드립니다
var : gap(0),tx1(0),tx2(0);
gap = DayOpen-DayClose(1);
if gap < 0 Then
{
Value2 = DayLow;
}
Else if gap > 0 Then
{
Value2 = DayHigh;
}
Else
{
value1 = 0;
Value2 = 0;
}
if value1 > 0 Then
Plot1(value1);
Else
NoPlot(1);
if value2 > 0 Then
Plot2(value2);
Else
NoPlot(2);
2023-08-16
775
글번호 171509
답변완료
수식문의
안녕하세요
당일 1회이상 조건에 만족된 종목을 찾는 내용으로 변경해 주신 검색식입니다
30분봉 500봉으로 검색해보니 종목검색이 안됩니다. 검토 부탁드립니다
Input : DayPeriod(20),P1(60),P2(120),NC(12), Mult(1.01),SV(100000);
Var : T(0),S(0),Cnt(0),Sum(0),Dayma(0);
if sDate != sDate[1] Then
Condition1 = False;
Sum = 0;
For cnt = 0 to Dayperiod-1
{
Sum = Sum + DayClose(Cnt);
}
Dayma = Sum/DayPeriod;
Var1 = Ma(C,P1);
Var2 = Ma(C,P2);
if CrossDown(C,Var1) Then
{
T = 1;
if Var1 > Var2 and T[1] == -1 and Index <= S+NC and C >= DayClose(1)*Mult and
C > Dayma and C>O and DayVolume(0)>SV Then
Condition1 = true;
}
if CrossDown(C,Var1) Then
{
T = -1;
S = Index;
}
if T == -1 and C < Var2 Then
T = -2;
if Condition1 == true Then
Find(1);
2023-08-16
844
글번호 171505
회원 님에 의해서 삭제되었습니다.
2023-08-16
548
글번호 171504
답변완료
수치선 부탁 드립니다.
* 매번 도움에 고맙습니다.
* 추세선 부탁 드립니다.
<기준> 이전봉(c[1]) 기준 수평 추세선 부탁 드립니다.
ㅇ하선기준
1. 이전봉 저가가 이전 10개 봉 중 최저가 일것
2. 추세선 시작점은 이전 저점(L[1]) 부터 L[100] 까지
3. 이전 3개(변수) 추세선 까지만 보여줌(3개 이전 추세선은 삭재)
4. 추세선 3개는 최소 10틱(변수지정) 이상 차이가 나야 다음 추세선 표시
ㅇ상선기준
1. 이전봉 고가가 이전 10개 봉 중 최고가 일것
2. 추세선 시작점은 이전 저점(H[1]) 부터 H[100] 까지
3. 이전 3개(변수) 추세선 까지만 보여줌(3개 이전 추세선은 삭재)
4. 추세선 3개는 최소 10틱(변수지정) 이상 차이가 나야 다음 추세선 표시
* 고맙습니다. 좋은 한주 되십시요^^
2023-08-17
1009
글번호 171501
답변완료
검토 부탁드립니다.
1. 매달 20~31일 사이에 매수 진입 (20~31일 변수로)
2. 달이 변경될때 매도진입으로 전환
3. 매달 1~5일 사이 매도청산 (1~5일 변수로)
예시) 이지랭귀지에서 사용하던 변수있데 예스에 적용 부탁드립니다.
if dayofmonth(date)>= 변수 then 매수진입
if month(date)<>month(date[1]) then 매도진입
If dayofmonth(date)> 변수 then 매도청산
2023-08-16
1377
글번호 171492
답변완료
조건부 수식 최소 최대 값 나타나게 수정 부탁 드려요
var : sum1(0,Data1),sum2(0,Data1),sum3(0,Data1),sum4(0,Data1),sum5(0,Data1);
sum1 = (Data2(OpenD(0))-Data7(OpenD(0)));
sum2 = (Data3(OpenD(0))-Data8(OpenD(0)));
sum3 = (Data4(OpenD(0))-Data9(OpenD(0)));
sum4 = (Data5(OpenD(0))-Data10(OpenD(0)));
sum5 = (Data6(OpenD(0))-Data11(OpenD(0)));
[예시] sum1 = 3.5, sum2 = 1.5, sum3 = 0.25. sum4 = -1.75, sum5 = -2.8
1. sum1~sum5 값 중에 양수 값 중 최소 값 나타나게 해주세요.
예시 중 양수 값은 sum1,sum2,sum3 이고
양수 중 최소 값은 sum3 이므로 sum3 값을 지표로 나타내주세요.
2. sum1~sum5 값 중에 음수 값 중 최대 값 나타나게 해주세요.
예시 중 음수 값은 sum4,sum5 이고
음수 중 최대 값은 sum4 이므로 sum4 값을 지표로 나타내주세요.
2023-08-16
1121
글번호 171491
답변완료
부탁드립니다
주가등락률:[일]n봉전(중) 종가대비 nn봉전 종가등락률 nnn%이상
기준봉 거래대금 : [일]주기, n봉전 거래대금(일:백만, 분:천) nn이상 nnn이하
상세이평돌파:[5분]n봉전 단순(종가 nn )이평이 단순(종가 nnn)이평을 nnnn봉이내 골든크로스 nnnnn회이상
신고가:[일]n봉전 고가가 nn봉이내 nnn봉 신고가 발생
여기서 n은 변수값이라 생각하고 파워종목검색에서 원할때 원하는 변수값을 적어서 쓰는 종목검색 수식을 원합니다.
2023-08-17
849
글번호 171490
답변완료
문의 드립니다
수고 많으십니다.
아래 수식에서 3가지 변경 원합니다. 청산틱수,첫진입틱수,추가진입틱수 위치를 지정할 수 있도록 해주세요.
1.현재 진입되어 있는 물량의 청산틱수는 하락에서 상승으로, 상승에서 하락으로 추세가 바뀌는 시점에 전량 청산되는데, 추세가 바뀐 후 수 틱 혹은 몇 틱이 더 추가되는 지점으로 지정할 수 있도록 변경 부탁합니다.
2.현재 첫진입틱수는 추세가 바뀐 후 전고점, 전저점 대비 연속되는 추세에서 수 틱 혹은 몇 틱이 추가되는 지점에 첫진입 하도록 지정하는데, 진입 물량 청산 지점(진입 물량 청산 후)에 수 틱 혹은 몇 틱이 더 추가되는 지점으로 지정할 수 있도록 변경 부탁합니다.
3.추가진입틱수는 현재처럼 첫진입 후 첫진입 지점에 수 틱 혹은 몇 틱이 추가될 때마다 추가 진입할 수 있도록 지정할 수 있게 변경부탁합니다.
그리고 현재 수식에서 손절이나, 추가진입 수량을 단계마다 다르게 지정 한 부분은 그대로 사용할 수 있게 변경없이 유지시켜 주세요.
감사합니다, 수고하세요.
Input:length(12),손절틱수(990);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),TL_Val1(0),TL_Val2(0),color(0);
var:T(0),B(0),Bx(0),S(0),Sx(0);
Array:고점[10,2](0),저점[10,2](0);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then
TL_Delete(TL2);
}
if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then{
color = RED;
# buy("b");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then
TL_Delete(TL3);
}
if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{
color = blue;
# sell("s");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
input : N(10),첫진입틱수(241),추가진입틱수(200);
#상승구간의 마지막저점 저장
if Color == RED Then
{
var1 = 저점[2,1];
}
#하락구간의 마지막 고점 저장
if Color == BLUE Then
{
var2 = 고점[2,1];
}
if MarketPosition <= 0 Then
{
if color == BLUE and var1 > 0 and L > var1-PriceScale*첫진입틱수 Then
Buy("b",AtLimit,var1-PriceScale*첫진입틱수,1);
}
if MarketPosition == 1 Then
{
value1 = Floor(MaxEntries/N)+1;
Buy("bb",AtLimit,(var1[BarsSinceEntry]-PriceScale*첫진입틱수)-(PriceScale*추가진입틱수)*MaxEntries,value1);
if T == -1 and 고점[1,1] > 0 Then
ExitLong("bx1",AtLimit,고점[1,1]+PriceScale*1);
if T == 1 and 고점[2,1] > 0 Then
ExitLong("bx2",AtLimit,고점[2,1]+PriceScale*1);
}
if MarketPosition >= 0 Then
{
if Color == RED and Var2 > 0 and H < var2+PriceScale*첫진입틱수 Then
Sell("s",AtLimit,Var2+PriceScale*첫진입틱수,1);
}
if MarketPosition == -1 Then
{
value1 = Floor(MaxEntries/N)+1;
Sell("ss",AtLimit,(var2[BarsSinceEntry]+PriceScale*첫진입틱수)+(PriceScale*추가진입틱수)*MaxEntries,value1);
if T == 1 and 저점[1,1] > 0 Then
ExitShort("sx1",AtLimit,저점[1,1]-PriceScale*1);
if T == -1 and 저점[2,1] > 0 Then
ExitShort("sx2",AtLimit,저점[2,1]-PriceScale*1);
}
2023-08-17
1478
글번호 171489