커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3748
글번호 230811
답변완료
추가로 문의드립니다!!!
어제 작성해주신 수식 아주 유용하게 잘 활용이 될것같습니다
감사합니다 ^^
헌데 지표설정상 작은 문제점이 있어서 다시한번더 문의드립니다
즉, 아래수식을 적용하면 "그림"과 같은 "지표속성"창이 작성이 되는데요...
문제는 저의 경우 이런창을 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
336
글번호 129707
답변완료
문의드립니다.
안녕하세요.
그림의 조건을 만족하는 종목검색식 부탁드립니다.
‘가’저점에서 30% 상승한('나'조건 만족) 후 하락하여
상승폭의 절반 아래에 와서 종목검색 조건을 만족한 후
재상승하여 이전고점을 넘겼을 때
새로운 고점도 '나'고점 조건을 만족하고 하락하면
상승폭의 절반 이하가 되면
이 종목이 검색되도록 부탁드립니다.
2019-06-25
318
글번호 129706
답변완료
수식 요청 드립니다.
안녕하세요.
data2에 특정상품을 넣으려 합니다. 그리고 data2는 일봉데이터 입니다.
한국시간 기준으로 당일 새벽에 끝난 상품의 당일등락율을 구해서 그것이 0보다 크거나 같으면
코스피200 시초가 매수 0보다 작으면 시초가매도 만약 진입 하였다면 종가청산
*data1의 코스피 차트는 일봉으로 설정 해야 합니까?
*월요일은 조건에 상관없이 항상 진입하지않음. 화,수,목,금 진입
*손절 3포
*전일대비 등락율 아닙니다. 당일 등락율로 부탁드립니다.
예시) Data2 해당상품의 종가 - Data2 해당상품의 시가 / Data2 해당상품의 종가 * 100 을 해서 그 값이 0 보다 크면 시초가매수 0보다 작으면 시초가매도
감사합니다.
2019-06-24
324
글번호 129705
답변완료
종가에 매수가 안되고 시가에 매도가 안되네요.
수식은 문의 드려서 답을 찾은것 같습니다.
문제는 매수시간이 15시 19분 이더군요.
그래서 실제 종가로 매수가 안됩니다. 저는 15시30분 가격에 사고 싶습니다.
그리고 매도 시기는 09시 01분 입니다.
정확히 09시00으로 매도 하는 방법은 없나요?
시초가는 예약매도로 시장가 매도한다고 하면 될것 같은데요.
매수를 종가로 하려면 어떻게 하면 될까요?
================
수식의 수정내용은 아래와 같습니다.
최초 질문
> 박중사 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
> etf 종목을 종가매수 시가매도 하려고 합니다.
당일 종가 > 3일 이동평균선 이면 종가에 매수하고
익영업일 09시 02분에 매도 하려고 합니다.
수식을 이렇게 했는데 매수가 안되서요.
IF CrossUp(ma(c,3), c[1]) && stime == 151900
Then Buy();
IF stime == 090200
Then Sell();
------------------------------------
예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 부탁드립니다
> 안녕하세요
예스스탁입니다.
1
시스템은 정규장 이내에 주문이 집행되게 하셔야 합니다.
봉완성이 다음봉 시가가 수신될때이고
1분봉 기준으로 정규장에서 가장 마지막 완성봉은 stime이 151800입니다.
2
이평을 일간 이평으로 변경해 드립니다.
기존식을 분봉에 사용하면 ma(c,3)은 분봉이평입니다.
3
input : P(3);
var : sum(0),mav(0),cnt(0);
sum = 0;
for cnt = 0 to P-1
{
sum = sum + DayClose(cnt);
}
IF C > mav && stime == 151800
Then Buy();
IF stime == 090200
Then exitlong();
즐거운 하루되세요
------------------------------
감사합니다.
그런데 질문이 있습니다
for cnt = 0 to P-1
{
sum = sum + DayClose(cnt);
}
다음에
mov = sum/3;
이게 있어야 하는거 아닌가요?
mov 변수만 선언 되어 있고 변수에 뭔가 할당을 안하는것 같네요.
잘 적용이 안되서 코딩 분석 좀 해봤습니다.
실제로 종가가 3일이평선 보다 아래인데 매수신호가 뜨더군요.
고쳐보니 매수는 안되었습니다.
2019-06-24
359
글번호 129704
답변완료
시스템
안녕하세요 오랜만에 질문 드립니다
현재가가 20일 이평을 돌파후 현재가격과 이평가격이 n틱 이상 벌어지고
순매수잔량이 앞봉의 종가 기준으로 m% 이하로 떨어지면 매도
반대면 매수
항상 감사합니다 수고하세요
2019-06-24
299
글번호 129702
답변완료
최고,최저값
최근 60일동안의
최고값과 최저값의 합을 구하는 지표식 부탁합니다.
감사합니다
2019-06-24
296
글번호 129701
답변완료
문의 드립니다
안녕하세요
아래 파동식에서 첨부와 같이 큰파동만 전고점을 넘어 가는 순간부터
색깔을 빨강으로 그리고 전저점을 깨고 내려가는 순간부터
파랑으로 나오게 부탁드립니다.
감사합니다.
Input : length1(5),종가사용여부1(0),파동선두께1(2),수치표시1(1) ;
Input : length2(20),종가사용여부2(0),파동선두께2(2),수치표시2(1) ;
Var : j1(0),jj1(0),HH1(0),LL1(0),최종고가1(0),최종저가1(0),최종꼭지점1(""),처리구분1(""),TL1(0),Text1(0);
Var : j2(0),jj2(0),HH2(0),LL2(0),최종고가2(0),최종저가2(0),최종꼭지점2(""),처리구분2(""),TL2(0),Text2(0);
Array : 고1[10,4](0),저1[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
Array : 고2[10,4](0),저2[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH1 = IFF(종가사용여부1==1,C,H);
LL1 = IFF(종가사용여부1==1,C,L);
HH2 = IFF(종가사용여부2==1,C,H);
LL2 = IFF(종가사용여부2==1,C,L);
#==========================================#
If Index == 0 Then
{
고1[1,1] = HH1;
저1[1,1] = LL1;
고2[1,1] = HH1;
저2[1,1] = LL1;
}
#==========================================#
Condition11 = Highest(HH1,length1) == HH1 and 최종고가1 <> HH1;
Condition12 = Lowest (LL1,length1) == LL1 and 최종저가1 <> LL1;
Condition21 = Highest(HH2,length2) == HH2 and 최종고가2 <> HH2;
Condition22 = Lowest (LL2,length2) == LL2 and 최종저가2 <> LL2;
#==========================================#
처리구분1 = "";
If Condition11 and Condition12 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점1 == "저점" Then
{
If 저1[1,1] > LL1 Then 처리구분1 = "저점처리";
Else 처리구분1 = "고점처리";
}
Else If 최종꼭지점1 == "고점" Then
{
If 고1[1,1] < HH1 Then 처리구분1 = "고점처리";
Else 처리구분1 = "저점처리";
}
}
Else If Condition11 Then 처리구분1 = "고점처리";
Else If Condition12 Then 처리구분1 = "저점처리";
처리구분2 = "";
If Condition21 and Condition22 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점2 == "저점" Then
{
If 저2[1,1] > LL2 Then 처리구분2 = "저점처리";
Else 처리구분2 = "고점처리";
}
Else If 최종꼭지점2 == "고점" Then
{
If 고2[1,1] < HH2 Then 처리구분2 = "고점처리";
Else 처리구분2 = "저점처리";
}
}
Else If Condition21 Then 처리구분2 = "고점처리";
Else If Condition22 Then 처리구분2 = "저점처리";
#==========================================#
If 처리구분1 == "고점처리" Then
{
최종고가1 = HH1; // 신규고점을 체크하기 위해 저장
If 최종꼭지점1 == "저점" Then
{
For j1 = 10 DownTo 2
{
For jj1 = 1 To 4
{
고1[j1,jj1] = 고1[j1-1,jj1];
}
}
고1[1,1] = HH1;
고1[1,2] = Index;
고1[1,3] = sDate;
고1[1,4] = sTime;
TL1 = TL_New(저1[1,3],저1[1,4],저1[1,1],고1[1,3],고1[1,4],고1[1,1]);
If 수치표시1 == 1 Then
{
Text1 = Text_New(고1[1,3],고1[1,4],고1[1,1],NumToStr(고1[1,1],2));
Text_SetStyle(Text1, 2, 1);
Text_SetSize(Text1, 15);
Text_SetColor(Text1,white);
}
TL_SetSize(TL1,파동선두께1);
TL_SetColor(TL1,lgreen);
}
Else If 고1[1,1] < HH1 Then // 1번 고점보다 높은 고가 출현
{
고1[1,1] = HH1;
고1[1,2] = Index;
고1[1,3] = sDate;
고1[1,4] = sTime;
TL_SetEnd(TL1,고1[1,3],고1[1,4],고1[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시1 == 1 Then
{
Text_SetLocation(Text1,고1[1,3],고1[1,4],고1[1,1]);
Text_SetString(Text1,NumToStr(고1[1,1],2));
}
}
최종꼭지점1 = "고점";
}
If 처리구분2 == "고점처리" Then
{
최종고가2 = HH2; // 신규고점을 체크하기 위해 저장
If 최종꼭지점2 == "저점" Then
{
For j2 = 10 DownTo 2
{
For jj2 = 1 To 4
{
고2[j1,jj1] = 고2[j1-1,jj1];
}
}
고2[1,1] = HH2;
고2[1,2] = Index;
고2[1,3] = sDate;
고2[1,4] = sTime;
TL2 = TL_New(저2[1,3],저2[1,4],저2[1,1],고2[1,3],고2[1,4],고2[1,1]);
If 수치표시2 == 1 Then
{
Text2 = Text_New(고2[1,3],고2[1,4],고2[1,1],NumToStr(고2[1,1],2));
Text_SetStyle(Text2, 2, 1);
Text_SetSize(Text2, 15);
Text_SetColor(Text2,white);
}
TL_SetSize(TL2,파동선두께2);
TL_SetColor(TL2,red);
}
Else If 고2[1,1] < HH2 Then // 1번 고점보다 높은 고가 출현
{
고2[1,1] = HH2;
고2[1,2] = Index;
고2[1,3] = sDate;
고2[1,4] = sTime;
TL_SetEnd(TL2,고2[1,3],고2[1,4],고2[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시2 == 1 Then
{
Text_SetLocation(Text2,고2[1,3],고2[1,4],고2[1,1]);
Text_SetString(Text2,NumToStr(고2[1,1],2));
}
}
최종꼭지점2 = "고점";
}
#==========================================#
If 처리구분1 == "저점처리" Then
{
최종저가1 = LL1;
If 최종꼭지점1 == "고점" then
{
For j1 = 10 DownTo 2
{
For jj1 = 1 To 4
{
저1[j1,jj1] = 저1[j1-1,jj1];
}
}
저1[1,1] = LL1;
저1[1,2] = Index;
저1[1,3] = sDate;
저1[1,4] = sTime;
TL1 = TL_New(고1[1,3],고1[1,4],고1[1,1],저1[1,3],저1[1,4],저1[1,1]);
If 수치표시1 == 1 Then
{
Text1 = Text_New(저1[1,3],저1[1,4],저1[1,1],NumToStr(저1[1,1],2));
Text_SetStyle(Text1, 2, 2);
Text_SetSize(Text1, 15);
Text_SetColor(Text1,white);
}
TL_SetSize(TL1,파동선두께1);
TL_SetColor(TL1,lgreen);
}
Else If 저1[1,1] > LL1 then
{
저1[1,1] = LL1;
저1[1,2] = Index;
저1[1,3] = sDate;
저1[1,4] = sTime;
TL_SetEnd(TL1,저1[1,3],저1[1,4],저1[1,1]);
If 수치표시1 == 1 Then
{
Text_SetLocation(Text1,저1[1,3],저1[1,4],저1[1,1]);
Text_SetString(Text1,NumToStr(저1[1,1],2));
}
}
최종꼭지점1 = "저점";
}
If 처리구분2 == "저점처리" Then
{
최종저가2 = LL2;
If 최종꼭지점2 == "고점" then
{
For j2 = 10 DownTo 2
{
For jj2 = 1 To 4
{
저2[j2,jj2] = 저2[j2-1,jj2];
}
}
저2[1,1] = LL2;
저2[1,2] = Index;
저2[1,3] = sDate;
저2[1,4] = sTime;
TL2 = TL_New(고2[1,3],고2[1,4],고2[1,1],저2[1,3],저2[1,4],저2[1,1]);
If 수치표시2 == 1 Then
{
Text2 = Text_New(저2[1,3],저2[1,4],저2[1,1],NumToStr(저2[1,1],2));
Text_SetStyle(Text2, 2, 2);
Text_SetSize(Text2, 15);
Text_SetColor(Text2,white);
}
TL_SetSize(TL2,파동선두께2);
TL_SetColor(TL2,blue);
}
Else If 저2[1,1] > LL2 then
{
저2[1,1] = LL2;
저2[1,2] = Index;
저2[1,3] = sDate;
저2[1,4] = sTime;
TL_SetEnd(TL2,저2[1,3],저2[1,4],저2[1,1]);
If 수치표시2 == 1 Then
{
Text_SetLocation(Text2,저2[1,3],저2[1,4],저2[1,1]);
Text_SetString(Text2,NumToStr(저2[1,1],2));
}
}
최종꼭지점2 = "저점";
}
2019-06-24
397
글번호 129700
답변완료
수식 보정부탁드림니다.
제가 원하는 수식이 아래식이 맞는지 확인 부탁드려요...
봉완료되지 않더라도 "즉시익절1"값 도달시 즉시 매도청산
만약 진입후 M1봉만큼 지난후 전봉이 양봉 일때 현재가+"청산양봉틱수1"에 도달시 봉완성 매도청산
만약 진입후 "오르다만틱수1"만큼 올랐다가 진입가+3틱에 도달시 즉시 매도 청산
"즉시손절1"값에 도달시 즉시 손절 (매수청산)
만약 "봉완성손절1"값에 도달시 봉완성시 손절(매수청산)
만약 진입후 "저점틱수"만큼 빠졌다가 진입가 +3틱에 매수 청산
매수 진입후 진입봉에서 "압도적이익1"값 도달시 즉시 매수 청산(이익청산)
매수 진입후 진입봉에서 "압도적손절1"값 도달시 즉시 매수 청산(손절)
---------------------------------------------------------------------------------------
if MarketPosition == 1 then
{
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
if BarsSinceEntry >= M1 and c[1]>c[2] Then
ExitLong("봉완성익절1",AtLimit,C+PriceScale*청산양봉틱수1);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*오르다만틱수1 Then
ExitLong("상승후하락본전청산1",AtStop,EntryPrice+PriceScale*3);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
if c <= EntryPrice-PriceScale*봉완성손절1 Then
ExitLong("봉완성손절1");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*저점틱수1 Then
ExitLong("반등본전청산1",atlimit,lowest(l,BarsSinceEntry)+PriceScale*3);
SetStopProfittarget(PriceScale*압도적이익1,PointStop);
SetStopLoss(PriceScale*압도적손절1,PointStop);
}
-----------------------------------------------------------------------------------
그리고 매도 포지션에서 반대로 청산하는식도 맞는지 검증 부탁드림니다.
if MarketPosition == -1 then
{
ExitShort("즉시익절2",AtLimit,EntryPrice-PriceScale*즉시익절2);
if BarsSinceEntry >= M2 and c[1]<c[2] Then
ExitShort("봉완성익절2",AtLimit,C-PriceScale*청산양봉틱수2);
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*오르다만틱수2 Then
ExitShort("본전청산4",AtStop,EntryPrice-PriceScale*3);
ExitShort("즉시손절2",AtStop,EntryPrice+PriceScale*즉시손절2);
if c >= EntryPrice+PriceScale*봉완성손절2 Then
ExitShort("봉완성손절2");
if Highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*저점틱수1 Then
ExitShort("반등약손절",atlimit,Highest(l,BarsSinceEntry)-PriceScale*3);
SetStopProfittarget(PriceScale*압도적이익2,PointStop);
SetStopLoss(PriceScale*압도적손절2,PointStop);
}
2019-06-25
303
글번호 129690
답변완료
지그재그 지표 추가하고 싶습니다
예스 글로벌 사용중입니다
지그재그 지표를 추가하고 싶은데요
어떻게 해야하는지 자세히좀 알려주시면 감사하겠습니다
수식을 어디에 넣는 것인지도 자세히 부탁드립니다
2019-06-24
344
글번호 129689