커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7648
글번호 230811
답변완료
초보질문
1. 수고가 많으십니다
2.
앞봉이 음봉이 확정된이후 양봉(돗지포함)이 바로 나와서 아니면 연속해 나와서 앞봉음봉저점에서 2,000원 올라올때 표시하는방법
반대의 경우도
앞봉이 양봉이 확정된이후 음봉(돗지포함)이 바로 나와서 아니면 연속해 나와서 앞봉양봉고점에서 2,000원 내려올때 표시하는방법 검색식 아니면 지표식 부탁합니다
2012-06-06
327
글번호 51708
답변완료
이런 지표가 가능할까요
안녕하세요...
예를 들어 3분봉을 사용할때..현재봉의 시간경과를 나타내는 지표식이 가능한지 궁금합니다.
에를 들어 3분봉이 바뀌고 30초 경과하면 30 60초경과하면 60 , 90초 경과하면 90, 120초 경과하면 120, ...이런식으로 표시할수 있는 지표식이 가능한지 궁금합니다...
감사합니다..
2012-06-06
363
글번호 51707
답변완료
번번이감사합니다
항상 친절한답변에 감사드립니다
1) 프로그램 최적화를 위한 가이드나 팁 또는 참고자료 있으면 부탁드립니다
2) 검색식에서 5일 연속 상승한종목의 앞+1 뒤 +1 총7일의 데이터를
추출하고 싶은데 도와주시면 감사하겠습니다
2-1) 종목검색식에서 위의조건에 만족하는 종목을 월단위로 검색하는 식 도 부탁드립니다
2-2) Ehgks pcdp 추출된자료를 시뮬레이션 할수 있는 방법도 부탁드립니다 -꾸벅
3) 자동거래시 당일의 종합주가가 전일 대비 5% 이상하락하면 진입금지식 부탁드립니다
4) 예스트레이더 프로와 3.1은 어떤차이가 있는지요?
5) 만일 매수종목을 아래와 같이 당일 청산 수식을 막아버리면 어떤경우에 자동청산되는지요 자동청산되지않는다면 기간을 주어서 자동청산하고자 한다면 어덯게 해야합니까?
--------------- 예문 ----------
if MarketPosition == 1 Then {
if MaxContracts == CurrentContracts Then
exitlong("+5%",atlimit,EntryPrice*1.05,"",int(CurrentContracts*0.3),1);
exitlong("bx2",AtStop,highest(H,BarsSinceEntry)*0.85);
}
SetStopLoss(3,PercentStop);
# if STime C >= Dayclose(1)*1.145 Then
# exitlong("상한가");
# SetStopEndofday(144844);
감사합니다
2012-06-06
380
글번호 51706
답변완료
진입 후 손실이면 손절하고 반대방향 매매하려면..
안녕하세요.
선물 분봉에서 090000 시초가로 진입 후에
손실이 0.1p 이상 발생하면 손절하고
반대방향으로 진입을 하려는 데 수식을 어떻게 해야 하나요?
SetStopLoss(0.1, PointStop)를 하면 손절은 되던데 반대 진입이 안되네요.
그리고 수익이 0.1p 이상 나면 최대 수익에서 50% 하락시 익절하는 것은
SetStopTrailing(50, 0.1, PercentStop, 0);
이렇게 하면 안되는 것 같던데..
계산식에서 수익을 point와 % 같이 쓰는 방법은 없나요?
2012-06-06
336
글번호 51705
공기단축 님에 의해서 삭제되었습니다.
2012-06-06
39
글번호 51704
답변완료
거래정지된 날짜 처리방법3
var1 = DayClose(2)*(1.10);
if DayClose(1) > var1 Then // 전전일종가 대비 전일종가가 10%이상 상승했으면
Plot1(2,"10%이상");
Else
Plot2(1,"10%미만");
PlotBaseLine1(0,"기준선");
첨부파일 참고하세요.
5분봉에서 30일기준 전일(5/25)이 상한가이기 때문에 빨강(2) 그래프로 그려져야 하나 파랑(1)그래프로 그려집니다.
일봉에서 5/25, 거래정지일(5/29), 5/30순으로 거래정지일이 포함되기 때문이라고 생각합니다.
버그로 생각해야 될지는 모르겠으나 수정이 필요하다고 봅니다.
=====================================================================
안녕하세요
예스스탁입니다.
죄송합니다. 설명을 잘못드렸습니다.
일봉차트는 거래없는 구간 봉그리기 설정에 관계없이
모두 거래없는 구간의 봉을 그리게 됩니다.
분봉에서는 체계적으로 거래가 없는 날짜는
표시를 아예 못하게 되어 있어 수식상에서는 처리가 가능하지 않거
해당 체계는 변경되지 않습니다.
즐거운 하루되세요
> 행복충전 님이 쓴 글입니다.
> 제목 : 거래정지된 날짜 처리방법 재질문
> 일봉, 분봉 모두 "거래 없는 구간 봉 그리기"에 체크 안했습니다.
첨부파일 보면 일봉에는 거래정지된 날(5월 29일)이 표시 되는데, 5분봉에는 5월 29일이 없습니다.
일봉과 분봉에 같이 표시되거나 같이 표시가 안되어야 할것 같은데 해결책이 있나요?
=====================================================================
거래가 없는 날(거래정지등 거래가 없는 날)은 설정에서
거래가없는 구간 봉그리기를 하면 일봉에서는 나타나지만
분봉에서는 나타나지 않아
해당 부분 분봉에서 따로 처리를 할 수 없습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 행복충전 님이 쓴 글입니다.
> 제목 : 거래정지된 날짜 처리방법
> 거래정지된 날짜가 일봉에는 표시가 되는데, 분봉에는 표시가 안됩니다.
그래서 dayclose(1) 같은 함수를 사용하면 엉뚱한 결과가 나옵니다.
해결방법이 있나요?
2012-06-06
347
글번호 51703
답변완료
진입제한
안녕하세요. 언제나 빠른 답변 감사합니다.
아래의 식은 "연결선물 주봉"을 기준으로한 피라미딩 시스템입니다.
buy1, buy2, buy3가 분할진입하고, buy2, buy3만 이익청산합니다.
마찬가지로 sell1, sell2, sell3가 분할진입하고, sell2, sell3만 이익청산합니다.
그런데, buy2, buy3가 이익청산되고, buy1만 남아있을때, buy2가 계속해서
반복진입하는 오류가 발생합니다.
마찬가지로 sell2, sell3가 이익청산되고, sell1만 남아있을때, sell2가 반복진입되는 오류가 생깁니다.( 참고 그림파일 2개 첨부합니다.)
이익청산후 반복진입되는 오류를 수정부탁드립니다.
미리 감사드립니다.
----------------------------------------------------------------------------------
[ 연결선물 주봉 시스템]
Input: FastLen(1), SlowLen(35), ChLen(300), TrailBar(30);
Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999);
FastMA = ma(C , FastLen );
SlowMA = ma(C , SlowLen );
If CrossUp(FastMA , SlowMA) and index > 1 then {
LEntryPrice = Highest(H , TrailBar )[1];
LCount = index;
}
If MarketPosition <> 1 AND index < LCount + ChLen then
Buy("Buy1", atstop,LEntryPrice,1);
If MarketPosition == 1 and CurrentEntries == 1 Then
buy("Buy2",AtStop,EntryPrice+1,1);
If MarketPosition == 1 and CurrentEntries == 2 Then
buy("Buy3",AtStop,EntryPrice+2,1);
If CrossDown(FastMA , SlowMA) and index > 1 then {
SEntryPrice = Lowest(L , TrailBar )[1];
SCount = index;
}
If MarketPosition <> -1 AND index < SCount + ChLen then
Sell ("Sell1", atstop,SEntryPrice,1);
If MarketPosition == -1 and CurrentEntries == 1 Then
sell("Sell2",AtStop,EntryPrice-1,1);
If MarketPosition == -1 and CurrentEntries == 2 Then
sell("Sell3",AtStop,EntryPrice-2,1);
If MarketPosition == 1 then {
LCount = -999;
ExitLong("LongTStop_1", atstop, Lowest(L , TrailBar ),"Buy1",1,1);
ExitLong("LongTStop_2", atstop, Lowest(L , TrailBar ),"Buy2",1,1);
ExitLong("LongTStop_3", atstop, Lowest(L , TrailBar ),"Buy3",1,1);
}
If MarketPosition == -1 then {
SCount = -999;
ExitShort("ShortTStop_1", atstop, Highest(H , TrailBar),"Sell1",1,1);
ExitShort("ShortTStop_2", atstop, Highest(H , TrailBar),"Sell2",1,1);
ExitShort("ShortTStop_3", atstop, Highest(H , TrailBar),"Sell3",1,1);
}
if MarketPosition == 1 Then{
exitlong("bloss1",AtStop,EntryPrice-20,"buy1",1,1);
exitlong("bloss2",AtStop,EntryPrice-20,"buy2",1,1);
exitlong("bloss3",AtStop,EntryPrice-20,"buy3",1,1);
exitlong("bProfit2",atlimit,EntryPrice+50,"buy2",1,1);
exitlong("bProfit3",atlimit,EntryPrice+80,"buy3",1,1);
}
if MarketPosition == -1 Then{
ExitShort("sLoss1",AtStop,EntryPrice+20,"sell1",1,1);
ExitShort("sLoss2",AtStop,EntryPrice+20,"sell2",1,1);
ExitShort("sLoss3",AtStop,EntryPrice+20,"sell3",1,1);
ExitShort("sProfit2",atlimit,EntryPrice-30,"sell2",1,1);
ExitShort("sProfit3",atlimit,EntryPrice-50,"sell3",1,1);
}
2012-06-05
406
글번호 51702
답변완료
체결량
수고가많으십니다.시스템쌩초보라 공부할겸 게시판질문들을 다읽어보고 있습니다.
upticks, downticks, upvol, DownVol ......
이런걸로 매수와 매도체결량을 구분해서 표시할수 있다는데
저도 예전에 (큰손차트) 란걸 본적도 있고요.
수식을 몰라서 똑같이는 못만든다하니, 같은계념으로 비슷하게라도 해볼려합니다.
헌데 너무 초보이다보니 하나도 모르겠네요.
macd 오실레이터처럼 기준선 위아래로 등락하는 막대그래프를 만들려고 합니다
(매수량 - 매도량) 이 0보다 크면 큰만큼 위로 빨갛게 막대로....뭐 이런거??
저랑비슷한 질문을 하신분이 계시던데 답변에 위의함수들로 비슷하게
구현이 가능하다고만 써주셧더라고요. 캡쳐했습니다.
수식 자체를 좀 써주시면 감사하겠습니다. 복사해서 붙여라도 넣게... ^^;;
2012-06-05
639
글번호 51701
답변완료
시스템식 수정 부탁드립니다
input: 전환가격(300);
var: j(0), 꺾은선(0), 기준고(0), 기준저(0), 방향(0), 상승(100), 하락(-100), 색깔(0), 파랑(-1), 빨강(1), 전환(0),
확인(0), 확인표시(0), 전환표시(0), 천장(-10), 바닥(10), E(0), UB(0), E표시(0), UB표시(0), 대중소(0), 소중대(0),
대중소색깔(0), 진입(0), 청산(0), a25(0), a40(0), a50(0), a60(0), a75(0), b(0), 상상(0), 상(0), 중(0), 하(0), 하하(0), 등락폭(0),
w(0), w표시(0), 주기준고(0), 주기준저(0), 주색깔(0), 매수마크(0), 매도마크(0);
Array: 고[10](0), 저[10](0), wo[10](0), wh[10](0), wl[10](0), wc[10](0), 주방향[2](0), 주고[2](0), 주저[2](0);
E표시 = 0;
UB표시 = 0;
w표시 = 0;
전환표시 = 0;
확인표시 = 0;
대중소 = 0;
소중대 = 0;
진입 = 0;
청산 = 0;
매수마크 = 0;
매도마크 = 0;
if date[1] < date and dayofweek(date[1]) >= dayofweek(date) then {
if 주기준고 <= wc[0] or 주기준고 == 0 then 주기준고 = wc[0];
if 주기준저 >= wc[0] or 주기준저 == 0 then 주기준저 = wc[0];
주방향[1] = 주방향[0];
if 주기준저[1] + 전환가격 > wc[1] and 주기준저[1] + 전환가격 <= wc[0] Then
주방향[0] = 상승;
if 주기준고[1] - 전환가격 < wc[1] and 주기준고[1] - 전환가격 >= wc[0] Then
주방향[0] = 하락;
if 주방향[0] == 상승 and 주고[0] < wc[0] then 주색깔 = 빨강;
if 주방향[0] == 하락 and 주저[0] > wc[0] then 주색깔 = 파랑;
if 주방향[1] == 하락 and 주방향[0] == 상승 then {
주저[1] = 주저[0];
주저[0] = 주기준저;
주기준저 = wc[0];
주기준고 = wc[0];
if 주저[1] > 주저[0] then 주색깔 = 파랑;
}
if 주방향[1] == 상승 and 주방향[0] == 하락 then {
주고[1] = 주고[0];
주고[0] = 주기준고;
주기준저 = wc[0];
주기준고 = wc[0];
if 주고[1] < 주고[0] then 주색깔 = 빨강;
}
w = 주방향[0];
for j = 8 downto 0 {
wo[j+1] = wo[j];
wh[j+1] = wh[j];
wl[j+1] = wl[j];
wc[j+1] = wc[j];
}
wo[0] = o;
wh[0] = h;
wl[0] = l;
}
if wh[0] < h then wh[0] = h;
if wl[0] > L or wl[0] == o then wl[0] = l;
wc[0] = c;
if 기준고 <=C or 기준고 == 0 then 기준고 =c;
if 기준저 >=C or 기준저 == 0 then 기준저 =c;
if C[1] + 전환가격/3 <= C then E = 상승;
if C[1] - 전환가격/3 >= C then E = 하락;
if ma(v,40)/2.5 >= v then ub = 바닥;
if ma(v,40)*2.5 <= v then ub = 천장;
if 기준저[1] + 전환가격 > c[1] and 기준저[1] + 전환가격 <=c then 방향 = 상승;
if 기준고[1] - 전환가격 < c[1] and 기준고[1] - 전환가격 >= c then 방향 = 하락;
if 방향[1] == 하락 and 방향 == 상승 then {
for j = 8 downto 0 {
저[j+1] = 저[j];
}
저[0] = 기준저;
꺾은선 = 기준저;
기준저 = c;
기준고 = c;
if E == 상승 then {E표시 = 꺾은선 - 전환가격;
매수마크 = 매수마크 + 1;
}
if UB == 바닥 then {UB표시 = 꺾은선 - 2*전환가격;
매수마크 = 매수마크 + 1;
}
if w == 상승 then {
w표시 = 꺾은선 - 3*전환가격;
매수마크 = 매수마크 + 1;
}
E = 0;
UB = 0;
w = 0;
if 저[1] > 저[0] then 색깔 = 파랑;
if 색깔[1] !=색깔 and 고[1] < 고[0] and 저[1] > 저[0] then 확인 = 0;
if 저[1] < 저[0] then {
if 저[2] >= 저[1] then 확인 = 바닥;
else 확인 = 0;
}
if 확인 == 바닥 and 확인[1] < 확인 then 확인표시 = 꺾은선 -4*전환가격;
if 색깔[1] !=색깔 then 전환 = 0;
if 저[1] < 저[0] and 고[1] < 고[0] then 전환 = 상승;
if 전환 == 상승 and 전환[1] < 전환 then {
전환표시 = 꺾은선 - 5*전환가격;
진입 = 1;
}
if 고[1]-저[1] > 고[0]-저[1] and 고[0]-저[1] > 고[0]-저[0] then {
대중소 = 꺾은선 - 6*전환가격;
대중소색깔 = 빨강;
}
if 고[1]-저[1] < 고[0]-저[1] and 고[0]-저[1] < 고[0]-저[0] then {
소중대 = 꺾은선 -6*전환가격;
대중소색깔 = 파랑;
}
}
a75 = ((고[0]-저[1])-(고[0]-저[0])*0.25)/((고[0]-저[1])+(고[0]-저[0])*0.25);
a60 = ((고[0]-저[1])-(고[0]-저[0])*0.4)/((고[0]-저[1])+(고[0]-저[0])*0.4);
a50 = ((고[0]-저[1])-(고[0]-저[0])*0.5)/((고[0]-저[1])+(고[0]-저[0])*0.5);
a40 = ((고[0]-저[1])-(고[0]-저[0])*0.6)/((고[0]-저[1])+(고[0]-저[0])*0.6);
a25 = ((고[0]-저[1])-(고[0]-저[0])*0.75)/((고[0]-저[1])+(고[0]-저[0])*0.75);
b = 저[1]-(고[0]-저[0])*2;
상상 = (저[1]-a75+b)/(1-a75);
상 = (저[1]-a60+b)/(1-a60);
중 = (저[1]-a50+b)/(1-a50);
하 = (저[1]-a40+b)/(1-a40);
하하 = (저[1]-a25+b)/(1-a25);
if 등락폭[1] == -1 or 등락폭[1] == -2 Then
매수마크 = 매수마크 + 1;
if 방향[1] == 상승 and 방향 == 하락 then {
for j = 8 downto 0 {
고[j+1] = 고[j];
}
고[0] = 기준고;
꺾은선 = 기준고;
기준고 = c;
기준저 = c;
if E == 하락 then {E표시 = 꺾은선 + 전환가격;
매도마크 = 매도마크 + 1;}
if UB == 천장 then { UB표시 = 꺾은선 + 2*전환가격;
매도마크 = 매도마크 +1;}
if w == 하락 then {w표시 = 꺾은선 +3*전환가격;
매도마크 = 매도마크 +1;}
E = 0;
UB = 0;
W = 0;
if 고[1] < 고[0] then 색깔 = 빨강;
if 색깔[1] !=색깔 and 고[1] < 고[0] and 저[1] > 저[0] then 확인 = 0;
if 고[1] > 고[0] then {
if 고[2] <= 고[1] then 확인 = 천장;
else 확인 = 0;
}
if 확인 == 천장 and 확인[1] > 확인 then 확인표시 = 꺾은선 + 4*전환가격;
if 색깔[1] !=색깔 then 전환 = 0;
if 고[1] > 고[0] and 저[1] > 저[0] then 전환=하락;
if 전환 == 하락 and 전환[1] > 전환 then 전환표시 = 꺾은선 + 5*전환가격;
if 고[1]-저[1] > 고[1]-저[0] and 고[1]-저[0] > 고[0]-저[0] then {
대중소 = 꺾은선 + 5*전환가격;
대중소색깔 = 파랑;
청산 = 1;
}
if 고[1]-저[1] < 고[1]-저[0] and 고[1]-저[0] < 고[0]-저[0] then {
소중대 = 꺾은선 + 5*전환가격;
대중소색깔 = 빨강;
}
if 고[2]-저[1] < 고[1]-저[1] and 고[1]-저[1] < 고[1]-저[0] then 청산 = 2;
}
a25 = (-(고[1]-저[0])+(고[0]-저[0])*0.75)/((고[1]-저[0])+(고[0]-저[0])*0.75);
a40 = (-(고[1]-저[0])+(고[0]-저[0])*0.6)/((고[1]-저[0])+(고[0]-저[0])*0.6);
a50 = (-(고[1]-저[0])+(고[0]-저[0])*0.5)/((고[1]-저[0])+(고[0]-저[0])*0.5);
a60 = (-(고[1]-저[0])+(고[0]-저[0])*0.4)/((고[1]-저[0])+(고[0]-저[0])*0.4);
a75 = (-(고[1]-저[0])+(고[0]-저[0])*0.25)/((고[1]-저[0])+(고[0]-저[0])*0.25);
b = 고[1] + (고[0]-저[0])+2;
상상 = (고[1]+a25+b)/(1+a25);
상 = (고[1]+a40+b)/(1+a40);
중 = (고[1]+a50+b)/(1+a50);
하 = (고[1]+a60+b)/(1+a60);
하하 = (고[1]+a75+b)/(1+a75);
if 등락폭[1] == 0 or 등락폭[1] == 1 or 등락폭[1] ==2 Then
매도마크 = 매도마크 + 1;
if iff(방향=상승, 기준고, 기준저) >= (상상+상)/2 then 등락폭 = 2;
else if iff(방향=상승, 기준고, 기준저) >= (상+중)/2 then 등락폭 = 1;
else if iff(방향=상승, 기준고, 기준저) > (중+하)/2 then 등락폭 = 0;
else if iff(방향=상승, 기준고, 기준저) > (하+하하)/2 then 등락폭 = -1;
else 등락폭 = -2;
if MarketPosition()==0 then {
if 진입 == 1 then buy("눌림목매수");
}
if MarketPosition() == 1 then {
if 청산 == 1 then ExitLong("대중소");
if 청산 == 2 then ExitLong("소중대");
if 저[0] > C then ExitLong("손절매");
if 고[1]>고[0] then ExitLong("전고점갱신실패");
if 매도마크 >= 3 then exitlong("매도마크");
}
----------------------------------------------------------
매수신호가 발생하질않네요 어디가 문제일까요
손봐주시면 감사하겠습니다
고생하십시요
2012-06-05
401
글번호 51699