커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3618
글번호 230811
답변완료
스크립트 처리과정 질문
실시간으로 코드 돌릴때는 tick이 들어올때마다 스크립트를 반복한다고 알고있어서, 15분마다 딱 한번만 실행시키고 싶은 내용이 있어서 다음과 같은 코드를 짰습니다.
Time이 15분이 되었을때 TFinitializer의 값이 1이고 if문이 처음 돌아가면서 TFinitializer를 0으로 만들어 줘서 다음 tick들이 들어올때 if문을 더이상 실행시키지 않으려고 하였습니다.
그런데 디버그 창을 보니 생각대로 안되고 tick이 들어오는대로 if문 안의 코드들이 계속 실행되는것처럼 보입니다.
그런데 더 신기한점은 tmpsum이나 tmp 배열의 값은 또 바뀌지 않는다는 점입니다.
실시간 tick이 들어올때 아래 스크립트가 어떤 과정으로 처리되는지 궁금합니다.
아래 코드가 tick이 들어올때마다 if문이 실행되는 것인지도 궁금하고 만약 그렇다면 이것을 한번만 실행되게 하려면 어떻게 해야하는지도 궁금합니다.
첨부한 이미지의 highlight 된 부분 이전은 이미 load 된 데이터에 대한 결과이고 이후는 실시간 데이터에 적용된 결과입니다.
-----------------------------------------------------------------------------------
var : tmpsum(0), cnt(0), baseTF(15), TF(0), TFinitializer(1);
Array : tmp[100](0);
TF = TimeToMinutes(stime)%baseTF;
if (Bdate != Bdate[1]) or (Bdate == Bdate[1] and baseTF-TF == 2) then {
TFinitializer = 1;
}
if (Bdate != Bdate[1]) or (Bdate == Bdate[1] and baseTF-TF == 1 and TFinitializer == 1) then {
Tfinitializer = 0;
tmpsum = tmpsum + 1;
for cnt = 1 to 99 {
tmp[99-cnt+1] = tmp[99-cnt];
}
tmp[0] = tmpsum;
if sdate == 20190827 and stime> 200000 and stime < 230000 then {
MessageLog("time: %.0f, tmpsum: %.0f", time, tmpsum);
MessageLog("tmp array: %.0f, %.0f, %.0f, %.0f", tmp[0], tmp[1], tmp[2], tmp[3]);
}
}
2019-08-27
301
글번호 131524
답변완료
문의
if data2(SwingHighBar(1,H,Left,Right,Left+right) == 0) Then
plot2(H,"검색",MAGENTA);
if data3(SwingHighBar(1,H,Left,Right,Left+right) == 0) Then
plot2(H,"검색",GREEN);
위는 예스스탁에서 주신답입니다,그런데 이것이 선언되지않은 Right,Left가 사용되었다고 검정오류가 나옵니다, 다시 좀 부탁드릴게요
2019-08-27
184
글번호 131523
답변완료
강조 수식 문의 합니다.
첨부된 이미지처럼 강조할 수 있는 방법이 있나요?
그리고 PlotPaintBar 를 여러 조건으로 수식을 만들어서 RED , BLUE, GREEN과 같이 강조하고 싶은데 방법이 있을까요?
2019-08-27
255
글번호 131513
답변완료
검색식 부탁드립니다.
오분봉 차트에서
일목균형표의기준선(기간은표준)이 4개의 볼린저밴드상단(기간은20,21,22,23 D는 모두2)을
동시에 크로스업하는 종목을 검색하고 싶습니다.
수식 부탁드립니다.
그리고 초보인데 장중에 실시간으로 검색 가능 한가요?
2019-08-27
195
글번호 131501
답변완료
첫봉....
장시작후 첫봉의 시가 고가 저가 종가와
첫봉의 고가와 저가의 중심값을 종료시까지 나타내고
첫봉의 고가와 저가의 진폭만큼 위아래로 12개씩 나타내고 싶습니다
2019-08-27
196
글번호 131500
답변완료
두 수식
아래 두식을동시에 매매하게부탁합니다.
수식1번
input : HP(5),LP(5);
var : cnt(0),HH(0),LL(0), Value(0),vol(0);
if crossup(c,HH+0.0) then
buy("b");
if CrossDown(c,LL-0.0) Then
sell("s);
수식2번
input : HP(2),LP(2);
Var : Pivot(0),R1(0),S1(0), Value(0),vol(0);
var : HH(0),LL(0);
HH = max(dayhigh(1),dayhigh(5));
LL = min(daylow(1),daylow(5));
Pivot = (HH+LL+DayClose(1))/3;
R1 = 2*Pivot-LL;
S1 = 2*Pivot-HH;
if MarketPosition <= 0 and crossup(c,R1-0) Then
buy("BUY.HH-0);
if MarketPosition >= 0 and CrossDown(c,S1-0) Then
sell("SELL.LL-0);
매수1
5일고가와 5일 피봇고가를 동시돌파시 매수
매도는반대
정리2
5일고가 또는 5일 피봇고가 중 하나를 돌파시 이익실현
(즉 이익시만 포지션정리하고 손실시다음신호까지대기)
위수식을 부탁합니다.
감사합니다.
2019-08-27
186
글번호 131498
답변완료
함수요청
안녕하세요?
지표 수식 요청드립니다.
볼린져밴드 %b를 요청드립니다.
%b 산출공식
(종가-하단 BB) / (상단 BB- 하단 BB)
2019-08-27
173
글번호 131497
답변완료
수식요청
안녕하세요
아래의 수식가운데...(plot5(DH[0]-var1*0.382,"38.2)라인에 걸친 캔들말고 돌파한 캔들시가에 매수신호 ....나오게
( plot3(DH[0]-var1*0.618,"61.8)라인에도 걸친 캔들말고 돌파한 캔들시가에 매도 신호나오게
부탁드립니다.
그리고 진입후 20틱 단위로 카운팅이 표시되도록 같이 부탁드립니다.
var : cnt(0);
Array : DO[10](0),DH[10](0),DL[10](0),DC[10](0);
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and stime >= 100000 and stime[1] < 100000) Then{
DO[0] = O;
DH[0] = H;
DL[0] = L;
for cnt = 1 to 9{
DO[cnt] = DO[cnt-1][1];
DH[cnt] = DH[cnt-1][1];
DL[cnt] = DL[cnt-1][1];
DC[cnt] = DC[cnt-1][1];
}
}
if H > DH[0] Then
DH[0] = H;
if L < DL[0] Then
DL[0] = L;
DC[0] = C;
var1 = DH[0] - DL[0];
plot1(DH[0],"고점");
plot2(DH[0]-var1*0.764,"76.4");
plot3(DH[0]-var1*0.618,"61.8");
plot4(DH[0]-var1*0.500,"50.0");
plot5(DH[0]-var1*0.382,"38.2");
plot6(DH[0]-var1*0.236,"23.6");
plot7(DL[0],"저점");
plot8(DO[0],"시가");
2019-08-27
185
글번호 131495
답변완료
지표 수정 부탁드립니다.
아래는 답변 받았던 내용입니다.
약간의 수정 부탁드립니다.
1. 선의 색상과 굵기를 선택할 수 없어 수정 가능하도록 부탁드립니다.
2. 25, 75에 해당되는 부분(저점을 0, 고점을 100으로 했을 경우)을 변경할 수 있도록
외부입력변수로 부탁드리겠습니다.
감사합니다.
=============================================================================
input : n(20),CC(10),CF(3);
var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
var : O1(0),H1(0),L1(0),C1(0),sum(0),mav(0),VD(0),VT(0),VM(0),VP(0);
Array : V1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
TT = stime;
ii = 0;
}
Else
ii = ii+1;
if D1 > 0 then
{
#영업일변경 기준으로 경과된 분
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
//n분 미만
if TM < n then
{
//당일최고와 최저가를 기준으로 선 출력
hh = DayHigh;
ll = daylow;
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*0.25);
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*0.50);
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*0.75);
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
else //분이상 경과
{
//최근 n분 이내에서 최고가와 최저가 계산해서 선 출력
HH = H;
LL = L;
for cnt = 0 to ii
{
if TM[cnt] > TM-N then
{
if H[cnt] > HH Then
HH = H[cnt];
if L[cnt] < LL Then
LL = L[cnt];
TT = stime[cnt];
}
if TM[cnt] < TM-N Then
cnt = ii+1;
}
TL_Delete(TL1);
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*0.25);
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*0.50);
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*0.75);
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
TL_SetColor(TL1,RED);
TL_SetColor(TL2,MAGENTA);
TL_SetColor(TL3,GREEN);
TL_SetColor(TL4,CYAN);
TL_SetColor(TL5,BLUE);
#1분봉 기준(시,고,저,종,거래량 계산)
if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then
{
O1 = O;
H1 = H;
L1 = L;
V1[0] = 0 ;
for cnt = 1 to 99
{
V1[cnt] = v1[cnt-1][1];
}
}
if H > H1 Then
H1 = H;
if L < L1 Then
L1 = L;
C1 = C;
V1[0] = V1[0]+V;
TL_Delete(TL6);
if V1[cc] > 0 then
{
sum = 0;
for cnt = 1 to CC
{
sum = sum + V1[cnt];
}
mav = sum/CC;
//최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면
if V1[0] >= mav*CF Then
{
//날짜,시간,TM값, 평균값 저장
VD = sdate;
VT = stime;
VM = TM;
VP = (O1+H1+L1+C1)/4;
}
//오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력
if VD == sdate and VM > TM-n Then
{
TL6 = TL_new(D1,TT,VP,Sdate,stime,VP);
TL_SetColor(TL1,BLACK);
}
}
}
2019-08-27
202
글번호 131491