커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6572
글번호 230811
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
153
글번호 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
238
글번호 86524
회원 님에 의해서 삭제되었습니다.
2015-05-29
13
글번호 86523
답변완료
답변 좀 부탁드립니다.
질문 42060 질문의 답변 좀 부탁드립니다.
2015-05-28
144
글번호 86522
답변완료
수식 관련 문의드립니다.
안녕하세요. 42055 글 관련 답변 감사합니다.
아래 말씀해주신 것 중에,
============================================================
전일마지막봉 기준으로 DayLow(0)값을 리턴해 주게 됩니다.
============================================================
이 부분이 잘 이해가 안됩니다.
그럼 전일 마지막봉 기준으로 DayLow(0) 값이면,
전날의 최저가가 나오는 것인지요? (차트에 전날 데이터들이 포함되었음을 가정함)
만약 그렇다면, DayLow(0)라는 문구가 당일 저가를 나타내는 말인데,
오전 9시30분전에는 전날의 저가라는 잘못된 데이터가 반환될 것 같습니다.
아니면 전일 마지막봉의 딱 그 봉에서의 저가가 나온다는 것인지요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 관련 문의드립니다.
> 안녕하세요
예스스탁입니다.
DayLow(0)[1]은
1봉전 기준 당일최저가입니다.
9시 13분 기준으로 전봉은 전일 마지막봉입니다.
그러므로 첫봉에서는 위 식이 전일마지막봉 기준으로 DayLow(0)값을 리턴해 주게 됩니다.
즐거운 하루되세요
> ywesry 님이 쓴 글입니다.
> 제목 : 수식 관련 문의드립니다.
> 아래와 같은 상황을 가정하면,
어떤 값이 반환되는지요?
현재시각 오전 09:13분입니다.
30분봉 차트로 사용데이터는 10개입니다.
이 상황에서 DayLow(0)[1] 라고 사용하면,
1봉전 값중 가장 낮은 당일날 Low 값을 가져와야하는데,
아직 봉은 미완성입니다.
이런 경우 어떤 값이 나오는 것인지요? 아니면 아무 값도 없는것인지요?
09:30 분 이후면, DayLow(0)[1]는 값이 있을 것 같습니다.
30분봉 하나가 있으니, 그 값의 Low값이 될 것 같은데요..제가 이해한게 맞는지요?
2015-05-28
153
글번호 86520
답변완료
이평변곡 색상변화, 이평크로스 수평선넣기 수식이 궁금합니다.
파일은 20, 60평을 표시한 것으로,
첫번째 궁금한 것은
20평이나 60평이 상승추세에서는 빨강으로
하락추세에서는 파랑으로 표시하고 싶습니다.
두번째 궁금한 것은
20평, 60평이 골든 크로스가 날 때는 그 부분부터
데드크로스 나기까지 빨강수평선을 긋고,
데드크로스가 날 때는 골든크로스까지 파랑 수평선을 긋고 싶습니다.
다른 두 이평을 적용할 수도 있도록
수식을 부탁합니다.^^
2015-05-28
364
글번호 86519
답변완료
수식변경 요청드립니당.
if sdate > sdate[1]+1000 Then{
var1 = H;
var2 = L;
var11 = var1[1];
var12 = var2[1];
var13 = (var11-var12)/4;
}
if H > var1 Then
var1 = H;
if L < var2 Then
var2 = l;
위는 작년으로 설정한 것인데, 이것을
1. 저번 달
2. 저번 주
3. 어제
이렇게 3가지 경우로의 수식좀 알려주세요~~~초보올림.
2015-05-28
142
글번호 86516