커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6174
글번호 230811
답변완료
문의드립니다.
수고하십니다.
아래 수식을 검색하여
붙임 그림과 같이 검색된 골든브릿지증권 차트입니다.
1. 이 검색식에서 기준봉이 오늘 봉인지 어제 봉인지요
2. 오늘, 어제 봉 두봉중 어제봉의 저점을 기준으로 이전10봉까지 1% 이내의 봉의 개수가 3개
이하라 판단되는데 어디가 잘 못 되었는지 알려 주시면 고압겠습니다.
3. 그리고 오늘봉도 카운트에 포함되나요
= 아래 검색식 구현 의도 =
일봉상 오늘 현재봉(기준봉)의 저점과 최근 10봉중 캔들의 저점을
비교하여 +,- 1%(범위)이내인 봉이 5개 이상 나오는 종목중을 검색하는 식
input : P(10),Per(1),N(5);
var : cnt(0),count(0);
count = 0;
for cnt = 1 to P{
if L[cnt] <= L*(1+Per/100) and L[cnt] >= (1-Per/100) Then
count = count+1;
}
if count >= N Then
find(count);
2018-03-08
254
글번호 117234
답변완료
부탁드립니다
아래수식에서하면 항셍인덱스가 18시15분 정도에서 시작하던데
이걸 10시부터 새벽2시까지로 수정부탁드립니다
input : N(40),P1(1),P2(10),P3(20),P4(60),P5(120),z1(20);
var : HR(0),LR(0),cnt(0),sum1(0),avgv1(0),sum2(0),avgv2(0),sum3(0),avgv3(0),sum4(0),avgv4(0),sum5(0),avgv5(0);
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
sum5 = 0;
for cnt = 1 to P5{
if cnt <= P1 Then
sum1 = sum1+(dayhigh(cnt)-daylow(cnt));
if cnt <= P2 Then
sum2 = sum2+(dayhigh(cnt)-daylow(cnt));
if cnt <= P3 Then
sum3 = sum3+(dayhigh(cnt)-daylow(cnt));
if cnt <= P4 Then
sum4 = sum4+(dayhigh(cnt)-daylow(cnt));
if cnt <= P5 Then
sum5 = sum5+(dayhigh(cnt)-daylow(cnt));
}
#P1일 평균진폭
if dayhigh(P1) > 0 Then
avgv1 = sum1/P1;
#P2일 평균진폭
if dayhigh(P2) > 0 Then
avgv2 = sum2/P2;
#P3일 평균진폭
if dayhigh(P3) > 0 Then
avgv3 = sum3/P3;
#P4일 평균진폭
if dayhigh(P4) > 0 Then
avgv4 = sum4/P4;
#P5일 평균진폭
if dayhigh(P5) > 0 Then
avgv5 = sum5/P5;
if avgv1 > 0 then{
plot2(avgv1/PriceScale,"1");
}
if avgv2 > 0 then{
plot4(avgv2/PriceScale,"10");
}
if avgv3 > 0 then{
plot6(avgv3/PriceScale,"20");
}
if avgv4 > 0 then{
plot8(avgv4/PriceScale,"60");
}
if avgv5 > 0 then{
plot10(avgv5/PriceScale,"120");
}
#당일진폭과 n일 최고,최저진폭
HR = dayhigh(1)-daylow(1);
LR = dayhigh(1)-daylow(1);
for cnt = 1 to N{
if dayhigh(cnt)-daylow(cnt) > HR Then
HR = dayhigh(cnt)-daylow(cnt);
if dayhigh(cnt)-daylow(cnt) < LR Then
LR = dayhigh(cnt)-daylow(cnt);
}
plot21(HR/PriceScale,"최대진폭");
plot22(LR/PriceScale,"최소진폭");
var1=dayhigh;
var2=daylow;
var3=dayhigh-daylow;
var4=dayhigh-C;
var5=C-daylow;
plot23(var4/PriceScale,"---고가-현재가");
plot24(var5/PriceScale,"+++현재가-저가");
plot25((var4+var5)/PriceScale/2,"중가");
plot26((var3-var5)/PriceScale,"눌림");
plot27((var1-var2)/PriceScale,"당일진폭");
plot28(z1,"기입");
2018-03-08
247
글번호 117233
답변완료
부턱드립니다
아래 수식에서 하루전 또는 N일전의 수식부탁드립니다
input : 시작시간(173000),끝시간(183000);
if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간) Then{
var1 = O;
var2 = H;
var3 = L;
var4 = C;
Condition1 = true;
}
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간) Then
Condition1 = false;
if Condition1 == true then{
if H > var2 Then
var2 = H;
if L < var3 Then
var3 = L;
}
plot1(var1,"시가");
plot2(var2,"고가");
plot3(var3,"저가");
plot4((var2+var3)/2,"중가");
plot5(var4,"close종가");
2018-03-08
238
글번호 117232
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 강조
아래 지표에서 매수방향(값이 0보다 크면 매수 방향)이면 매도방향으로 크게(크게는 1개봉전 대비 크기가 n이상 일때로 정함) 변할 때 강조 코딩 부탁드립니다.
if bdate != bdate[1] Then
{var1 = 0;
var2 =0;
var3=0;}
if C > O Then
var1 = var1 + C-O;
if C < O Then
var2 = var2 + O-C;
var3 = ((var1 - var2)/dayopen)*1000;
plot1(var3);
2. 기타
위 지표에서 매수방향이라면 매수방향 고점(시가부터 고점까지의 값) 대비 n% 이상 되돌렸을 때 고가 저가 저장, 매도는 반대
3. 강조
위 지표에서 장시작후 3개봉까지의 합이 n이상일 때 강조
4. 56974 답변 부탁드립니다.
2018-03-08
235
글번호 117225
답변완료
진입시간 제한
input조절에 일정시간 이후 진입을 제한하는 수식을 추가바랍니다.
고맙습니다.
****************
input : s1(20),s2(20),X1(20),X2(20),진입시간(090000);
var : T1(0),entry(0),LL(0),EH(0);
if Bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 and stime >= 진입시간 and C >= daylow+PriceScale*s1 and C[1] < daylow+PriceScale*s1 Then
sell("s1");
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
EH = H;
if H > EH Then
EH = H;
if entry == 1 and C <= EH-PriceScale*X1 Then
ExitShort("sx1");
}
if TotalTrades > TotalTrades[1] Then
LL = L;
if L < LL Then
LL = L;
if MarketPosition == 0 and entry == 1 and stime >= 진입시간 and C >= LL+PriceScale*s2 and C[1] < LL+PriceScale*s2 Then
sell("s2");
if MarketPosition== 1 and entry == 2 Then
exitlong("sx2",AtStop,EntryPrice-PriceScale*X2);
2018-03-08
234
글번호 117219
답변완료
부탁 드립니다.
도움 주심에 감사 드립니다.
var4 값이
1)해선 시작시간(08:00)에 계산을 시작하여
익일 07:00에 마치는 수식과
2)주초(월요일 08:00)에 시작하여 주말(토요일 07:00)에 마치는
수식 부탁 드립니다.
미리 감사 드립니다.
var1=iff(o>c,c-o,0);
var2=iff(o<c,o-c,0);
var3=var1-var2;
var4=accum(var3);
2018-03-08
237
글번호 117218
스오어스 님에 의해서 삭제되었습니다.
2018-03-08
11
글번호 117217
답변완료
문의드립니다.
안녕하세요.
Input : N(5) ;
var : Hv(0),Lv(0),cnt(0),Hiv(0),Liv(0),sum1(0),sum2(0),ii(0), HLH(0);
Array : HH[50](0),HI[50](0),LL[50](0),LI[50](0);
if date != date[1] Then {
HH[0] = H;
HI[0] = index;
LL[0] = L;
LI[0] = index;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
HI[cnt] = HI[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
LI[cnt] = LI[cnt-1][1];
} }
if H > HH[0] Then {
HH[0] = H;
HI[0] = index; }
if L < LL[0] Then {
LL[0] = L;
LI[0] = index; }
if HH[abs(N)-1] > 0 and LL[abs(N)-1] > 0 Then { # 음수를 사용하기 때문에 abs(N) 입력
Hv = HH[0];
Hiv = Hi[0];
Lv = LL[0];
Liv = Li[0];
for cnt = 0 to abs(N)-1 { # 음수를 사용하기 때문에 abs(N) 입력
if HH[cnt] >= Hv Then {
Hv = HH[cnt];
Hiv = HI[cnt]; }
if LL[cnt] <= Lv Then {
Lv = LL[cnt];
Liv = LI[cnt];
} }
if N >= 1 Then {
ii = index-Liv;
HLH = H[0]; } # HLH ; 저점 이후의 고점, 또는 고점 이후의 저점
if N <= -1 Then ### 여기에 대괄호 { 를 넣고 아래에 마감 괄호를 넣으면 지표가 이상해짐 - 그대로 사용
ii = index-Hiv;
HLH = L[0]; }
var1 =(H+L)/2*V;
sum1 = 0;
sum2 = 0;
for cnt = 0 to ii {
sum1 = sum1 + var1[cnt];
sum2 = sum2 + V[cnt];
var64 = sum1/sum2; # n일라인
if crossup(c,var64) Then {
var51 = index;
var7 = var64; # 상향 돌파한 값
}
if CrossDown(c,var64) Then {
var52 = index;
var8 = var64; # 하향돌파한 값
}
if N > 0 Then { # 양수이면 저점에서 현재까지 출력
plot1(var64,"n일라인");
if c < var64 then
plot2(var8,"n일라인 돌파값");
}
if N < 0 Then { # 음수이면 고점에서 현재까지 출력
plot1(var64,"n일라인");
if c > var64 then
plot2(var7,"n일라인 돌파값");
} }
---------------------------------
선물 15분봉에서
위 수식의 지표 출력하면
if c < var64 then
plot2(var8,"n일라인 돌파값");
if c > var64 then
plot2(var7,"n일라인 돌파값"); 이 출력값이
현재가가 var8, var7 을 돌파하기 전인데도
여러곳에 나타납니다.
위 수식 수정 부탁드립니다.
2018-03-08
255
글번호 117214
답변완료
함수식 변환요청드립니다.
안녕하세요.. 담당자님 늘 고생하십니다.
키움 파라볼릭 함수식을 예스로 변환해서 여기서 이제 써볼려고 했더니 없다고 해서 시그널메이커로 우회에서 구해봤습니다.
요청1. 변수최적화기능을 활용해보고 있는데, 익절, 손절 틱은 변수로 설정할 수 있어서 활용중입니다. 분봉도 변수로 설정할 수 있도록 코딩 부탁드립니다.
input : BBP(5),dv(2), profit(0), loss(0);
var : Price(0),BBmd(0),BBup(0),BBdn(0) ;
Price = (C+H+L)/3;
BBmd = ma(Price,BBP);
BBup = BBmd + std(Price,BBP)*dv;
BBdn = BBmd - std(Price,BBP)*dv;
if crossup(C,bbup) Then
{
Buy("B");
}
# 매도/매수청산
if CrossDown(C,bbdn) Then
{
Sell("S");
}
SetStopProfittarget(Profit,PointStop);
SetStopLoss(Loss,PointStop);
요청2. 예스로 키움식 파라볼릭 구현할 수 있도록 변환해 주시기 바랍니다.
input :
pAF(0.0022),
pAFMAX(0.004);
Var : vAf(0), vNewAf(0), vMinAf(0.02), vEp(0), vPep(0),
vSar(0), vSarp(0), vTrend(1), vResult(0);
If BarIndex = 1 Then
Begin
if C > C[1] Then
Begin
vEp = H[1];
vPep = H[1];
vTrend = 1;
vSar = L[1];
vSarp = L[1];
End
Else
Begin
vEp = L[1];
vPep = L[1];
vTrend = -1;
vSar = H[1];
vSarp = H[1];
End;
vNewAf = vMinAf;
vResult = vSar + (vEp - vSar) * pAF;
End
Else
Begin
vSar = vSar[1] + vNewAf * (vEp - vSar[1]);
vResult = vSar;
vPep = vEp;
if vTrend = 1 Then //상승추세
Begin
if vSar > L Then
Begin
vSar = vEp;
vResult = vSar;
vEp = L;
vNewAf = vMinAf;
vTrend = -1;
End
Else if H > vPep Then
Begin
vEp = H;
vNewAf = min(vNewAf + pAF, pAFMAX);
End;
End
Else //하락추세
Begin
if vSar < h Then
Begin
vSar = vEp;
vResult = vSar;
vEp = H;
vPep = vEp;
vNewAf = vMinAf;
vTrend = 1;
End
Else if L < vPep Then
Begin
vEp = L;
vNewAf = min(vNewAf + pAF, pAFMAX);
End;
End;
End;
plot1(vResult);
2018-03-08
291
글번호 117213