커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3565
글번호 230811
답변완료
거래량 없는 캔들 포함, For문의 DayOpen 검색안됨
1)
아래 수식을 1분봉에서 실행할 때 거래량 없는 캔들도 포함시킬 수 있나요?
If abs(C[1]-O[1]) / MA(abs(C[2]-O[2]), 60) >= 3 then
find(1)
2)
1분봉에서 아래 For문 때문에 종목검색이 안됩니댜.
왜 그럴까요?
DayClose(), dayopen() 함수 때문인가요?
DayVolume() 함수는 종목검색이 되는 것 같습니다.
var : sumP(0), mavP(0), cnt(0);
sumP = 0;
for cnt = 1 to 60
{
sumP = sumP + abs(DayClose(cnt)-dayopen(cnt));
}
mavP = sumP/60;
If abs(C-O)/O * 100 >= 1 Then { // 캔들 몸통 크기가 2% 이상이면
Find(1);
}
2019-11-18
245
글번호 133689
행복충전 님에 의해서 삭제되었습니다.
2019-11-17
0
글번호 133688
답변완료
수식수정부탁입니다
#,안녕하세요
1,,그림파일참조하여 아래수식에서 매도(plot4),매수(plot5)라인을 Y축방향으로 더 연장하면
좋겠습니다, 즉 그림 사각박스라인1번 선처럼 매수매도가 3번진행될때까지 선을 연장하여
그리길 원합니다,
그림사각박스 2번라인처럼 매도매수가 3번진행될때까지 선을 연장하여 그리면
좋겠습니다.
2,기존수식을 1번처럼 수정하여 일시적 지지,저항선으로 활용 하고자 합니다, 관리자님의
도움 부탁드립니다.
$,언제나 늘 고맙습니다.
input : Length1(5),Length2(20),굵기(0);
var : 매수1(0),매도1(0),매수2(0),매도2(0);
var : 매수11(0),매수12(0),매도11(0),매도12(0),T(0),tx(0),TLen1(0),TLen2(0);
TLen1 = Ceiling((Length1 + 1) * .5);
TLen2 = Ceiling((Length2 + 1) * .5);
var1 = ema(ema(C,TLen1), TLen1);
var2 = ema(ema(C,TLen2), TLen2);
if crossup(var1,var2) Then
{
T = 1;
매도1 = var2;
매도11 = 매도1[1];
매도12 = 매도11[1];
}
if 매도1 > 0 and var2 > 매도1 Then
매도1 = var2;
if CrossDown(var1,var2) Then
{
T = -1;
매수1 = var2;
매수11 = 매수1[1];
매수12= 매수11[1];
}
if 매수1 > 0 and var2 < 매수1 Then
매수1 = var2;
매도2=매도1-0.02;
매수2=매수1+0.02;
plot1(매도1,"매도1",BLUE,def,굵기);
plot2(매수1,"매수1",MAGENTA,def,굵기);
plot3(var2,"이평",iff(var2>var2[1],MAGENTA,BLUE),def,굵기);
if T == 1 and 매도12 > 매도11 and 매수11 > 매수1 then
{
plot4((매도11));
}
if T == -1 and 매수12 < 매수11 and 매도11 < 매도1 then
{
plot5((매수11));
}
2019-11-17
589
글번호 133687
행복충전 님에 의해서 삭제되었습니다.
2019-11-18
7
글번호 133686
답변완료
수식부탁드립니다.
수고에 감사드립니다.
아래의 조건으로 종목 검색식 부탁드립니다.
30분봉기준 당일 30분봉 첫봉이 양봉이고
30분봉기준 당일 30분봉 첫봉이 전일종가를 돌파한 종목 검색식 부탁드립니다.
감사합니다.
2019-11-16
184
글번호 133685
답변완료
수식부탁합니다.
수고많으십니다.
해외선물 골드매매입니다.
볼린저밴드 수식문의합니다.
period값 100
multid값 1.2
상단선 터치하면 매도신호발생 , 다음봉에 매도진입
하단선 터치하면 매수신호발생 , 다음봉에 매수진입
목표수익 청산하기 전 까지는 추가진입 안하기
(ex. 10시 30분에 상단선 터치 매도신호발생 진입후, 목표수익을 달성하지않은상태에서
11시 50분에 다시 상단선 터치해서 중복 매도신호 발생해도 추가진입 하지않도록.)
신호발생진입후 목표수익을 달성후 무포지션일때 진입.
(ex. 13시 30분 상단선 터치 매도신호 발생하여 진입후 15시10분에 수익청산후 무포지션.
16시 30분에 다시 매도신호발생하면 매도 재진입)
신호발생진입후 손절을 당한후 무포지션일때 진입.
(ex. 13시 30분 하단선 터치 매수신호 발생하여 진입후 15시10분에 손절후 무포지션.
16시 30분에 다시 매수신호발생하면 매수 재진입)
목표수익 50틱
손절 70틱
2019-11-18
213
글번호 133684
답변완료
지표
1. 공매도 총금액을 막대차트를 이용하여 나타낼수 있는 방법이 있을까요?
2. "KP 상승종목수 - KP 하락종목수"를 막대차트로 나타내고 싶습니다.
수고하세요
2019-11-16
188
글번호 133683
답변완료
수식의뢰드려요
안녕하세요!
아래의 키움 수식을 예스로 변환해 주시길 부탁드립니다!
지표 설정 조건의 장기, 중기, 단기의 수치는 임으로 조정할 수 있도록 변경 부탁드립니다.
감사합니다!
수식1 >
수식이름 : 보조선
x=ma(c,단기);
y=ma(c,중기);
z=ma(c,장기);
valuewhen(1,crossup(x,y)or crossdown(x,y),y)
수식2 >
수식이름 : 전환선
x=ma(c,단기);
y=ma(c,중기);
z=ma(c,장기);
valuewhen(1,crossup(x,z)or crossdown(x,z),y)
지표설정조건 >
단기 5
중기 10
장기 20
라인설정 >
보조선 두께 1P
전환선 두께 1P
2019-11-18
267
글번호 133682
답변완료
64919 관련하여 재문의 드립니다.
안녕하세요.
지표를 수정해 주셔서 이제 에러가 나지 않습니다. 감사합니다.
혹시, 그림파일 처럼 수정이 가능할지 다시한번 여쭤봅니다.
저점, 고점이 완성되면 피보나치 수평선이 그려지는데 맞지만, 별표 부분에서부터 길게 표시가 되니 보니 좀 시각적으로 복잡한감이 있습니다.
그래서, 피보나치 수평선은 빨간색 네모박스로 표시한 만큼만 우측라인만 선 표시가 될까요?
또 한가지, 맨 우측 라인선에 38.2%와 61.8%선 숫자표시좀 되게끔 수정부탁드립니다. (해당되는 라인선 밑에 38.2%, 61.8% 표시좀 나오게 해주세요)
미리 감사하다는 말씀드립니다.
--------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
Input:chngRate(0.3),굵기(1);
input : Per1(0),Per2(23.6),Per3(38.2),Per4(50.0),Per5(61.8),Per6(76.4),Per7(100),Per8(123.6),Per9(161.8);
Var : j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
var : TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0);
var : Tx11(0),Tx12(0),Tx13(0),Tx14(0),Tx15(0),Tx16(0),Tx17(0),Tx18(0),Tx19(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (chngRate/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (chngRate/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
{
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
value1 = valArr[1]-valArr[2];
TL_Delete(TL11);
TL_Delete(TL12);
TL_Delete(TL13);
TL_Delete(TL14);
TL_Delete(TL15);
TL_Delete(TL16);
TL_Delete(TL17);
TL_Delete(TL18);
TL_Delete(TL19);
TL_SetExtRight(TL11,False);
TL_SetExtRight(TL12,False);
TL_SetExtRight(TL13,False);
TL_SetExtRight(TL14,False);
TL_SetExtRight(TL15,False);
TL_SetExtRight(TL16,False);
TL_SetExtRight(TL17,False);
TL_SetExtRight(TL18,False);
TL_SetExtRight(TL19,False);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per1/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per1/100));
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per2/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per2/100));
TL13 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per3/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per3/100));
TL14 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per4/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per4/100));
TL15 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per5/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per5/100));
TL16 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per6/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per6/100));
TL17 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per7/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per7/100));
TL18 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per8/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per8/100));
TL19 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per9/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per9/100));
TL_SetExtRight(TL11,true);
TL_SetExtRight(TL12,true);
TL_SetExtRight(TL13,true);
TL_SetExtRight(TL14,true);
TL_SetExtRight(TL15,true);
TL_SetExtRight(TL16,true);
TL_SetExtRight(TL17,true);
TL_SetExtRight(TL18,true);
TL_SetExtRight(TL19,true);
TL_SetColor(TL11,RED);
TL_SetColor(TL12,BLUE);
TL_SetColor(TL13,MAGENTA);
TL_SetColor(TL14,YELLOW);
TL_SetColor(TL15,GRAY);
TL_SetColor(TL16,GREEN);
TL_SetColor(TL17,BLUE);
TL_SetColor(TL18,PINK);
TL_SetColor(TL19,Lblue);
TL_SetSize(TL11,굵기);
TL_SetSize(TL12,굵기);
TL_SetSize(TL13,굵기);
TL_SetSize(TL14,굵기);
TL_SetSize(TL15,굵기);
TL_SetSize(TL16,굵기);
TL_SetSize(TL17,굵기);
TL_SetSize(TL18,굵기);
TL_SetSize(TL19,굵기);
tx11 = Text_New(sdate,stime,TL_GetValue(TL11,sdate,stime),NumToStr(Per1,2)+"%("+NumToStr(TL_GetValue(TL11,sdate,stime),2)+")");
tx12 = Text_New(sdate,stime,TL_GetValue(TL12,sdate,stime),NumToStr(Per2,2)+"%("+NumToStr(TL_GetValue(TL12,sdate,stime),2)+")");
tx13 = Text_New(sdate,stime,TL_GetValue(TL13,sdate,stime),NumToStr(Per3,2)+"%("+NumToStr(TL_GetValue(TL13,sdate,stime),2)+")");
tx14 = Text_New(sdate,stime,TL_GetValue(TL14,sdate,stime),NumToStr(Per4,2)+"%("+NumToStr(TL_GetValue(TL14,sdate,stime),2)+")");
tx15 = Text_New(sdate,stime,TL_GetValue(TL15,sdate,stime),NumToStr(Per5,2)+"%("+NumToStr(TL_GetValue(TL15,sdate,stime),2)+")");
tx16 = Text_New(sdate,stime,TL_GetValue(TL16,sdate,stime),NumToStr(Per6,2)+"%("+NumToStr(TL_GetValue(TL16,sdate,stime),2)+")");
tx17 = Text_New(sdate,stime,TL_GetValue(TL17,sdate,stime),NumToStr(Per7,2)+"%("+NumToStr(TL_GetValue(TL17,sdate,stime),2)+")");
tx18 = Text_New(sdate,stime,TL_GetValue(TL18,sdate,stime),NumToStr(Per8,2)+"%("+NumToStr(TL_GetValue(TL18,sdate,stime),2)+")");
tx19 = Text_New(sdate,stime,TL_GetValue(TL19,sdate,stime),NumToStr(Per9,2)+"%("+NumToStr(TL_GetValue(TL19,sdate,stime),2)+")");
Text_Delete(Tx11);
Text_Delete(Tx12);
Text_Delete(Tx13);
Text_Delete(Tx14);
Text_Delete(Tx15);
Text_Delete(Tx16);
Text_Delete(Tx17);
Text_Delete(Tx18);
Text_Delete(Tx19);
Text_SetStyle(tx11,2,1);
Text_SetStyle(tx12,2,1);
Text_SetStyle(tx13,2,1);
Text_SetStyle(tx14,2,1);
Text_SetStyle(tx15,2,1);
Text_SetStyle(tx16,2,1);
Text_SetStyle(tx17,2,1);
Text_SetStyle(tx18,2,1);
Text_SetStyle(tx19,2,1);
}
Else
{
value1 = valArr[1]-valArr[2];
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetBegin(TL11,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per1/100));
TL_SetEnd(TL11,sDate,sTime,valArr[1]-value1*(per1/100));
TL_SetBegin(TL12,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per2/100));
TL_SetEnd(TL12,sDate,sTime,valArr[1]-value1*(per2/100));
TL_SetBegin(TL13,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per3/100));
TL_SetEnd(TL13,sDate,sTime,valArr[1]-value1*(per3/100));
TL_SetBegin(TL14,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per4/100));
TL_SetEnd(TL14,sDate,sTime,valArr[1]-value1*(per4/100));
TL_SetBegin(TL15,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per5/100));
TL_SetEnd(TL15,sDate,sTime,valArr[1]-value1*(per5/100));
TL_SetBegin(TL16,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per6/100));
TL_SetEnd(TL16,sDate,sTime,valArr[1]-value1*(per6/100));
TL_SetBegin(TL17,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per7/100));
TL_SetEnd(TL17,sDate,sTime,valArr[1]-value1*(per7/100));
TL_SetBegin(TL18,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per8/100));
TL_SetEnd(TL18,sDate,sTime,valArr[1]-value1*(per8/100));
TL_SetBegin(TL19,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per9/100));
TL_SetEnd(TL19,sDate,sTime,valArr[1]-value1*(per9/100));
Text_SetLocation(Tx11,sdate,stime,TL_GetValue(TL11,sdate,stime));
Text_SetLocation(Tx12,sdate,stime,TL_GetValue(TL12,sdate,stime));
Text_SetLocation(Tx13,sdate,stime,TL_GetValue(TL13,sdate,stime));
Text_SetLocation(Tx14,sdate,stime,TL_GetValue(TL14,sdate,stime));
Text_SetLocation(Tx15,sdate,stime,TL_GetValue(TL15,sdate,stime));
Text_SetLocation(Tx16,sdate,stime,TL_GetValue(TL16,sdate,stime));
Text_SetLocation(Tx17,sdate,stime,TL_GetValue(TL17,sdate,stime));
Text_SetLocation(Tx18,sdate,stime,TL_GetValue(TL18,sdate,stime));
Text_SetLocation(Tx19,sdate,stime,TL_GetValue(TL19,sdate,stime));
Text_SetString(Tx11,NumToStr(Per1,2)+"%("+NumToStr(TL_GetValue(TL11,sdate,stime),2)+")");
Text_SetString(Tx12,NumToStr(Per2,2)+"%("+NumToStr(TL_GetValue(TL12,sdate,stime),2)+")");
Text_SetString(Tx13,NumToStr(Per3,2)+"%("+NumToStr(TL_GetValue(TL13,sdate,stime),2)+")");
Text_SetString(Tx14,NumToStr(Per4,2)+"%("+NumToStr(TL_GetValue(TL14,sdate,stime),2)+")");
Text_SetString(Tx15,NumToStr(Per5,2)+"%("+NumToStr(TL_GetValue(TL15,sdate,stime),2)+")");
Text_SetString(Tx16,NumToStr(Per6,2)+"%("+NumToStr(TL_GetValue(TL16,sdate,stime),2)+")");
Text_SetString(Tx17,NumToStr(Per7,2)+"%("+NumToStr(TL_GetValue(TL17,sdate,stime),2)+")");
Text_SetString(Tx18,NumToStr(Per8,2)+"%("+NumToStr(TL_GetValue(TL18,sdate,stime),2)+")");
Text_SetString(Tx19,NumToStr(Per9,2)+"%("+NumToStr(TL_GetValue(TL19,sdate,stime),2)+")");
}
}
}
TL_SetSize(TL1,굵기);
TL_SetColor(TL1,black);
plot1(valArr[1]);
plot2(valArr[2]);
즐거운 하루되세요
> 조르바 님이 쓴 글입니다.
> 제목 : 수정좀 부탁드리겠습니다.
> 안녕하세요.
아래수식이 정상적으로 나올때도 있지만, 그림파일처럼 수평선으로 표시가 안되고 에러가 나는 경우가 빈번합니다. (그림파일)
에러가 나지않게끔 확인좀 부탁드리겠습니다. 항상 감사드립니다.
2019-11-16
317
글번호 133681