커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5561
글번호 230811
답변완료
아까답변받았는데
키움 검색과 동일하게 했는데 종목검색의 결과가 나오질 않습니다.
한번 검토 부탁드립니다.
아래 검색식에서
and countif(H < O*1.10,60)[2] == 0 #2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만
and V[1] >= ma(V,60)[2]*5 #2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상
이 두가지 조건을 주석처리 하면 종목이 나오긴 하는데
두가지 중 하나라도 넣으면 종목이 뜨질 않습니다.
2일봉전 기준으로 60봉 동안 시가 고가 (또는 고가 시가) 등락이 각각 10%미만
2일봉전 기준으로 60일 일 평균 거래량보다 1일전 거래량이 5배
입니다.
var : 상한가(0), UpLimit(0), 전일상한가(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
if CodeCategory() == 2 then {
if date >= 20030721 then {
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
up7 = int(UpLimit/1+0.00001)*1;
}
}
Else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
if C < 상한가 //and C[1] < 상한가[1] //1일전 및 2일전 상한가가 아닐것
and C[1] >= O[1]*1.05 //1일봉전 시가대비 1일봉전 종가 등락률이 5%이상
and C[2] <= C[3]*1.05 //3일봉전 종가대비 2일봉전 종가 등락률이 5%이하
and H[1] >= C[2]*1.10 //2일봉전 종가 대비 1봉전 고가등락률이 10% 이상
and countif(H < O*1.10,60)[2] == 0 #2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만
and V[1] >= ma(V,60)[2]*5 #2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상
Then
find(1);
2019-03-27
365
글번호 127410
답변완료
수식작성
Input : Period(12), Period1(5), Percent(80);
value1 = StochasticsK(Period, Period1);
If CrossUp(value1,Percent) Then
{
If C == C[1] Then
value2 = 0.001;
Else
value2 = (C-C[1])/C[1]*100;
}
Else
value2 = 0;
Find(value2);
에서 c가 c[1]가 같다는 게 무슨소리죠?
value2에 0.001 , (C-C[1])/C[1]*100; , 은 각각 무슨명령이죠?
2019-03-26
367
글번호 127409
미완 님에 의해서 삭제되었습니다.
2019-03-26
0
글번호 127408
답변완료
진입제한
수고하십니다...
1. 매수전략
전체 진입횟수를 6개로 제한하고,
만약 진입명이 3개("A매수","B매수", "C매수")가 있다면 각 진입의 횟수를 2회로 제한하고, 한개의 진입명에 따라 첫번째 진입 한다면 그후 20봉후에 동일 진입조건이 발생했을 때 추가 1회만 더 진입하려고 합니다.
2. 매도전략
동일 진입(예: "A매수" 2회분)을 수익율이 5%도달시 30% 매도, 10%수익에 30%매도, 그리고 15%일때 전량 매도할 수 있음좋겠습니다. 각 진입명에 따라 수익율은 다르게 할 생각입니다.
항상 감사합니다.
2019-03-26
406
글번호 127402
답변완료
매도 수식 여쭤봅니다.
If MarketPosition == -1 Then Begin
SellSetup = False;
ExitShort("",atlimit,ShortExitTarget);
End;
If SellSetup Then
Sell("",atlimit,SellEntry);
# ATR Protective Stop
Inputs: ProtectiveATRs(3);
var : AtrV(0);
AtrV = ATR(30);
If MarketPosition <> 0 Then {
ExitLong("EL_Protective Stop", atstop, EntryPrice - AtrV*ProtectiveATRs);
ExitShort("ES_Protective Stop", atstop, EntryPrice + AtrV*ProtectiveATRs);
}
식의 일부중에 매도 식입니다.
현재 60분봉 개별종목에 적용중인데.
다른시간대는 괜찮은데
16시 매도로 만족되면 차트상으로는 매도가 되었다고 나오는데
실제 매매는 안일어나서 전략이 망가지는데요~
매도 조건이 만족되면 그 다음봉 시가에 시장가로 매도되게 할수 있을까요?
감사합니다.
아니면 전체 전략 매도가 매도조건 만족 다음봉 시가 시장가 청산조건 부탁드립니다.
2019-03-26
365
글번호 127401
답변완료
수고하십니다 저번에 글 올렸었는데요
아래 글처럼 답변해주셨는데요
혹시 지표 말고 시스템에도 적용될수 있는 식인가요?
매일 8시에 예트 프로그램켜서 아래 식을 돌려도 문제없이 돌아갈까요?
NextBarOpen 같은것도 써도 문제없지요?
----------
var : cnt(0),LL(0);
if (sdate != sdate[1] and stime >= 143000) or
(sdate == sdate[1] and stime >= 143000 and stime[1] < 143000) Then
var1 = C;
if NextBarSdate != sdate Then
{
LL = L;
for cnt = 0 to 59
{
if TimeToMinutes(stime[cnt]) > TimeToMinutes(stime)-60 and L[cnt] < LL Then
LL = L[cnt];
}
if NextBarOpen < LL and NextBarOpen <= var1*0.99 Then
buy("b",AtMarket);
}
즐거운 하루되세요
> 에이치 님이 쓴 글입니다.
> 제목 : 수고하십니다
> 수식 질문있습니다.
1분봉 기준입니다.
1. 오늘 시가가 전날 마지막 60분 동안의 저가보다 작을때
and
2. 오늘 시가가 전날 2시 30분 가격 대비 1% 이상 하락 했을때
2019-03-26
363
글번호 127393
답변완료
질문드립니다
1.
현재예스스팟 분봉 확장차트에서 매매신호를 주고 매매하고 있습니다.
장초부터 시작해서 주가가 일봉주기 5일 이동 평균선에 5% 이내로 근접했을때 매수하고 트레일링 스탑으로 매매되는 매매 수식 부탁드립니다. 진입회수는 1회이며 작성한 수식에서 가감해야 할 부분에 대하여 알려주시면 감사하겠습니다.
input : 매수금액(500000);
input : Per(5),수익률(3),근접률(5);
var : Evol(0),Xcnt(0),OpenCond(false),Xcond1(false),Xcond2(false),Xcond3(false);
Var1 = ma(DayClose,5);
input : 진입회수(1);
if stime == 153000 and c<Var1*(1+근접률/100) Then
{
buy("b",AtMarket,def,Floor(매수금액/C));
}
//SetStopTrailing(2,10,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산
if MarketPosition == 1 Then
{
SetStopLoss(3);
#봉완성시 다음봉 시가가 진입가 대비 5% 이상 상승하면 true
if NextBarOpen >= EntryPrice*(1+Per/100) Then
OpenCond = true;
#BP1 청산이 발생하면 Xcond1은 true
if LatestExitName(0) == "BP1" Then
Xcond1 = true;
#BP2 청산이 발생하면 Xcond2은 true
if LatestExitName(0) == "BP2" Then
Xcond2 = true;
#BP3 청산이 발생하면 Xcond3은 true
if LatestExitName(0) == "BP3" Then
Xcond3 = True;
#OpenCond가 false일때
if OpenCond == false Then
{
SetStopTrailing(2,3,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산
/*if Xcond1 == false then
ExitLong("BP1",atlimit,EntryPrice(0)*1.03,"",Floor(MaxContracts*0.3),1);
if Xcond2 == false then
ExitLong("BP2",atlimit,EntryPrice(0)*1.04,"",Floor(MaxContracts*0.4),1);
if Xcond3 == false then
ExitLong("BP3",atlimit,EntryPrice(0)*1.05);*/
}
#OpenCond가 true일떄
if OpenCond == true Then
{
SetStopTrailing(3.5,5,PercentStop,1);
/* #BP1로 청산이 안된 경우만 발생
if Xcond1 == false Then
ExitLong("BP6",atlimit,EntryPrice*(1+(Per+3)/100),"",Floor(MaxContracts*0.3),1);
#BP2로 청산이 안된 경우만 발생
if Xcond2 == false Then
ExitLong("BP7",atlimit,EntryPrice*(1+(Per+4)/100),"",Floor(MaxContracts*0.4),1);
#BP3로 청산이 안된 경우만 발생
if Xcond3 == false Then
ExitLong("BP8",atlimit,EntryPrice*(1+(Per+5)/100));
#5%이하로 가격하락하면 전량처산 */
//exitlong("BP5",AtStop,EntryPrice*(1+Per/100));
}
SetStopEndofday(151000);
}
#매수포지션이 아니면 모두 false로 초기화
if MarketPosition != 1 Then{
OpenCond = false;
Xcond1 = false;
Xcond2 = false;
Xcond3 = false;
SetStopLoss(0);//해제
SetStopEndofday(0);//해제
SetStopTrailing(0,0);//해제
}
2.
그리고 트레일링 스탑을 분할하여 적용가능한 방법이 있나요?
예를 들어 100주를 매수 했을 경우 20 30 50 주 각각 다르게 적용하여 매도 가능한지
3.
종목검색식 부탁드립니다.
2일봉전 종가 대비 1봉전 고가등락률이 10% 이상
2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만
1일전 및 2일전 상한가가 아닐것
1일봉전 시가대비 1일봉전 종가 등락률이 5%이상
2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상
3일봉전 종가대비 2일봉전 종가 등락률이 5%이하
아래에 제가 작성한 검색식인데
2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만
2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상
이 두가지 조건 수식부탁드리며 제가 작성한 것도 맞는지 검토 부탁드립니다.
감사합니다.
var : 상한가(0), UpLimit(0), 전일상한가(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
if CodeCategory() == 2 then {
if date >= 20030721 then {
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
up7 = int(UpLimit/1+0.00001)*1;
}
}
Else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
if C < 상한가 and C[1] < 상한가[1] //1일전 및 2일전 상한가가 아닐것
and C[1] > O[1]*1.05 //1일봉전 시가대비 1일봉전 종가 등락률이 5%이상
and C[2] < C[3]*1.05 //3일봉전 종가대비 2일봉전 종가 등락률이 5%이하
and H[1] > C[2]*1.10 //2일봉전 종가 대비 1봉전 고가등락률이 10% 이상
Then
find(1);
//2일봉전 기준 60봉 이내에서 시가대비 고가 10% 미만
//2일봉전부터 60일봉 기간내 평균거래량보다 1봉전 거래량이 500%이상
2019-03-26
388
글번호 127388
답변완료
수식 요청드립니다.
* 많은 도움에 정말 고맙습니다.
* 퍼센트 율(%) 두건 좀 요청드립니다.
1번: 100봉 기준 양봉이면서 현재가 보다 높은율 과 낮은율 좀 부탁 드립니다.
즉 100봉중 양봉이면서 종가가 현재가 보다 높으것과 낮은것의 비율 입니다.
(현재가 와 종가가 같으면 제외)
2번: 매매(매수 or 매도)후 최대수익 과 최대손실을 비교 하여
청산 하는 로직좀 부탁 드립니다.
수식 : (최대수익(A) - 최대 손실(B)) = C
→ 최대손실은 항상 "0"이거나 마이너스이므로 마이너스 해줌)
.최대수익(D) : A / C 값
.최대손실(F) : B / C 값
.D:F 비율이 3:7 이상이면 청산
.D:F 비율이 8:2 이상이면 청산
* 매번 고맙습니다.
2019-03-26
367
글번호 127387
답변완료
문의드립니다.
질문 1번>
이평 골든 크로스가 발생할 경우
발생한 봉부터 5개봉까지 차트하단에 plot 을 그리고 싶습니다.
barindex 함수를 사용해서 가능할까요?
질문 2번>
종가가 볼린저밴드 상단선보다 크면 plot1
종가가 볼린저밴드 하단선보다 크면 plot2
를 그리는 수식 부탁드립니다.
감사합니다.
2019-03-26
372
글번호 127386