커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4725
글번호 230811
답변완료
문의드립니다
input : aa(3),P(5);
var : cnt(0),count(0),count1(0);
var : cnt2(0),count2(0),count3(0);
var : HH(0),HV(0);
var : HH2(0),HV2(0);
count= 0;
For cnt =0 to 5 Begin
if h == h[cnt] Then
count = count + 1;
count1 = count + h;
end
var1 = (count1);
HH = var1;
HV = H;
for cnt = 0 to P-1{
if var1[cnt] > HH Then{
HH = var1[cnt];
HV = H[cnt];
}
}
count2= 0;
For cnt2 =0 to 5 Begin
if h == l[cnt2] Then
count2 = count2 + 1;
count3 = count2 + h;
end
var2 = (count3);
HH2 = var2;
HV2 = H;
for cnt2 = 0 to P-1{
if var2[cnt2] > HH2 Then{
HH2 = var2[cnt2];
HV2 = H[cnt2];
}
}
plot1(Hv);
plot2(Hv2);
위 수식은 만들어주신걸 살작 가공하였습니다
그런데
여기서 더 가공하고 십은것은 hh 와 hh2 의값을+합하여
이전 5봉중 가장큰값의고가를 표시하고십습니다
var1 = (Hh+Hh2);
plot2(var1); 이런식으로 해보니 안되어서요
부탁드립니다
감사합니다
2015-11-21
175
글번호 92634
답변완료
부탁드립니다.
if MarketPosition <= 0 and 첫매수진입조건 Then
buy("b");
if MarketPosition == 1 Then{
exitlong("bl",AtStop,EntryPrice-PriceScale*15);
exitlong("bp",AtLimit,EntryPrice+PriceScale*30);
if MaxEntries == 1 Then
buy("bb",atlimit,EntryPrice-PriceScale*10);
}
if MarketPosition >= 0 and 첫매도진입조건 Then
sell("s");
if MarketPosition == -1 Then{
exitlong("sl",AtStop,EntryPrice+PriceScale*15);
exitlong("sp",AtLimit,EntryPrice-PriceScale*30);
if MaxEntries == 1 Then
sell("ss",atlimit,EntryPrice+PriceScale*10);
}
&&&&&&&&&&&&&&
( 상기수식에서 매도청산의 exitlong을 exitshort로 변경했읍니다.)
&&&&&&&&&&&&&&&
그림 2를보면 추가계약 체결은 잘되는것 같은데...
청산이 따로 되네요.
첫 계약의 청산조건에서 두번째 계약도 같이 일괄 청산되게 부탁드립니다.
( 두계약의 평단이 아닌 첫계약 청산조건에서 일괄청산되게 부탁드립니다.)
*** 궁금한점하나
--- 추가진입은 봉완성시인가요? 아님 10틱지정가인가요?
혹, 지정가라면 봉완성시추가계약이 체결되는 수식도 부탁드립니다.
*** 궁금한점 둘
--- 그림2에서 두번째신호의 청산이 이상하네요.
추가계약되면서 익절이되어야 정상인것같은데...
&&&&&&&&&&&
*** 다른 부탁 하나 더 드립니다.
C < O+PriceScale*20
상기수식을 data2에서 적용할수있게 변경 부탁드립니다.
2015-11-21
176
글번호 92633
답변완료
호가잔량 호가건수 시스템식
안녕하세요!!
매수호가+ 와 매수건수+ 면 매수
매수호가- 와 매수건수- 면 매도
수익 0.5P(변수값가능) 청산후 매매종료
여기서 각각 호가와 건수 차이가 300 이상일때만 (변수로 조정가능)
수식신호가 나오는 시스템식 부탁드립니다
늘 수고하시는 노고에 감사드립니다.
2015-11-21
272
글번호 92632
답변완료
문의 드립니다.
아래수식을 부탁드립니다.
1 1분봉에서 일봉5일이평을 표현합니다.
2 ma(c,5)>일봉5일이평 차이가 1 이상일때 당일상전환 정의하고
3 ma(c,5)<일봉5일이평 차이가 이이상일때 당일하전환이라 정의 함
4 당일까지 상전환,하전환의 일수를 표현한다,
상전환예를들면 발생일이 상전환1,다음일이 상전환2...
하루에 몇번이 발생해도 일수로는 하나로 간주함.
당일상전환이 없는날도 상전환일수에는+함,
즉 당일하전환이발생하지 않으면계속+하고,
당일하전환이발생시 상전환일수는 0 로함
5.상전환경우에 상전환진행중인데 ..
그사이 멸일간은 당일하전환도없고 당일상전환도 없이진행돼다가
그이후 당일상전환이 발생한경우,
이전당일상전환과 현당일상전환 사이의 일수를 표현함
6. 하전환경우도 5와동일하게 표현함.
위식을 부탁드립니다.
2015-11-22
165
글번호 92631
답변완료
문의드립니다
안녕하세요
아래지표식(RENKO_MACD)에서 MACD 대신에
1.RENKO_스토케스틱(단순이평적용)
2.RENKO_CCI
지표식을 각각 부탁드립니다.
input:renkoSize(0.5),p1(12),p2(26),p3(9);
input : 마지막봉시간(065900);
var:j(0),k(0),renkoCnt(0),gubun(0),filename("renko2.txt"),printOK(False),
sum(0),ema1_OK(false),ema2_OK(false),sig_OK(False),idx(0);
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0),ma1[50](0),ma2[50](0),
ema1[50](0),ema2[50](0),macdVal[50](0),macdSig[50](0);
if Bdate != Bdate[1] Then
idx = 0;
idx = idx+1;
If idx == 0 Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산
gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산
For j = 49 DownTo 1 { //금일 시가봉을 신규 추가
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
ema1[j] = ema1[j-1];
ema2[j] = ema2[j-1];
macdVal[j] = macdVal[j-1];
macdSig[j] = macdSig[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else {
If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점
If OO[0] - renkoSize >= C Then {
gubun = -1;
CC[0] = OO[0] - renkoSize;
HH[0] = OO[0];
LL[0] = CC[0];
//지수이평을 계산할 수 있을 만큼 렌코가 만들어진 이후 계산 시작
if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1];
if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1];
if ema2_OK then macdVal[0] = ema1[0] - ema2[0];
if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1];
j = 0;
if printOK then print(filename,
"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
Else If OO[0] + renkoSize <= C Then {
gubun = 1;
CC[0] = OO[0] + renkoSize;
HH[0] = CC[0];
LL[0] = OO[0];
if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1];
if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1];
if ema2_OK then macdVal[0] = ema1[0] - ema2[0];
if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1];
j = 0;
if printOK then print(filename,
"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If LL[0] - renkoSize >= C Then {
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
if ema1_OK then ema1[j] = ema1[j-renkoCnt];
if ema2_OK then ema2[j] = ema2[j-renkoCnt];
if ema2_OK then macdVal[j] = macdVal[j-renkoCnt];
if sig_OK then macdSig[j] = macdSig[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
if ema1_OK then ema1[j] = (CC[j]-ema1[j+1])*(2/(p1+1))+ema1[j+1];
if ema2_OK then ema2[j] = (CC[j]-ema2[j+1])*(2/(p2+1))+ema2[j+1];
if ema2_OK then macdVal[j] = ema1[j] - ema2[j];
if sig_OK then macdSig[j] = (macdVal[j] - macdSig[j+1])*(2/(P3+1))+macdSig[j+1];
if printOK then print(filename,
"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
Else If HH[0] + renkoSize <= C Then {
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
ema1[j] = ema1[j-renkoCnt];
ema2[j] = ema2[j-renkoCnt];
macdVal[j] = macdVal[j-renkoCnt];
macdSig[j] = macdSig[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
if ema1_OK then ema1[j] = (CC[j]-ema1[j+1])*(2/(p1+1))+ema1[j+1];
if ema2_OK then ema2[j] = (CC[j]-ema2[j+1])*(2/(p2+1))+ema2[j+1];
if ema2_OK then macdVal[j] = ema1[j] - ema2[j];
if sig_OK then macdSig[j] = (macdVal[j] - macdSig[j+1])*(2/(P3+1))+macdSig[j+1];
if printOK then print(filename,
"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
Else If stime >= 마지막봉시간 and stime[1] < 마지막봉시간 Then { //당일 종가봉에서
For j = 49 DownTo 1 {
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
ema1[j] = ema1[j-1];
ema2[j] = ema2[j-1];
macdVal[j] = macdVal[j-1];
macdSig[j] = macdSig[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1];
if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1];
if ema2_OK then macdVal[0] = ema1[0] - ema2[0];
if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1];
j = 0; //마지막 1봉만 출력
if printOK then print(filename,
"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
if ema1_OK == False and CC[p1] > 0 then { //지수이평 계산 가능할 때까지 대기
sum = 0;
for j = 0 to p1 - 1 {
sum = sum + CC[j];
}
ema1[0] = sum/p1; //처음 값은 단순이평값으로
ema1_OK = True; //다음 봉부터 지수이평 계산되도록 설정
}
if ema2_OK == False and CC[p2] > 0 then {
sum = 0;
for j = 0 to p2 - 1 {
sum = sum + CC[j];
}
ema2[0] = sum/p2;
ema2_OK = True;
}
if sig_OK == False and CC[P2+p3] > 0 then {
sum = 0;
for j = 0 to p3 - 1 {
sum = sum + macdVal[j];
}
macdSig[0] = sum/p3;
sig_OK = True;
}
Plot1(macdVal[0],"macd");
Plot2(macdSig[0],"macd signal");
PlotBaseLine1(0);
2015-11-23
296
글번호 92630
답변완료
KQ 외인/기관 순매수 금액 지표
안녕하세요.
KQ의 외인과 기관 순매수 금액을 지표로 구현하고자 할때,
다음과 같이 사용하는 것으로 알고 있습니다.
plot1(data2(c),"개인");
plot2(data3(c),"외국인");
plot3(-(data2(c)+data3(c)),"기관");
첨부 그림은 금요일 코스닥 장중 순매수 금액 데이터인데요.
위와 같이 구현하면 기관값이 정확하게 표시되지 않습니다.
다른 방법이 없나요?
2015-11-20
221
글번호 92629
답변완료
부탁드립니다
해선에서 메뉴에 있는 분봉 피봇 디마크 말고 일봉 피봇 디마크 부탁드립니다
1.피봇기준선,1,2차지지선,1,2차 저항선 수식 부탁드립니다
2.demark 기준선, 목표고가, 목표저가 수식 부탁드리립니다
2015-11-20
206
글번호 92628
부양가족 님에 의해서 삭제되었습니다.
2015-11-20
5
글번호 92621
해월정 님에 의해서 삭제되었습니다.
2015-11-20
2
글번호 92620