커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3669
글번호 230811
답변완료
부탁좀 드리겠습니다.
전일시가, 전일종가, 전일중심가, 전일고가, 전일저가
당일시가, 당일중심가, 디마크상한가, 하한가 수식에서
각각의 틱챠트에서 동일한 건수로 조회를 했을때 그림파일처럼 지표값이 너무도 다름니다
그렇다면 10분봉의 지표값을 틱챠트로 가져올수 없는지요
2020-08-14
1244
글번호 141492
답변완료
문의드립니다
1,
해외선물의경우 오전7시부터 오전9시까지의 고가와저가를 선그래프로 나타내고 싶습니다
2,
매수체결량이 매도체결량보다 2배이상 많은봉이 연속으로 2번 나올때 현재봉아래에 표시하려합니다
2020-08-14
1124
글번호 141491
qha71 님에 의해서 삭제되었습니다.
2020-08-14
2
글번호 141490
답변완료
수식 요청드립니다
수고하십니다
1]어제부터 이전 3일[어제 포함 3일]간의 일봉 종가중 제일 작은 날의 종가를
당일 분봉 차트에 표시하고,
(몇일 이전까지 기간값 설정 가능한지요...?)
2]필요시 길이를 우측으로 N일간 연장하는 지표를 그리고 싶습니다.
[1일 연장시 내일 분봉에 이 라인이 표시되게...]
만일 2]번이 불가능하면 1]번만 부탁합니다.
수고하세요
2020-08-13
1280
글번호 141489
답변완료
강조식 부탁합니다ㅣ
1.강조 조건
DMI(지표값14)의 -DI(DIminus)가 10이하 이고(and),
RSI(지표값12)가 70 이상이며(and)
DMI(지표값 5)의 DMI(directional movement index)가 50이상 인 종목 강조식
2020-08-13
1145
글번호 141488
답변완료
항상 감사드리며 건강을 기원합니다
Input:length(10);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),
TL1(0),처리구분(""),T(0),TL2(0),TL3(0);
var : hh(0),ll(0),ii(0),diff(0),TL41(0),TL42(0),TL43(0),TL44(0),TL45(0),TL46(0);
Array:고점[10,5](0),저점[10,5](0);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
TL_Delete(TL2);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetExtRight(TL2,False);
TL2 = TL_New(sDate[1],sTime[1],고점[1,1],sdate,sTime,고점[1,1]);
TL_SetColor(TL2,BLUE);
TL_SetSize(TL2,2);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
TL_Delete(TL3);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetExtRight(TL3,False);
TL3 = TL_New(sDate[1],sTime[1],저점[1,1],sdate,sTime,저점[1,1]);
TL_SetColor(TL3,RED);
TL_SetSize(TL3,2);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,0);
TL_SetColor(TL1,YELLOW);
TL_SetEnd(TL2,sdate,stime,고점[1,1]);
TL_SetEnd(TL3,sdate,stime,저점[1,1]);
TL_SetExtRight(TL2,true);
TL_SetExtRight(TL3,true);
if T != T[1] then
{
if T == 1 Then
{
HH = 고점[2,1];
LL = 저점[1,1];
ii = index-고점[2,2];
diff = abs(HH-LL);
}
Else
{
HH = 고점[1,1];
LL = 저점[2,1];
ii = index-저점[2,2];
diff = abs(HH-LL);
}
TL_Delete(TL41);
TL_Delete(TL42);
TL_Delete(TL43);
TL_Delete(TL44);
TL_Delete(TL45);
TL_Delete(TL46);
TL41 = TL_New(sdate[ii],stime[ii],LL+diff*2.00,sdate,stime,LL+diff*2.00);
TL42 = TL_New(sdate[ii],stime[ii],LL+diff*2.618,sdate,stime,LL+diff*2.618);
TL43 = TL_New(sdate[ii],stime[ii],LL+diff*3.618,sdate,stime,LL+diff*3.618);
TL44 = TL_New(sdate[ii],stime[ii],HH-diff*2.00,sdate,stime,HH-diff*2.00);
TL45 = TL_New(sdate[ii],stime[ii],HH-diff*2.618,sdate,stime,HH-diff*2.618);
TL46 = TL_New(sdate[ii],stime[ii],HH-diff*3.618,sdate,stime,HH-diff*3.618);
TL_SetExtRight(TL41,true);
TL_SetExtRight(TL42,true);
TL_SetExtRight(TL43,true);
TL_SetExtRight(TL44,true);
TL_SetExtRight(TL45,true);
TL_SetExtRight(TL46,true);
TL_SetSize(TL41,2);
TL_SetSize(TL42,2);
TL_SetSize(TL43,2);
TL_SetSize(TL44,2);
TL_SetSize(TL45,2);
TL_SetSize(TL46,2);
}
위 수식은 회원님의 수식입니다
@@@ 종목검색
### 첨부한 사진처럼 1번 2번 빨간 라인이 발뱅하는 현재봉 부터 3일 동안 검색 되도록
부탁 드립니다
$$$$ 시스템 매수 신호식만 부탁 드립니다
1번 2번 처럼 적색 라인이 발생 하는 시작 부터 신호식 부탁 드립니다
꾸벅 감사합니다
2020-08-13
1239
글번호 141487
답변완료
청산 수식이 발생할때마다 분할 매도하는 수식 부탁드림니다.
국내 주식
data1 삼성전자(300분봉)
data2 Kodex200
data3 삼성전자 일봉
분할매수는 15단계에 걸쳐서 잘 작동이 되는데요...
청산는 신호 발생하면 전량 실행됨에 따라 다음과 같이 운영하고 싶습니다.
분할 청산( 10회 정률 분할 청산)
분할 매수한후
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값
위와 같은 신호가 봉마다 발생시마다 10회 정률 분할 청산하는 수식 부탁드림니다.
예를 들면 5회에 걸쳐 1000만원을 매수한후
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값
의 신호가 발생하는 봉마다 10분의 1씩 ( 100만원씩) 청산하는 수식 요망
-------------아 래 수 식 ------------------
input : 기준평균봉값(80);
input : 최초진입하락폭(0.94);
input : 추가진입하락폭(0.99);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
input : 제1매수금액(100);
input : 제2매수금액(150);
input : 제3매수금액(200);
input : 제4매수금액(250);
input : 제5매수금액(300);
input : 제6매수금액(350);
input : 제7매수금액(400);
input : 제8매수금액(450);
input : 제9매수금액(500);
input : 제10매수금액(550);
input : 제11매수금액(600);
input : 제12매수금액(600);
input : 제13매수금액(600);
input : 제14매수금액(600);
input : 제15매수금액(600);
var : mav(0,data2),MM(0,Data3),SS(0,Data3);
var : MMM(0,Data2),SSS(0,Data2);
mav = data2(ma(c,기준평균봉값));
MM = Data3(mfi(MFI기간));
SS = Data3(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
if MarketPosition == 0 and data2(CrossDown(c,mav*최초진입하락폭)) then
buy("b1",atlimit,C,Floor(제1매수금액*10000/min(NextBarOpen,C)));
if MarketPosition == 1 then
{
if MaxEntries == 1 then # 85
buy("b2",AtLimit,LatestEntryPrice(0)*추가진입하락폭,Floor(제2매수금액*10000/c));
if MaxEntries == 2 then # 80
buy("b3",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.01),Floor(제3매수금액*10000/c));
if MaxEntries == 3 then # 75
buy("b4",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.02),Floor(제4매수금액*10000/c));
if MaxEntries == 4 then # 70
buy("b5",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.03),Floor(제5매수금액*10000/c));
if MaxEntries == 5 then # 65
buy("b6",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.04),Floor(제6매수금액*10000/c));
if MaxEntries == 6 then # 85
buy("b7",AtLimit,LatestEntryPrice(0)*추가진입하락폭-0.05,Floor(제7매수금액*10000/c));
if MaxEntries == 7 then # 80
buy("b8",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.06),Floor(제8매수금액*10000/c));
if MaxEntries == 8 then # 75
buy("b9",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.07),Floor(제9매수금액*10000/c));
if MaxEntries == 9 then # 70
buy("b10",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.08),Floor(제10매수금액*10000/c));
if MaxEntries == 10 then # 65
buy("b11",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.09),Floor(제11매수금액*10000/c));
if MaxEntries == 11 then # 80
buy("b12",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.10),Floor(제12매수금액*10000/c));
if MaxEntries == 12 then # 75
buy("b13",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.11),Floor(제13매수금액*10000/c));
if MaxEntries == 13 then # 70
buy("b14",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.12),Floor(제14매수금액*10000/c));
if MaxEntries == 14 then # 65
buy("b15",AtLimit,LatestEntryPrice(0)*(추가진입하락폭-0.13),Floor(제15매수금액*10000/c));
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
exitlong("청산",atlimit,C);
}
2020-08-13
1166
글번호 141486
답변완료
부탁 드립니다.
도움 주셔서 깊이 감사 드립니다.
1. 원수식을 타주기(틱봉용)으로 작성 해본 것입니다.
실행결과 조금 이상한 부분이 있어 검토 부탁 드리고자 합니다.
미리 경배로 감사 인사 올립니다.
*원수식)
input:p(10),sig(5);
var1=obv();
var2=ma(var1,p);
var3=var1-var2;
var4=ma(var3,sig);
*타주기_틱봉용)
input :ntick(2),P(10),sig(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : C1(0),CC(0),VV(0),idx(0),sum1(0),mav1(0),sum2(0),mav2(0);
Array : value[100](0),diff[100](0);
if Bdate != Bdate[1] Then
idx = 0;
Else
idx = idx+1;
TF = idx%Ntick;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntick > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntick > 1 and TM >= TM[1]+ntick) or
(Bdate == Bdate[1] and ntick == 1 and TM > TM[1]) Then
{
idx = idx+1;
C1 = CC[1];
VV = 0;
For cnt = 1 to 99
{
value[cnt] = value[cnt-1][1];
diff[cnt] = diff[cnt-1][1];
}
}
CC = C;
VV = VV + v;
if C1 > 0 Then
{
if CC > C1 Then
value[0] = value[1]+VV;
if CC < C1 Then
value[0] = value[1]-VV;
}
if idx >= p Then
{
sum1 = 0;
For cnt = 0 to P-1
{
sum1 = sum1 + value[cnt];
}
mav1 = sum1/P;
diff[0] = value[0]-mav1;
}
if idx >= P+sig Then
{
sum2 = 0;
For cnt = 0 to sig-1
{
sum2 = sum2 + diff[cnt];
}
mav2 = sum2/sig;
Plot1(mav2);
}
2020-08-13
1219
글번호 141485
답변완료
지표식 부탁드려봅니다
매번 답변에 미리 감사드리며 글올려봅니다.
질문은 일정기간안에 있는 일정기간동안의 최고거래량 입니다.
예를들어
highest(v,3)[1] 이면 1봉전 기준 3봉중 최고거래량 일텐데
제가 알고 싶은것은 단순한 3봉중 최고거래량이 아니라
<<일정기간동안 거래량의 합>>의 최고거래량을 알고싶습니다.
흠....제가 언어전달력이 많이 부족한거같네요
다시 예를 들어
1봉전기준 40봉기간내에서 3봉동안의 최고거래량
총 40봉
<-----[---]------------------------------------------> 현재봉
괄호친 이부분의 3봉동안 거래량의 합이 제일 많으면
그 거래량합의 값
총 40봉
<-----------------------------[---]------------------> 현재봉
괄호친 이부분의 3봉동안 거래량의 합이 제일 많으면
그 거래량합의 값
총 40봉
<--------------------------------------------[---]---> 현재봉
괄호친 이부분의 3봉동안 거래량의 합이 제일 많으면
그 거래량합의 값
을 알고싶어요
2020-08-14
1468
글번호 141484