커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8178
글번호 230811
답변완료
시스템문의드립니다
atlimit와 atstop는 어떠한 경우에 사용되는 함수입니까
pricescale은 지표수식에서는 사용을 할 수 없습니까?
어떨때 사용하는지 궁금합니다.
청산할때 exitlong,exitshort,marketposition가운데 청산하고 바로 스위칭하거나
재진입할 수 있는 수식은 어떻게 작성해야 하나요?
예를들어
진입조건2가지: 5일이평선과 20일이평선 골든크로스
골든크로스 이후 다음봉(1.음봉양봉상관없음)에 매수
다음봉(2.음봉)에 매수
청산조건: 매수후 0.5p 상승하면 청산
재진입조건2가지 : 1.청산후 바로 재매수진입
2.청산후 5일이평선을 데드크로스할때 재매수진입
위 내용을 수식으로 작성하려면 어떻게 해야하는지 궁금합니다
var5 = Highest(H, BarsinceEntry+1);
Exitlong("청산", Atstop, Var5-ATR(20)*5);
위 청산식은 어떤의미인지 궁금합니다. 만약 위 청산식 다음에 바로 재진입(매수나매도)
하려면 어떻게 해야할까요?
2015-05-29
218
글번호 86551
답변완료
수식 문의 드립니다.
GetUnclearedDeposits("3324-3547-31")
GetUnclearedDeposits("3324354731")
위 함수에서 계좌번호를 넣을때 " - " 를 넣어야되나요,
아니면 숫자만 넣어야 되나요 ?
2015-05-29
188
글번호 86550
답변완료
로직 문의
삼성전자 200 tic으로 주식선물 중입니다.
봉 2개의 종가가 연속으로 상승하면 매수를
연속으로 하락하면 매도를 하게끔
신규시스템을 작성하여 사용중입니다.(if c>c1 and c1>c2 then buy 형식)
그런데, 봉 2개의 종가가 연속하락 하는 경우에,
첫째봉이 상승봉(빨간색봉), 둘째봉이 하락봉(파란색봉)인 경우도
매도주문이 나갑니다. 봉 2개가 둘다 같은 봉(파란색봉)인 경우만
매도 나가게 보완할수 있나요? (위 로직에 봉 색깔 변수를 추가하고 싶읍니다)
즉, 연이는 봉 2개가 같은 종류인 경우만 주문되게 말입니다.
( ==> 매수는 봉2개 종가 연속 상승하면서 둘다 빨간색 봉일때만,
매도는 봉2개 종가 연속 하락하면서 둘다 파란색 봉일때만)
주)그런데, 이 경우에 십자봉(시가와 종가가 같은봉)은 어떻게 처리되나요?
그리고, 한가지더 부탁합니다.
매수 주문 경우에, 2개의 봉이 연속하여 종가 상승하지 않더라도,
빨간색 봉이 연달아 2개 나오고, 두번째 봉의 종가가 첫째봉 대비 상승한다면,
상승장으로 봐서 매수 주문 바로 나오게 할수 있나요?
예) 첫째봉이 파란봉이고, 둘째봉, 세째봉이 빨간봉인데, 둘째봉 종가가 첫째봉 종가 대비 오히려 하락한 경우에, 셋째봉 종가가 둘째봉 대비 상승하면, 셋째봉에서 매수주문 바로 나오게 하고 싶습니다.
반대의 경우 (매도 주문)도 부탁합니다.
2015-05-29
203
글번호 86549
bbcc 님에 의해서 삭제되었습니다.
2015-05-29
0
글번호 86540
답변완료
문의드립니다
일봉의 블린저밴드의 상한선 중심선 하한선을 분봉에 볼수 있게 부탁드립니다
일봉의 일목균형표의 기준선과 전환선 후행스팬선 선행스팬1,2를 분봉에서 볼수 있게 부탁드립니다
2015-05-29
180
글번호 86539
Solomon 님에 의해서 삭제되었습니다.
2015-05-29
0
글번호 86528
Solomon 님에 의해서 삭제되었습니다.
2015-05-29
7
글번호 86527
답변완료
함수 검수 요청
안녕하세요?
한투예스로 모의투자와 실전투자를 동시에 진행하고 있습니다.
장마감 전(오전 6시 15분)까지 청산을 하고자 수식을 넣었는데, 첨부와같이 장마감이 되었습니다.
1. 금일 아침에 개장해서보니, 모의투자 및 실전투자 모두에서 #3010 전략실행차트에서는 전일 마지막 거래내역 및 신호가 사라졌습니다.
2. 그런데 예스가 아닌 한투HTS에는 모의투자와 실계좌 무두 거래내역 및 포지션이 살아 있습니다. 물론 청산은 안되어 미결제약정으로 남아있구요
아래의 함수에서 당일청산이 안된이유가 무엇이며, 신호는 왜 사라졌으며, 다음에 어떤 신호(매수, 또는 매수청산)에 따라 기존 매수 포지션은 어떻게 처리 되나요?
적용한 함수는 다음과 같습니다.
상품은 CLN15입니다.
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
2015-05-29
201
글번호 86525
답변완료
시스템 부탁드립니다.
안녕하세요...
수고 많으십니다...
두가지 질문이 있습니다.
첫번째 : 그림1에서
(1)추세선을돌파할 때 신호가 나오게 하고 싶습니다.
상승하던 캔들이 N자 파동을 그리고 상승하다가 상승추세선을 이탈할때 매도신호
반대로 하락하던 캔들이 N자 파동을 그리고 하락하다가 하락추세선을 돌파할때 매수신호
(2)또한 추세선을 자동으로 그려지게 할 수도 있나요?
추세선이 그려질 수 있다면 수식으로 부탁드립니다.
두번째: 그림2에서
(1)지그재그 파동을 그려놓은 차트입니다
초록색으로 지그재그 파동이 그려지면
첫번째 그림1에서 말씀드렸던 것처럼
지그재그 파동을 이용해서 지그재그 파동이 최소한 두번이상 그려지고 추세선을 돌파할때 매수신호
또 반대로는 추세선을 이탈할때는 매도신호가 나오게 할 수 있나요?
(2)또한 위와 마찬가지로 추세선을 자동으로 그려지게 할 수 도 있나요?
지그재그파동 수식은 아래와 같습니다.
Input:length(12),per1(23.6),per2(38.2),per3(50.0),per4(76.4);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),diff(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,4);
TL_SetColor(TL1,GREEN);
if turnPntArr[1] != turnPntArr[1][1] and barArr[3] > 0 Then{
if turnPntArr[2] == "Hi" then{
value1 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[3]],sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]);
value2 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]],sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]);
diff = abs(L[barArr[3]]-H[barArr[4]]);
value3 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per1/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per1/100));
value4 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per2/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per2/100));
value5 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per3/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per3/100));
value6 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per4/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per4/100));
TL_SetColor(value1,blue);
TL_SetColor(value2,blue);
TL_SetColor(value3,blue);
TL_SetColor(value4,blue);
TL_SetColor(value5,blue);
TL_SetColor(value6,blue);
}
Else{
value1 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[3]],sdate[barArr[2]],stime[barArr[2]],H[barArr[3]]);
value2 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]],sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]);
diff = abs(L[barArr[4]]-H[barArr[3]]);
value3 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per1/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per1/100));
value4 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per2/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per2/100));
value5 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per3/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per3/100));
value6 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per4/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per4/100));
TL_SetColor(value1,RED);
TL_SetColor(value2,red);
TL_SetColor(value3,RED);
TL_SetColor(value4,red);
TL_SetColor(value5,RED);
TL_SetColor(value6,red);
}
}
TL_Delete(value11);
TL_Delete(value12);
TL_Delete(value13);
TL_Delete(value14);
TL_Delete(value15);
TL_Delete(value16);
TL_Delete(value21);
TL_Delete(value22);
TL_Delete(value23);
TL_Delete(value24);
TL_Delete(value25);
TL_Delete(value26);
if turnPntArr[1] == "Hi" then{
value11 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]],sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]);
value12 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]],sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]);
diff = abs(L[barArr[3]]-H[barArr[2]]);
value13 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per1/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per1/100));
value14 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per2/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per2/100));
value15 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per3/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per3/100));
value16 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per4/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per4/100));
TL_SetColor(value11,blue);
TL_SetColor(value12,blue);
TL_SetColor(value13,blue);
TL_SetColor(value14,blue);
TL_SetColor(value15,blue);
TL_SetColor(value16,blue);
value21 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[1]],sdate,stime,H[barArr[1]]);
value22 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]],sdate,stime,L[barArr[2]]);
diff = abs(L[barArr[2]]-H[barArr[1]]);
value23 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per1/100),sdate,stime,L[barArr[2]]+diff*(per1/100));
value24 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per2/100),sdate,stime,L[barArr[2]]+diff*(per2/100));
value25 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per3/100),sdate,stime,L[barArr[2]]+diff*(per3/100));
value26 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per4/100),sdate,stime,L[barArr[2]]+diff*(per4/100));
TL_SetColor(value21,RED);
TL_SetColor(value22,red);
TL_SetColor(value23,RED);
TL_SetColor(value24,red);
TL_SetColor(value25,RED);
TL_SetColor(value26,red);
}
Else{
value11 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]],sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]);
value12 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]],sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]);
diff = abs(L[barArr[3]]-H[barArr[2]]);
value13 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per1/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per1/100));
value14 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per2/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per2/100));
value15 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per3/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per3/100));
value16 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per4/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per4/100));
TL_SetColor(value11,RED);
TL_SetColor(value12,red);
TL_SetColor(value13,RED);
TL_SetColor(value14,red);
TL_SetColor(value15,RED);
TL_SetColor(value16,red);
value21 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[1]],sdate,stime,L[barArr[1]]);
value22 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]],sdate,stime,H[barArr[2]]);
diff = abs(L[barArr[1]]-H[barArr[2]]);
value23 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per1/100),sdate,stime,H[barArr[2]]-diff*(per1/100));
value24 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per2/100),sdate,stime,H[barArr[2]]-diff*(per2/100));
value25 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per3/100),sdate,stime,H[barArr[2]]-diff*(per3/100));
value26 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per4/100),sdate,stime,H[barArr[2]]-diff*(per4/100));
TL_SetColor(value21,blue);
TL_SetColor(value22,blue);
TL_SetColor(value23,blue);
TL_SetColor(value24,blue);
TL_SetColor(value25,blue);
TL_SetColor(value26,blue);
}
감사합니다.
2015-05-29
291
글번호 86524