커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4481
글번호 230811
답변완료
문의드립니다
Input:length(5);
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);
Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0);
Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(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
{
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);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2));
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
TL_SetColor(TL1,MAGENTA);
TL_SetSize(TL1,2);
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
{
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);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2));
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
TL_SetColor(TL1,green);
TL_SetSize(TL1,2);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
mav = ma(C,20); 고점과저점을텍스트수치가 아닌 일자수평선으로 나오게 할수있는지요?
2016-11-24
110
글번호 104326
답변완료
문의드립니다
1.
input : P(18),간격(3),굵기(2);
array : mav[12](0);
mav[1] = wma(c,P+간격*1);
mav[2] = WMA(c,P+간격*2);
mav[3] = WMA(c,P+간격*3);
mav[4] = WMA(c,P+간격*4);
mav[5] = WMA(c,P+간격*5);
mav[6] = WMA(c,P+간격*6);
mav[7] = WMA(c,P+간격*7);
mav[8] = WMA(c,P+간격*8);
mav[9] = WMA(c,P+간격*9);
mav[10] = WMA(c,P+간격*10);
mav[11] = WMA(c,P+간격*11);
mav[12] = WMA(c,P+간격*12);
plot1(mav[1],"1",iff(mav[1] > mav[1][1],RGB(225,228,0),RGB(0,0,0)),def,굵기);
plot2(mav[2],"2",iff(mav[2] > mav[2][1],RGB(255,100,100),RGB(100,100,250)));
plot3(mav[3],"3",iff(mav[3] > mav[3][1],RGB(255,100,100),RGB(100,100,250)));
plot4(mav[4],"4",iff(mav[4] > mav[4][1],RGB(255,100,100),RGB(100,100,250)));
plot5(mav[5],"5",iff(mav[5] > mav[5][1],RGB(255,100,100),RGB(100,100,250)));
plot6(mav[6],"6",iff(mav[6] > mav[6][1],RGB(255,100,100),RGB(100,100,250)));
plot7(mav[7],"7",iff(mav[7] > mav[7][1],RGB(255,100,100),RGB(100,100,250)));
plot8(mav[8],"8",iff(mav[8] > mav[8][1],RGB(255,100,100),RGB(100,100,250)));
plot9(mav[9],"9",iff(mav[9] > mav[9][1],RGB(255,100,100),RGB(100,100,250)));
plot10(mav[10],"10",iff(mav[10] > mav[10][1],RGB(255,100,100),RGB(100,100,250)));
plot11(mav[11],"10",iff(mav[11] > mav[11][1],RGB(255,100,100),RGB(100,100,250)));
plot12(mav[12],"10",iff(mav[12] > mav[12][1],RGB(255,100,100),RGB(100,100,250)));
2.
input : P1(5),P2(20),P3(60);
var1 = ma(C,P1);
var2 = ma(C,P2);
var3 = ma(C,P3);
Condition1 = var1 > var2 and var2 > var3;
Condition2 = var1 < var2 and var2 < var3;
if Condition1 == true Then
plot1(H,"검색",RED);
if Condition2 == true Then
plot1(L,"검색",blue);
.................................................................
1번과 2번 지표를 결합해서 시스템식을 만들고 싶습니다.
매수조건 : 1번지표가 빨간색인데 2번지표가 파란색점에서 나올때 매수
매도조건 : 1번지표가 파란색인데 2번지표가 빨간색점에서 나올때 매도
변수는 조정할 수 있게 부탁드립니다
감사합니다.
2016-11-24
103
글번호 104325
답변완료
수식 부탁드립니다
안녕하세요
예스스탁입니다.
전일 마지막봉 거래량이 기준이면
if date != date[1] Then
var1 = V;
를
if date != date[1] Then
var1 = V[1];
와 같이 변경만 하시면 됩니다.
if date != date[1] Then는 당일 첫봉이라는 표현입니다.
당일첫봉에서 1봉전 거래량이면 전일 마지막봉 거래량입니다.
수정한 식입니다.
if date != date[1] Then
var1 = V[1];
if var1 > 0 and V > var1 Then
buy();
항상 감사드립니다
여기서 종가 봉을 기준으로 a 하면
a 을 기준으로 다음날 시스널은 첫봉을 빼고 그 다음봉 부터
신호를 볼수 있게 가능 할까요
2016-11-24
101
글번호 104323
렉쳐 님에 의해서 삭제되었습니다.
2016-11-24
10
글번호 104322
답변완료
수식 문의 드립니다
두번째 진입후 두시 청산이되는데요
세번째 신호가나오면 청산만 하고 매매종료하려 합니다 감사합니다
input : 시작시간(090300),당일청산시간(140000);
var : idx(0),entry(0),tt(0),t1(0),count(0);
var1 = ema(c,5);
var2 = ema(c,25);
# 당일진입횟수계산
count = 0 ;
for value1 = 0 to 10 {
if entrydate(value1) == date then count = count + 1 ;
}
if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간) Then {
idx = 0;
}
if stime >= 시작시간 and count < 2 Then{
idx = idx+1;
if idx == 1 && var1 > var2
Then buy ("a");
Else
if CrossUp(var1,var2)
then buy("b");
if idx == 1 && var1 < var2
Then sell("c");
Else
if crossdown(var1,var2)
Then sell("d");
}
SetStopEndofday(당일청산시간);
2016-11-24
100
글번호 104308
답변완료
수식부탁드립니다
if date != date[1] Then
var1 = V;
if var1 > 0 and V > var1 Then
buy();
여기에서
전일에 마지막봉 이 기준이 되고 =a 라고 가정을 하면
다음날 a 봉 보다 거래량이 많은 봉이 나오면 매수
2016-11-24
102
글번호 104307
답변완료
시스템 수식 작성을 부탁드립니다.
항상 진입수량은 1을 넘지 않도록 하며
새로운 봉이 시작된후 10초 이후 적용,
현재가가 시가를 돌파하면 (또는 시가에 도달하면) 현재가+10틱에 매수하되
매수 주문후 60초 동안 체결되지 않거나 또는 종가까지 체결되지 않으면 주문 취소되도록 하는
수식 작성을 부탁 드립니다.
감사합니다.
2016-11-24
95
글번호 104306
답변완료
청산 신호 관련 문의
안녕하세요.
시스템 청산신호가 제대로 작동을 안하여 문의 드립니다.
진입 후 종가기준으로 최고가가 진입가격보다 0.5*ATR 이상 상승한 경우, 진입가격에서 본전 청산을 걸어놓고 싶습니다.
If MarketPosition == 1
and Highest(C, BarsSinceEntry) >= (ATR(20)*0.5 + EntryPrice)
Then
ExitLong("saveprofit1", AtStop, EntryPrice);
위 수식으로 작성했을 경우, 신호가 발생하지 않는데, 수식에 어떤 문제가 있는지 알고 싶습니다.
고맙습니다.
2016-11-24
109
글번호 104305
답변완료
문의드립니다.
1.분봉에서 종가가 상한가면 매수(onclose)
2.분봉에서 상한가 ATSTOP 매수
수식부탁드립니다.
2016-11-24
108
글번호 104304