커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7196
글번호 230811
답변완료
수식 추가수정 부탁드립니다
아래수식을 yeslaaguage 편집기에 넣었더니 아래와 같이 메세지가 뜹니다
----------------------------------------
var : intrabarnum(0),intraentrycount(0);
If bdate <> bdate[1] Then
{
Var10 = index;
Var1 = 999;
Var2 = -999;
}
intrabarnum = index - Var10;
If Var1 == 999 and SwingHigh(1,high,3,3,7) != -1 Then
Var1 = SwingHigh(1,high,3,3,7);
If Var2 == -999 and SwingLow(1,low,3,3,7) != -1 Then
Var2 = SwingLow(1,low,3,3,7);
If var1 != 999 and Var1 > DayOpen Then
plot1(var1,"shv");
If var2 != -999 and Var2 < DayOpen Then
plot2(var2,"slv");
If I_MarketPosition == 1 Then
plot3((I_AvgEntryPrice - DayOpen )* 1.618 + I_AvgEntryPrice,"매수목표이익");
if I_MarketPosition == -1 Then
plot4((I_AvgEntryPrice - DayOpen )* 1.618 + I_AvgEntryPrice,"매도목표이익") ;
2
var : intrabarnum(0),intraentrycount(0);
If bdate <> bdate[1] Then
{
Var10 = index;
Var11 = TotalTrades;
Var1 = 999;
Var2 = -999;
}
intrabarnum = index - Var10;
intraentrycount = TotalTrades - Var11;
If Var1 == 999 and SwingHigh(1,high,3,3,7) != -1 Then
Var1 = SwingHigh(1,high,3,3,7);
If Var2 == -999 and SwingLow(1,low,3,3,7) != -1 Then
Var2 = SwingLow(1,low,3,3,7);
If stime < 150500 And intraentrycount < 1 Then
{
If MarketPosition <= 0 and var1 != 999 and Var1 > DayOpen Then
buy("shv", Atstop, Var1);
If MarketPosition >= 0 and var2 != -999 and Var2 < DayOpen Then
sell("slv", Atstop, Def, Var2) ;
}
If MarketPosition == 1 Then
exitlong("매수목표이익", Atlimit, ( entryprice - DayOpen )* 1.618 + entryprice);
If MarketPosition == -1 Then
exitshort("매도목표이익", Atlimit, ( entryprice - DayOpen )* 1.618 + entryprice) ;
즐거운 하루되세요
> 정밀타격수 님이 쓴 글입니다.
> 제목 : 신호검증부탁드립니다
> < 신호 >
If tdate<>tdate(1) Then
Var10 = barnum
Var1 = 999
Var2 = -999
End If
intrabarnum = barnum - Var10
If Var1 = 999 Then
Var1 = shv(1,high,3,3,intrabarnum)
End If
If Var2 = -999 Then
Var2 = slv(1,low,3,3,intrabarnum)
End If
If Var1 > opend Then
Call plots1("shv",Var1)
End If
If Var2 < opend Then
Call plots2("slv",Var2)
End If
If i_position = 1 Then
Call plots3("목표이익", (i_entryprice - opend )* 1.618 + i_entryprice)
Elseif i_position = -1 Then
Call plots4("목표이익", (i_entryprice - opend )* 1.618 + i_entryprice)
End If
<전략>
If tdate<>tdate(1) Then
Var10 = barnum
Var11 = currententrynum
Var1 = 999
Var2 = -999
End If
intrabarnum = barnum - Var10
intraentrycount = currententrynum - Var11
If Var1 = 999 Then
Var1 = shv(1,high,3,3,intrabarnum)
End If
If Var2 = -999 Then
Var2 = slv(1,low,3,3,intrabarnum)
End If
If ttime < 1505 And intraentrycount < 1 Then
If Var1 > opend Then
Call buy("shv", Atstop, Def, Var1)
End If
If Var2 < opend Then
Call sell("slv", Atstop, Def, Var2)
End If
End If
If position = 1 Then
Call exitlong("목표이익", Atlimit, ( entryprice - opend )* 1.618 + entryprice)
End If
If position = -1 Then
Call exitshort("목표이익", Atlimit, ( entryprice - opend )* 1.618 + entryprice)
End If
2019-06-25
402
글번호 129725
정밀타격수 님에 의해서 삭제되었습니다.
2019-06-25
0
글번호 129724
답변완료
문의 드립니다.
plot1(DayLow*1.30,"당일저가+30%");
plot2(DayLow*1.41,"당일저가+41%");
plot3(DayLow*1.61,"당일저가+61%");
plot4(DayHigh*0.75,"당일저가-25%");
plot5(DayHigh*0.63,"당일저가-37%");
plot6(DayHigh*0.43,"당일저가-57%");
해당 지표를 시스템으로 가공하고 싶습니다.
5이평이 상기지표의 plot1,2,3선을 하향 돌파 하면 매도
5이평이 상기지표의 plot4,5,6선을 상향 돌파 하면 매수
감사합니다
2019-06-25
352
글번호 129723
답변완료
문의드립니다.
전에 답변 받은 내용입니다.
아직 많이 부족해서 답변 주신 수식을 이해 못해서 문의드립니다.
<<< ?????? 이부분을 (2군데) 주석으로 자세히 설명부탁드립니다.
---------------------------------------------------------------
input : P(4);
var : cnt(0),Hv(0),Lv(0),avgv(0);
Array : WeekH[10](0),WeekL[10](0),WeekC[10](0);
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then << 영업일이 다음주로 바뀌면
{
WeekH[0] = H;
WeekL[0] = L;
for cnt = 1 to 9
{
WeeKH[cnt] = WeekH[cnt-1][1]; << ???????
WeeKL[cnt] = WeekL[cnt-1][1];
WeeKC[cnt] = WeekC[cnt-1][1];
}
}
if WeekH[0] > 0 and H > WeekH[0] Then
WeekH[0] = H;
// ???????? >>> WeekH[0] > 0 의 조건은 필수 조건인가요? 음수가 나올 수 없을텐데요.
아니면 시가( O )를 말하는건가요?
if WeekL[0] > 0 and L < WeekL[0] Then
WeekL[0] = L;
WeekC[0] = c;
if WeekH[P] > 0 and WeekL[P] > 0 then
{
Hv = WeeKH[1];
Lv = WeeKL[1];
for cnt = 1 to P
{
if WeekH[cnt] > Hv Then
Hv = WeekH[cnt];
if WeekH[cnt] < Lv Then
Lv = WeekL[cnt];
}
avgv = (Hv+Lv+WeekC[1])/3;
plot1(avgv,"전주기준 4주평균");
}
----------------------------------------------------------
2019-06-25
370
글번호 129712
답변완료
수식 요청 드립니다.
Data1 :코스피 1분봉 차트 사용
진입조건
전일 OI(미결제) 보다 현재 OI(미결제) 증가하고 and Bids > asks 클때 and 코스피일봉차트macd > 0 then "buy"
*추가질문
highest 이용하거나 또 다른 함수를 이용해서 전 고점 을 찾을수 있습니까?
highest는 Length 기간 동안 value값 중 가장 큰 값 이라서 기간입력을 짧게 하면 전 고점을
제대로 파악할 수 없을수도 있겠다 싶어서 여쭤봅니다.
2019-06-25
354
글번호 129711
답변완료
부가기능중 자동 정정 기능에서..
부가기능중 자동 정정 기능에서 체결대기를 1-300초까지만 되나요?
0초로 설정은 안되나요??
항생에서는 시장가로 체결이 안되다 보니... 상대3호가로 해도 체결이 안되는 경우가 있어서
0초 만에 바로 상대 5호가로 하려고 하는데...
최소 시간이 1초인건가요?
2019-06-25
356
글번호 129710
답변완료
수식부탁합니다
True Strength Index(4,8,6,0,10)
라인이 우하에서--우상, 또는 수평에서--우상
True Strensth Index 라인이 60이하 조건.
ATR(14,9)
라인이 우하에서--우상, 또는 수평에서--우상
현재봉포함 과거4개봉 총5개봉안에 클로즈업이 이루어진 상태.
ATR 지수가 60이하조건.
Stochastics(12,5,3)
라인이 우하에서--우상, 또는 수평에서--우상
Stochastics 라인이 65이하 조건.
현재거래량이 전봉거래량보다 3배이상크다.
현재거래량이 과거 120개봉 평균거래량보다 5배이상크다.
현재거래량이 과거 120개봉중에 최고거래량.
현재거래대금이 110000000 이상.
현재 캔들이 전봉보다 1.5%이상 크다.
현재봉이 오픈가 1.5%이상 크다.
주석처리좀 부탁합니다
2019-06-25
382
글번호 129709
답변완료
수식
현재 캔들이 음, D-1 캔들이 양, (음 종가)<(양 시가) 일때
D-1 양 캔들 포함 좌측 4번째 양 캔들 고가를 표시한다
D-1 양 캔들 포함 좌측 4번째 양 캔들 저가를 표시한다
***********************************************************
현재 캔들이 양, D-1 캔들이 음, (양 종가)>(음 시가) 일때
D-1 음 캔들 포함 좌측 4번째 음 캔들 고가를 표시한다
D-1 음 캔들 포함 좌측 4번째 음 캔들 저가를 표시한다
*************************************************************
음+양+양+음 캔들 조합 이후 연속 2양 발생시
연속 2양봉의 # 1 양봉 저가를 표시한다
연속 2양봉의 # 2 양봉 시가를 표시한다
**************************************************************
양+음+음+양 캔들 조합 이후 연속 2음 발생시
연속 2음봉의 # 1 음봉 고가를 표시한다
연속 2음봉의 # 2 음봉 시가를 표시한다
***********************************************************
음+양+양+음 캔들 조합 이후 연속 2양 발생시 매수
양+음+음+양 캔들 조합 이후 연속 2음 발생시 매도
************************************************************
당일 바닥에서 음+양+양 패턴이 4번째 발생시 매수
당일 천정에서 양+음+음 패턴이 4번째 발생시 매도
2019-06-25
365
글번호 129708
답변완료
추가로 문의드립니다!!!
어제 작성해주신 수식 아주 유용하게 잘 활용이 될것같습니다
감사합니다 ^^
헌데 지표설정상 작은 문제점이 있어서 다시한번더 문의드립니다
즉, 아래수식을 적용하면 "그림"과 같은 "지표속성"창이 작성이 되는데요...
문제는 저의 경우 이런창을 20개 가까이 똑같이 작성을 하여야하며...
더구나 이 가격들을 매일매일 다른가격으로 수정하여 위과정을 반복해야한다는점입니다
그러면 날마다 시간과 에너지의 낭비가 너무 심할것같습니다
그래서 문의드릴 내용은 이 "지표속성"창을 복사해서 그대로 갖다붙이는 방법은 없을까요?
아니면 뭔가 다른방법으로 이문제를 해결할 방법이 있으시다면 고견 부탁드리겠습니다
* 참고로 하단의 "편집"을 크릭하여 "수식창"에서도 똑같이 이 가격을 적용하는데
여기서는 복사하여 붙여넣기가 되니까 쉽게 해결이 되네요
자꾸 귀찮게해드리는것같아서 정말로 죄송합니다 ㅎ
-----------------------------------------------------------------------------
input : 지정값1(1000),굵기1(1);
input : 지정값2(1100),굵기2(1);
input : 지정값3(1200),굵기3(1);
input : 지정값4(1300),굵기4(1);
input : 지정값5(1400),굵기5(1);
input : 지정값6(1500),굵기6(1);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
if CrossUp(c,지정값1) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩1point.wav");
TL1 = TL_New(sdate,stime,9999999,sdate,stime,0);
TL_SetSize(TL1,굵기1);
TL_SetColor(TL1,RED);
}
if CrossUp(c,지정값2) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩1point.wav");
TL2 = TL_New(sdate,stime,9999999,sdate,stime,0);
TL_SetSize(TL2,굵기2);
TL_SetColor(TL2,RED);
}
if CrossUp(c,지정값3) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩1point.wav");
TL3 = TL_New(sdate,stime,9999999,sdate,stime,0);
TL_SetSize(TL3,굵기3);
TL_SetColor(TL3,RED);
}
if CrossUp(c,지정값4) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩1point.wav");
TL4 = TL_New(sdate,stime,9999999,sdate,stime,0);
TL_SetSize(TL4,굵기4);
TL_SetColor(TL4,RED);
}
if CrossUp(c,지정값5) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩1point.wav");
TL5 = TL_New(sdate,stime,9999999,sdate,stime,0);
TL_SetSize(TL5,굵기5);
TL_SetColor(TL5,RED);
}
if CrossUp(c,지정값6) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩1point.wav");
TL6 = TL_New(sdate,stime,9999999,sdate,stime,0);
TL_SetSize(TL6,굵기6);
TL_SetColor(TL6,RED);
}
plot1(3.8);
2019-06-25
419
글번호 129707