커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7223
글번호 230811
답변완료
수식수정 부탁드립니다.
아래의 그림에서 1차매수후 TR-Stop으로 손절을 당한 후 다시 1차매수가 되고 있는데
제가 원하는 것은 1차매수후 TR-Stop으로 손절을 당했다면 그 다음에는 BuySetup2 조건이 만족되었을 때 2차매수하는 것입니다. 수식 수정 부탁드립니다.
input : 셋업일(20170717),시작시간(090000),매수시간(150000),매수시간2(150000),종료일(20181231),P(20),Period3(14),dv(2),sto1(25),sto2(6),sto3(6),MAP(5),N(21),
금액1(1000000),금액2(2000000),목표수익1(1.024),목표수익2(1.024),절반매도(1.10),목표가(1000000),진입가격대비하락(0.97),손절가(100),스탑로스(6),TR스탑(0.95),밴드하단보정(1.03), RS과매수수준(60), RS과매도수준(40),고점대비하락(0.94);
var : BBup(0),BBdn(0),BBMid(0),stok(0),stoD(0),RS(0),BuySetup(true),BuySetup2(true),BuySetup3(true),ExitSetup1(false),Xcond(false),mav(0),Dncnt(0),BuySetupindex(0);
# 5일 이평선
mav = ma(C,MAP);
# RSI
RS = RSI(Period3);
# 볼린져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 스톡케스틱
stok = StochasticsK(sto1,sto2);
Stod = StochasticsD(sto1,sto2,sto3);
# 1차 매수조건
if TotalTrades > TotalTrades[1] Then
BuySetup = false;
if MaxEntries== 1 Then{
BuySetup = false;
}
if MarketPosition == 0 and (RS <RS과매도수준) and C< BBdn and (sDate >= 셋업일) and (sTime <= 매수시간) and L <= highest(H,50)*고점대비하락 Then{
BuySetup = true;
}
if MarketPosition == 0 and BuySetup == true and C > O and (sTime >= 시작시간) and (sTime <= 매수시간) Then
buy("1차매수",OnClose,def,Floor(금액1/C));
# 2차 매수 조건
# 1차매수가 되어 있다면 BuySetup2 = false
if MarketPosition== 1 Then{
BuySetup2 = false;
}
# 1차매수가 TR-Stop 손절을 당한 후 1차매수가 대비 00% 하락시 2차매수
if MarketPosition == 0 and
MarketPosition(1) == 1 and
IsEntryName("1차매수",1) == true and
IsExitName("TR-Stop",1) == true Then
BuySetup2 = true;
if BuySetup2 == true and C > mav and (sTime >= 시작시간) and (sTime <= 매수시간2) and C < (EntryPrice(1)*0.975) and MarketPosition == 0 Then
buy("2차매수",OnClose,def,Floor(금액2/C));
#매 도 전 략
#[ 목표수익 ]
# 1차 매수중인 경우
if MaxEntries == 1 and
IsEntryName("1차매수",1) == true Then
ExitLong("목표수익1",Atlimit,EntryPrice*목표수익1);
# 2차 매수중인 경우
if MaxEntries == 1 and
IsEntryName("2차매수",1) == true Then
ExitLong("목표수익2",Atlimit,EntryPrice*목표수익2);
# 손절전략============
# 1차 매수물량 손절 전략
# 이전 50개 캔들중에서 최저점 이탈시 매도 (5분봉은 제외)
if MarketPosition == 1 Then
{
if IsEntryName("1차매수") == true and c < lowest(L,50)[BarsSinceEntry] Then
ExitLong("전저점 이탈");
}
# 2차 매수물량 손절 전략
#2차매수후 2차 매수가의 2% 하락하면 전량청산
if MarketPosition == 1 and
IsEntryName("1차매수",1) == true and
IsExitName("전저점 이탈",1) == true Then
ExitLong("2차손절",AtStop,EntryPrice*0.97);
SetStopEndofday(153000);
if MarketPosition == 1 Then{
ExitLong("TR-Stop",AtStop,highest(H,BarsSinceEntry)*TR스탑);
}
Else{
ExitSetup1 = false;
}
2018-10-29
235
글번호 123185
답변완료
이격도16
안녕하세요 관리자님!!
어제보내주신 지표를 깔아봤더니 잘 표현이 안됩니다.
바쁘시더라도 다시한번 작성부탁드립니다.
아래지표는 오늘시가에서 시작되는 이격도와 -(전일시가)에서 시작되는 이격도를 표현한것입니다. 근데 -(전일시가)를 적용했기 때문에 접점이 발생합니다.
이 접점을 이격도내에서 수평선으로 표현하고 싶습니다. 도와주십시요
- 아 래 -
var1 = dayopen;
value1 = C/var1*100-100;
Var2 = dayopen(1);
value2 = -(C/var2*100-100);
plot1(value1,"오늘주가");
plot2(Value8,"-전일주가");
plot3(0,"중심선");
2018-10-29
206
글번호 123184
답변완료
현물관련 수식문의 드립니다.
현물관련 검증좀 해보고 싶어서 문의 드립니다.
기간- 과거 400거래일
기준분봉 3분봉
신용융자 가능한 abcd군중에서
매일 첫 3분봉 종가가 시가보도 높고(양봉마감)
거래대금은 10억이상
거래량은 과거 10일이전의 동시간대(종가기준 3분봉) 평균거래량의 2배이상일때.
3분봉 완성후 진입.
익절 3%
손절 3%
익절 손절이 11시까지 이뤄지지 않았을경우 11시03분에 강제청산.
즉 조건이 성립되면 매일 3분봉 완성후 진입 청산관 손절
했을때 비교분석을 하고 싶어서요.
혹시 진입했던 종목과 진입지점을 별도로 볼수있을까요??
부탁드리겠습니다.
감사합니다.
2018-10-29
200
글번호 123183
답변완료
분할매수 매도 질문
안녕하세요.
분할매수매도 시뮬레이션하고싶은데 잘 안되네요.
주식을 사고팔고 하고싶은데 시스템성능보고서 거래내역보면
선물을 사고팔았는지 매수청산에 exitlong 이런거만 나옵니다.
차트는 kodex200으로 했어요.
input : p1(5), p2(10), p3(20), p4(60);
if CodeCategory == 1 Then{
If CrossUp( c , ma(c,p1) ) Then buy("5b" , OnClose , def, 100);
If CrossUp( c , ma(c,p2) ) Then buy("10b" , OnClose , def , 100);
If CrossUp( c , ma(c,p3) ) Then buy("20b" , OnClose , def, 100);
If CrossUp( c , ma(c,p4) ) Then buy("60b" , OnClose , def , 100);
if CrossDown( c , ma(c,p1) ) Then sell("5s" , OnClose , def , 100);
if CrossDown( c , ma(c,p2) ) Then sell("10s", OnClose , def , 100);
if CrossDown( c , ma(c,p3) ) Then sell("20s" , OnClose , def , 100);
if CrossDown( c , ma(c,p4) ) Then sell("60s" , OnClose , def , 100);
}
주식으로 주문하려면 어떻게 해야되죠?
예문 부탁드립니다.
2018-10-29
229
글번호 123182
답변완료
안녕하세요
반갑습니다
아래지표에서
1.과거10 개 당겨보기
2.내용면에서 종가기준으로 price channel과같은 지표
(1.2번) 가능하면 부부탁합니다
INPUT : LENGTH(10);
VAR : TCHAN(0), BCHAN(0);
TCHAN = HIGHEST(HIGH, LENGTH)[1];
BCHAN = LOWEST(LOW, LENGTH)[1];
PLOT1(TCHAN, "TOP");
PLOT2(BCHAN, "BOT");
감사합니다.
2018-10-30
207
글번호 123179
답변완료
수정
59834번 macd 변수값 순번대로 수정부탁드립니다
2018-10-29
165
글번호 123178
답변완료
부탁 드립니다.
타주기(분용) 수식 부탁 드립니다.
input : P1(20);
var : LT(0),HT(0),BOX1(false),TOP2(0),idx(0);
LT=LOWEST(L,P1);
HT=HIGHEST(H,P1);
BOX1 = Lowest(L,P1-2) > Lowest(L,P1-1);
if L < LT[1] Then
idx = 0;
Else
idx = idx+1;
if idx == P1-2 and Box1 == true then
TOP2 = HT;
참고수식)
/*
var1=LOWEST(L,P1);
var2=HIGHEST(H,P1);
*/
//타주기 분용 수식
input : 타주기분(60),P1(10);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),Hv(0),Lv(0);
Array : HH[100](0),LL[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 99
{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[P1-1] > 0 and LL[P1-1] > 0 then
{
Hv = HH[0];
Lv = LL[0];
for cnt = 0 to P1-1
{
if HH[cnt] > Hv Then
Hv = HH[cnt];
if LL[cnt] < Lv Then
Lv = LL[cnt];
}
plot1(Hv);
plot2(Lv);
}
}
2018-10-29
198
글번호 123177
답변완료
수식 해석 부탁드립니다.
답변받은 검색식입니다.
이후 나름 열심히 찾아보고 궁리해보고 해도 도저히 독해가 제대로 안되
염치불구하고 다시 한번 부탁드립니다.
옆에 주석을 달아 봤습니다.
어디가 왜 틀렸는지 자세한 도움말 부탁드립니다.
그리고 처음 수식문의를 할 때 <"최근 양봉나온날" 동시간대 대비> 였는데
아래 수식은 "전일 양봉이라면" 이라고 되있는것 같은데
그 부분도 설명부탁드립니다.
input : Per(150);
var: cnt(0),VV(0);
if sdate != sdate[1] then #봉의 시작날짜가 변경되면
{
value1 = index; #날짜가 바뀐후 첫봉번호를 value1에 저장
value2 = value1[1]; #날짜변경전날의 마지막봉번호(??)
if DayClose(1) > dayopen(1) Then #전일이 양봉이면
{
var1 = value2; #날짜변경전날의 마지막봉번호를 var1에 저장
var2 = index[1]; #??? indax[1]이 어떤봉번호를 가리키는지..
}
}
if var1 > 0 and var2 > 0 then #var1,var2 만약 어떤 봉번호라면 0보다 같거나
작은 경우가 있을수 있습니까? 결국 앞의 제 주석이
틀린것 같은데...
이후는 따라서 독해가 불가했습니다.
{
for cnt = index-var2 to index-var1
{
if stime[cnt] <= stime Then
{
VV = DayVolume[cnt];
cnt = index-var1+1;
}
}
if DayVolume >= VV*(1+Per/100) Then
find(1);
}
2018-10-29
249
글번호 123171
답변완료
문의드립니다
input : startTime(090000), endTime(092959);
if stime >= 093000 and stime < 1520000 then {
if crossUp(C, TimeHigh(startTime, endTime)) Then
buy();
if crossDown(C, TimeLow(startTime, endTime)) Then
sell();
}
SetStopLoss(3, PointStop);
SetStopEndofday(152000);
수식해석 부탁드리고 마지막에 SetStopEndofday 15시20분에 당일청산 한다고 했는데
15시20분에 청산이 이루어지지 않았습니다. 왜 차트에만 표시가 되고 실제 거래가 이루어지지 않았는지 이유가 궁금합니다
2018-10-29
166
글번호 123163