커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8208
글번호 230811
이의정 님에 의해서 삭제되었습니다.
2013-11-07
13
글번호 69298
답변완료
문의드립니다.
1. 하루에 거래횟수를 2번으로 제한하고 싶습니다.
즉 매수진입이후 반대신호가 나와서 반대진입이 되었으면 종가청산하도록하고싶습니다.
2. 참조데이타 외국인순매수데이터를 보고 있다면 그 참조데이타에 지표를 적용하는건
불가능한가요? 즉 외인순매수데이타에 macd를 적용을 시켜서 보고싶다면요.
2013-11-07
183
글번호 69297
답변완료
다시 문의요
안녕하세요~~
다시 문의 합니다
첨부 올려놨으니 보시고 확인부탁합니다 하루에 2번들어가는 식이 몇개 나오는데요 ㅜㅜ
하루에 한번들어가는 식 문의했는데요
매수하는 방법이 35개정도 되는데요 이식 모두 하루에 한번 일어나게 해주세요
예를들어) a1식이 매수가들어가면 a2,a3,b1,b2.... 등등식은 오늘하루 진입안되게해주세요
그다음날은 다시 진입되게 해주세요
분봉으로 적용합니다
수고하십시오~~~
input : 투자금액(100000);
Var : Body(0),HighBody(0),LowBody(0),Height(0),UpTail(0),DnTail(0),Long(False);
var : Vol(0),cnt(0),count(0);
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if CodeCategoryEx == 11 and BasePrice < 50000 Then
vol = int(int((투자금액)/C)/10)*10;
Else
vol = int((투자금액)/C);
Body = Abs(C-O);
HighBody = Max(C,O);
LowBody = Min(C,O);
Height = H-L;
UpTail = H-Max(C,O);
DnTail = Min(C,O)-L;
if count < 1 Then{
If (C[3] > Ma(C,10)[3] and C[3] > O[3] and C[2] > O[2] and C[1] > O[1]) and
(O[3] < O[2] and O[2] < O[1]) and
(C[3] < C[2] and C[2] < C[1]) and
(H[3] < H[2] and H[2] < H[1]) and
(C[3] > O[2] and O[2] > O[3]) and
(C[2] > O[1] and O[1] > O[2]) and
(Body > ma(Body,10)*2 and C < O) and
(O > H[1] and C < L[3]) Then
buy("b1",OnClose,def,vol);
If (C[4] >= Ma(C,10)[4] and C[4] > O[4] and Body[4] > Ma(Body,10)[4]*2) and
(LowBody[3] > Highbody[4]) and
(HighBody[3] >= HighBody[2] and HighBody[2] >= HighBody[1]) and
(C > O and Body > Ma(Body,10)*2 and Close == Highest(C,5)) Then
buy("b2",OnClose,def,vol);
If (C[2] >= Ma(C,10)[2] and C[2] > O[2] and C[1] > O[1] and C > O) and
(O[1] > LowBody[2] and Open[1]<=HighBody[2]) and
(O > LowBody[1] and O <= HighBody[1]) and
(C[2] < C[1] and C[1] < C[0]) and
(Body[2]>Body[1] and Body[1]>Body[0]) Then
buy("b3",OnClose,def,vol);
If (C[1] >= Ma(C,10)[1] and C[1] < O[1] and Body[1] > Ma(Body,10)[1]*2 and C > O) and
(Abs(Open-Open[1]) < Ma(Height,10)*0.1) Then
buy("b4",OnClose,def,vol);
If C[2] >= ma(C,10)[2] and C[2] > O[2] and Body[2] > Ma(Body,10)[2]*2 and
C[1] > O[1] and Body[1] > Ma(Body,10)[1]*2 and Open[1] > Max(O,C)[2] and
C < O and C < C[2] Then
buy("b5",OnClose,def,vol);
If C[2] >= Ma(C,10)[2] and C[2] > O[2] and Body[2] > Ma(Body,10)[2]*2 and
C[1] > O[1] and C > O and
O[1] > C[2] and
Abs(Body-Body[1]) < Body*0.1 and
Abs(O-O[1]) < Ma(Height,10)*0.1 Then
buy("b6",OnClose,def,vol);
If C[4] >= Ma(C,10)[4] and C[4] > O[4] and Body[4] > Ma(Body,10)[4]*2 and
HighBody[3] < H[4] and LowBody[3] >= L[4] and
HighBody[2] < H[4] and LowBody[2] >= L[4] and
HighBody[1] < H[4] and LowBody[1] >= L[4] and
HighBody[3] >= HighBody[2] and HighBody[2]>=HighBody[1] and
C > O and Body > Ma(Body,10)*2 and
Close == Highest(C,5) Then
buy("b7",OnClose,def,vol);
If C[2] > Ma(C,10)[2] and C[2] > O[2] and C[1] > O[1] and O[1] > Max(O,C)[2] and
C < O and O >= LowBody[1] and O <= HighBody[1] and
C > C[2] Then
buy("b8",OnClose,def,vol);
If C > Ma(C,10) and Body > Ma(Body,10)*2 and C > O and
UpTail < Height*0.1 and DnTail < Height*0.1 Then
buy("b9",OnClose,def,vol);
If C[2] > Ma(C,10)[2] and C[2] > O[2] and C[1] > O[1] and C > O and
O[1] >= LowBody[2] and O[1] <= HighBody[2] and
O >= LowBody[1] and O <= HighBody[1] and
C[2] < C[1] and C[1] < C and
Body < Ma(Body,10)*0.5 and O > Max(C,O)[1] Then
buy("b10",OnClose,def,vol);
}
DnTail = Min(O,C) - L;
Uptail = H - Max(O,C);
Height = H - L;
body= Abs(O-C);
highbody = Max(O,C);
LowBody = Min(O,C);
If Abs(Open-Close) > ma(Abs(Open-Close),10)*2 Then
Long = True;
Else
Long = False;
If UpTail == 0 and DnTail == 0 Then
Condition1 = True;
Else
Condition1 = False;
if count < 1 Then{
If C < Ma(C,10) and DnTail < Height*0.1 and C == O and Height > Ma(Height,10) Then
buy("a1",OnClose,def,vol);
Else
If C < Ma(C,10) and (Uptail < Height * 0.1) and C == O and (Height > Ma(Height,10)) Then
buy("a2",OnClose,def,vol);
Else
If C[1] < Ma(C,10)[1] and C[1] < O[1] and Long[1] == True
and C > O and Long and O < L[1] and C >= (O[1]+C[1])/2 and C < O[1] Then
buy("a3",OnClose,def,vol);
Else
If (C[2] >= Ma(C,10)[2] and C[2] < O[2] and C[1] < O[1] and C < O) and
(O[1] > Min(O,C)[2] and O[1] < Max(O,C)[2]) and
(O > Min(O,C)[1] and O < Max(O,C)[1]) and
(C[2] > C[1] and C[1] > C[0]) and
(L[2] < L[1] and L[1]< L[0]) Then
buy("a4",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and C[2] < O[2] and C[1] > O[1] and C < O and
O[1] > C[2] and O[1] == L[1] and
O > Max(H[1],H[2]) and C[2] == C[0] Then
buy("a6",OnClose,def,vol);
Else
If (C[4] < Ma(C,10)[4] and C[4] < O[4] and C[3] < O[3] and C[2] < O[2]) and
(O[4] > O[3] and O[3] > O[2]) and
(C[4] > C[3] and C[3] > C[2]) and
(C[1] < O[1] and H[1] - MaxList(O,C)[1] > 0) and
(H[1] < O[3] and C[2] > C[1]) and
Close > Open and (O > O[1] and C > MaxList(H[1],H[2])) Then
buy("a7",OnClose,def,vol);
Else
If (C[2] < Ma(C,10)[2] and Long[2] == True and C[2] < O[2]) and
(C[1] == O[1] and Max(O,C)[1] < Min(O,C)[2])and
(C > O and Min(O,C) > Max(O,C)[1])and (C > C[2]) Then
buy("a8",OnClose,def,vol);
Else
If (C[1] < O[1] and Long[1] == True and Condition1[1] == True ) and
(Long == True and C > O and Condition1 == True ) and (L > H[1]) Then
buy("a9",OnClose,def,vol);
Else
If C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and
C > O and
Abs(C-C[1]) < Ma(Height,10)*0.1 Then
buy("a10",OnClose,def,vol);
Else
If C < Ma(C,10) and body > Ma(body,10)*2 and C > O and
O == L and Uptail > 0 and Uptail < Height*0.1 Then
buy("a11",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and C[2] == O[2] and C[1] == O[1] and C == O and
HighBody[1]< LowBody[2] and HighBody[1] < LowBody[0] Then
buy("a12",OnClose,def,vol);
Else
If C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and
C == O and Highbody < Highbody[1] and Lowbody > Lowbody[1] Then
buy("a13",OnClose,def,vol);
Else
If C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2
and C > O and Highbody < Highbody[1] and Lowbody > Lowbody[1] Then
buy("a14",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and C[2] < O[2] and body[2] > Ma(body[2],10)*2 and
C[1] > O[1] and Highbody[1] < Highbody[2] and Lowbody[1] > Lowbody[2] and
C > O and C > C[1] Then
buy("a15",OnClose,def,vol);
Else
If C[1] < Ma(c,10)[1] and C[1] < O[1] and
C > O and Body > Ma(Body,10)*2 and
Highbody > Highbody[1] and Lowbody < Lowbody[1] Then
buy("a16",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and C[2] < O[2] and
C[1] > O[1] and Body[1] > Ma(Body[1],10)*2 and
Highbody[1] > Highbody[2] and Lowbody[1] < Lowbody[2] and
C > O and C > C[1] Then
buy("a17",OnClose,def,vol);
Else
If (C[4] < Ma(c,10)[4] and Body[4] > Ma(Body,10)[4]*2 and C[4] < O[4]) and
(C[3] < O[3] and C[1] < O[1]) and
(Body > Ma(Body,10)*2 and C > O) and
(O[3] > HighBody[2] and HighBody[2] > O[1]) and
(C[3] > LowBody[2] and LowBody[2] > C[1]) and
(C >= O[1] and C > O[3] and C < C[4]) Then
buy("a18",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and
C[1] == O[1] and HighBody[1]<LowBody[2] and
C > O and C > C[2] Then
buy("a19",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and
Body[1] < Ma(Body,10)[1]*0.5 and HighBody[1] < LowBody[2] and
C > O and C > C[2] Then
buy("a20",OnClose,def,vol);
Else
If C[3] < Ma(C,10)[3] and
Body[3] > Ma(Body,10)[3]*2 and C[3] < O[3] and
Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and
O[3] == H[3] and C[3] == L[3] and
O[2] == H[2] and C[2] == L[2] and
O[1] < Min(O,C)[2] and H[1] > C[2] and UpTail[1] > Height*0.5 and
O > H[1] and C < L[1] Then
buy("a21",OnClose,def,vol);
Else
If C < Ma(C,10) and DnTail < Height*0.1 and
UpTail > Body*2 and
Height > Ma(Height,10) and
C != O Then
buy("a22",OnClose,def,vol);
Else
If C[2] < Ma(C,10)[2] and C[2] > O[2] and C[1] > O[1] and C > O and
O[1] >= LowBody[2] and O[1]<= HighBody[2] and O <= HighBody[1] and
C[2] <= C[1] and C[1] <= C Then
buy("a23",OnClose,def,vol);
Else
If C[1] < Ma(C,10)[1] and C[1] < O[1] and Body[1] > Ma(Body,10)[1]*2 and
C < O and Highbody < Highbody[1] and Lowbody > Lowbody[1] Then
buy("a24",OnClose,def,vol);
Else
If C < Ma(C,10) and UpTail < Height*0.1 and DnTail > Body*2 and
Height > Ma(Height,10) and C != O Then
buy("a26",OnClose,def,vol);
Else
If (C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2]) and
(C[1] < O[1] and C > O and Highbody[1] < Highbody[2] and Lowbody[1] > Lowbody[2]) and
(L[1] < L[2] or L[1] < Min(L[2],L[3],L[4])) and
(L[1] < O and C[1] > C) Then
buy("a27",OnClose,def,vol);
}
SetStopProfittarget(3,PercentStop);
if CurrentEntries >= 2 Then
exitlong("매도2",atlimit,AvgEntryPrice*1.02);
2013-11-07
200
글번호 69296
답변완료
질문 드립니다.
var : slowK(0), slowD(0), macdV(0), macdS(0), ma1(0), ma2(0);
var : Cond1(False), Cond2(False), Cond3(False), Cond4(False), Cond5(False),
Cond6(False), buyCond(0), bPosition(0);
slowK = stochasticsK(20,12); //stochastics slowK선
slowD = stochasticsD(20,12,12); //stochastics slowD선
macdV = macd(12,26); //macd선
macdS = ema(macdV,9); //macd signal선
ma1 = ma(C,5); //단기이동평균
ma2 = ma(C,20); //장기이동평균
Cond1 = CrossUp(slowK, slowD); //매수조건1
Cond2 = CrossUp(macdV, macdS); //매수조건2
Cond3 = CrossUp(ma1, ma2); //매수조건3
Cond4 = CrossDown(slowK, slowD); //매수청산조건1
Cond5 = CrossDown(macdV, macdS); //매수청산조건2
Cond6 = CrossDown(ma1, ma2); //매수청산조건3
//매수식
if bposition != 1 then Begin
if Cond1 then {
buy();
buyCond = 1;
bposition = 1;
}
if Cond2 then {
buy();
buyCond = 2;
bposition = 1;
}
if Cond3 then {
buy();
buyCond = 3;
bposition = 1;
}
End;
//매수청산식
if buyCond == 1 and Cond4 then {
exitlong();
bPosition = 0;
}
if buyCond == 2 and Cond5 then {
exitlong();
bPosition = 0;
}
if buyCond == 3 and Cond6 then {
exitlong();
bPosition = 0;
}
2013-11-07
172
글번호 69295
답변완료
질문 좀..
.
2013-11-07
187
글번호 69294
zephyr 님에 의해서 삭제되었습니다.
2013-11-07
10
글번호 69293
dltkdal4 님에 의해서 삭제되었습니다.
2013-11-07
4
글번호 69292
답변완료
문의드립니다
전일 거래량이 제일 많이 거래된봉 의 중간값
전일 거래량이 두번째 많이 거래된봉 의 중간값
전일 거래량이 세번째 많이 거래된봉 의 중간값을 당일 표시하고싶습니다
2013-11-06
154
글번호 69290
답변완료
수식문의
1.아래의 수식을가지고(아니면다른수식가능) #틱봉이 만들어지는 시간 계산을 할수있나요 1분안에 봉갯수를 몇개 만든가를 계산수식부탁합니다 틱은100틱사용합니다
input : P1(1),P2(5),P3(20),N(5),X(2000);
var : S1(0),S2(0),stimeTosecond(0),E1(0),E2(0),timeTosecond(0),SecondMakecandle(0);
var : sum(0),vol(0),cnt(0);
#틱봉이 만들어지는 시간 계산
S1 = TimeToMinutes(stime)*60;
S2 = FracPortion(stime/100)*100;//시작시간 초
stimeTosecond = S1+S2;
E1 = TimeToMinutes(time)*60;
E2 = FracPortion(time/100)*100;//긑시간 초
timeTosecond = E1+E2;
SecondMakecandle = timeTosecond-stimeTosecond;
sum = 0;
vol = 0;
for cnt = 0 to 200{
sum = sum + SecondMakecandle[cnt];
if sum <= 300 Then{
vol = vol+V[cnt];
}
//초합계가 300이 넘거나 이전봉의 날짜가 당일이 아니면 for문 중지
if sum > 300 or sdate[cnt] != sdate Then
cnt = 201;
}
2.아래수식에서반등반락시 38.2 위에서는매수 61.8 아래에서는 매도 시스템 수식 바뀌주세요
input:left(5),right(5),구분(1);
var:j(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0),
ovr(0),반등(1),반락(-1);
array:hv[10](0),lv[10](0),hb[10](0),lb[10](0),
r[8](0),fr[8](0);
r[0] = 0;
r[1] = 0.236;
r[2] = 0.382;
r[3] = 0.50;
r[4] = 0.618;
r[5] = 0.764;
r[6] = 1;
r[7] = 1.618;
#==============================================================================#
# 변곡점 계산
#==============================================================================#
//파동선 작성 설명은 자주 했으므로 생략
if highest(h[1],left) <= h then {
prehv = h;
prehb = 0;
}
else
prehb = prehb + 1;
if lowest(l[1],left) >= l then {
prelv = l;
prelb = 0;
}
else
prelb = prelb + 1;
for j = 1 to 9 begin
hb[j] = hb[j] + 1;
lb[j] = lb[j] + 1;
end;
if prehb == right and highest(h,right) <= h[right] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
hv[1] = prehv;
hb[1] = prehb;
if lb[1] > hb[2] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
tmpv = 0;
for j = hb[1] + 1 to hb[2] - 1 {
if tmpv > l[j] or tmpv ==0 then {
tmpv = l[j];
tmpb = j;
}
}
lv[1] = tmpv;
lb[1] = tmpb;
}
}
if prelb == right and lowest(l,right) >= l[right] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
lv[1] = prelv;
lb[1] = prelb;
if hb[1] > lb[2] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
tmpv = 0;
for j = lb[1] + 1 to lb[2] - 1 {
if tmpv < h[j] or tmpv ==0 then {
tmpv = h[j];
tmpb = j;
}
}
hv[1] = tmpv;
hb[1] = tmpb;
}
}
#==============================================================================#
# Fibonacci Retracements 계산
#==============================================================================#
//반등과 반락을 모두 표시하게 되면 복잡해지므로 한 방향만 표시하는 것이 옳음
if 구분 == 반등 then {
if crossup(lb[1],hb[1]) then
{
for j = 0 to 7 begin
fr[j] = hv[1] - (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
if fr[6]>l then ovr = 1;
}
if 구분 == 반락 then {
if crossup(hb[1],lb[1]) then
{
for j = 0 to 7 begin
fr[j] = lv[1] + (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
if fr[6]>l then ovr = 1;
}
#==============================================================================#
# 지표출력
#==============================================================================#
if hb[1]==right then plot1(hv[1],"파동선",GREEN);
if lb[1]==right then plot1(lv[1],"파동선",GREEN);
plot2(fr[0],"0%",BLUE);
plot3(fr[1],"23.6%",RED);
plot4(fr[2],"38.2%",MAGENTA);
plot5(fr[3],"50%",GRAY);
plot6(fr[4],"61.8%",LBLUE);
plot7(fr[5],"76.4%",LGREEN);
plot8(fr[6],"100%",PINK);
if ovr then plot9(fr[7],"161.8%",LMAGENTA); //점 그래프로 표시
2013-11-07
230
글번호 69284