커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7803
글번호 230811
답변완료
시간 관련 매수매도
안녕하세요 개발자님.
아주 간단한 수식인데, 시간 관련 수식은 작성한 경험이 없어 여쭈어봅니다.
1. 오후 3시 30분 매수, 다음날 정오 매도 (오버나잇)
2. 정오 매수, 오후 3시 30분 매도 (당일 매수, 당일 청산)
혹시 수식으로 작성 가능할까요?
항상 도움 주셔서 감사합니다
2022-07-11
1434
글번호 160626
2wnwn 님에 의해서 삭제되었습니다.
2022-07-11
17
글번호 160617
답변완료
DMI지표
늘 감사합니다.
DMI지표에서
1. DP와 DM값이 교차할 때
data2에 시가,고가,저가,종가를 수평선으로 표시해 주세요.
감사합니다.
2022-07-11
1540
글번호 160616
답변완료
주봉 인덱스
안녕하세요 이전 답변에 대한 재질문 드립니다.
말씀하신 주봉, 월봉에 인덱스를 부여할 수 있을까요..?
마치 주봉 차트에서 인덱스가 있듯이 일봉에서 함수로 표현된 주봉,월봉이 모두 인덱스 할당이 가능하여 맨 초기 주봉부터 현 주봉까지의 종가의 합을 구한다던가 그런 식의 구현이 가능한지 궁금합니다!
///////////////////////////////////////////////////////////////////////////
안녕하세요
예스스탁입니다.
주봉, 월봉의 시고저종은 별도로 불러오는 함수가 없습니다.
아래와 같이 계산해 사용하셔야 합니다.
각 배열변수 [0]은 당주/당월, [1]은 전주, 전월, [2]는 전전주, 전전월..순으로 값이 저장됩니다.
var : cnt(0);
Array : MO[50](0),MH[50](0),ML[50](0),MC[50](0);
Array : WO[50](0),WH[50](0),WL[50](0),WC[50](0);
if bdate > bdate[1]+30 Then
{
MO[0] = O;
MH[0] = H;
ML[0] = L;
for cnt = 1 to 49
{
MO[cnt] = MO[cnt-1][1];
MH[cnt] = MH[cnt-1][1];
ML[cnt] = ML[cnt-1][1];
MC[cnt] = MC[cnt-1][1];
}
}
MC[0] = C;
if H > MH[0] Then
MH[0] = H;
if L < ML[0] Then
ML[0] = L;
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then
{
WO[0] = O;
WH[0] = H;
WL[0] = L;
for cnt = 1 to 49
{
WO[cnt] = WO[cnt-1][1];
WH[cnt] = WH[cnt-1][1];
WL[cnt] = WL[cnt-1][1];
WC[cnt] = WC[cnt-1][1];
}
}
if H > WH[0] Then
WH[0] = H;
if L < WL[0] Then
WL[0] = L;
즐거운 하루되세요
> 히익 님이 쓴 글입니다.
> 제목 : 주봉 월봉
> 혹시 일봉 차트에서 예스랭귀지 작성 시 주봉, 월봉데이터를 불러오는 함수값이 있울까요?
2022-07-11
1730
글번호 160615
답변완료
지표수식
안녕하세요 늘...항상 감사 드립니다
30분봉에 볼린저 밴드를 더 작은봉에 표현하고 싶습니다
예를들면 3분봉이나 5분봉에요..
그리고 30분봉의 이평도 3분봉이나 5분봉에 볼 수 있게요...
부탁드립니다 꾸벅
2022-07-11
1716
글번호 160614
답변완료
수식 의뢰 드립니다!
안녕하세요!
궁금한게 있어서 문의드립니다!
1. 해외선물(국내선물 포함) > 예) 호주 달러와 뉴질랜드 달러 2종목을 한 챠트에 합쳐서 매매에 도움을 받고 싶습니다! 합치는 과정을 알려 주시길 부탁 드립니다!
2. 챠트에서 합쳐진 호주 달러의 현재가 와 뉴질랜드 달러의 현재가 간에 진폭 (가격의 격차)를 실시간으로 챠트에 숫자로 나타나는 수식을 만들어 매매에 도움을 받고 싶습니다!
항상 노고에 다시 한번 감사드립니다!
2022-07-11
1713
글번호 160613
답변완료
데이타2수식으로 부탁드립니다.
var : price(0),a(0),b(0),size(0);
price = close;
size = iff((a[1]-a[2]) > 0 or (b[1]-b[2]) < 0 , atr(20) ,TrueRange);
if a[1] > a[2] Then
{
Condition1 = true;
var1 = 0;
}
Else
{
if Condition1 == true Then
var1 = var1+1;
}
a = max(price,a[1]) - size/pow(10,2)*(var1*2);
plot1(a,"a");
2022-07-10
1493
글번호 160612
답변완료
수식 부탁드립니다
수고하십니다.
아래 지표에서
첨부 그림처럼 변곡점 상하 +/- 0.5 위치에 점표시를 하고 싶습니다.
수고하세요..
##########
Input:length(30);
Var:최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),sBar(0),TL1(0),
고추세기울기(0),고추세봉개수(0),고추세시작(0),고추세시작IDX(0),고추세최종(0),
저추세기울기(0),저추세봉개수(0),저추세시작(0),저추세시작IDX(0),저추세최종(0);
Var:고1(0),고2(0),고3(0),고4(0),고5(0),고6(0),고7(0),고8(0),고9(0),고10(0),
저1(0),저2(0),저3(0),저4(0),저5(0),저6(0),저7(0),저8(0),저9(0),저10(0),
고1IDX(0),고2IDX(0),고3IDX(0),고4IDX(0),고5IDX(0),
고6IDX(0),고7IDX(0),고8IDX(0),고9IDX(0),고10IDX(0),
저1IDX(0),저2IDX(0),저3IDX(0),저4IDX(0),저5IDX(0),
저6IDX(0),저7IDX(0),저8IDX(0),저9IDX(0),저10IDX(0);
var : t(0),ii(0);
#==========================================#
Condition1 = Highest(C,length) == C and 최종고가 <> C;
Condition2 = Lowest (C,length) == C and 최종저가 <> C;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = C; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
고9 = 고8; 고9IDX = 고8IDX;
고8 = 고7; 고8IDX = 고7IDX;
고7 = 고6; 고7IDX = 고6IDX;
고6 = 고5; 고6IDX = 고5IDX;
고5 = 고4; 고5IDX = 고4IDX;
고4 = 고3; 고4IDX = 고3IDX;
고3 = 고2; 고3IDX = 고2IDX;
고2 = 고1; 고2IDX = 고1IDX;
고1 = C; 고1IDX = Index;
sBar = Index - 저1IDX; // 추세선 시작점의 위치, n봉전으로 표시
TL1 = TL_New(sDate[sBar],sTime[sBar],저1,sDate[0],sTime[0],고1);
TL_SetSize(TL1,1);
TL_SetColor(TL1,ReD);
}
Else If 고1 < C Then // 1번 고점보다 높은 고가 출현
{
고1 = C; 고1IDX = Index;
TL_SetEnd(TL1,sDate[0],sTime[0],고1);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
}
/* 고점추세선 */
If 고2IDX[1] <> 고2IDX Then // 고2의 Index값이 변동 없음 즉, 새로운 고점이 생기지 않았음
{
고추세최종 = 0; 고추세기울기 = 0; 고추세시작 = 0; 고추세봉개수 = 0;
If 고2 < 고3 Then
{
고추세기울기 = (고2 - 고3)/(고2IDX - 고3IDX);
고추세시작 = 고3;
고추세시작IDX = 고3IDX;
}
Else If 고2 < 고4 Then
{
고추세기울기 = (고2 - 고4)/(고2IDX - 고4IDX);
고추세시작 = 고4;
고추세시작IDX = 고4IDX;
}
Else If 고2 < 고5 Then
{
고추세기울기 = (고2 - 고5)/(고2IDX - 고5IDX);
고추세시작 = 고5;
고추세시작IDX = 고5IDX;
}
Else If 고2 < 고6 Then
{
고추세기울기 = (고2 - 고6)/(고2IDX - 고6IDX);
고추세시작 = 고6;
고추세시작IDX = 고6IDX;
}
Else If 고2 < 고7 Then
{
고추세기울기 = (고2 - 고7)/(고2IDX - 고7IDX);
고추세시작 = 고7;
고추세시작IDX = 고7IDX;
}
Else If 고2 < 고8 Then
{
고추세기울기 = (고2 - 고8)/(고2IDX - 고8IDX);
고추세시작 = 고8;
고추세시작IDX = 고8IDX;
}
Else If 고2 < 고9 Then
{
고추세기울기 = (고2 - 고9)/(고2IDX - 고9IDX);
고추세시작 = 고9;
고추세시작IDX = 고9IDX;
}
고추세봉개수 = Index - 고추세시작IDX;
고추세최종 = 고추세기울기 * 고추세봉개수 + 고추세시작;
}
Else If 고추세최종[1] > 0 Then
{
고추세최종 = 고추세기울기 * (Index - 고추세시작IDX) + 고추세시작;
}
If 저추세최종[1] > 0 Then
{
저추세최종 = 저추세기울기 * (Index - 저추세시작IDX) + 저추세시작;
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = C;
If 최종변곡점 == "고점" then
{
저9 = 저8; 저9IDX = 저8IDX;
저8 = 저7; 저8IDX = 저7IDX;
저7 = 저6; 저7IDX = 저6IDX;
저6 = 저5; 저6IDX = 저5IDX;
저5 = 저4; 저5IDX = 저4IDX;
저4 = 저3; 저4IDX = 저3IDX;
저3 = 저2; 저3IDX = 저2IDX;
저2 = 저1; 저2IDX = 저1IDX;
저1 = C; 저1IDX = Index;
sBar = Index - 고1IDX;
TL1 = TL_New(sDate[sBar],sTime[sBar],고1,sDate[0],sTime[0],저1);
TL_SetSize(TL1,1);
TL_SetColor(TL1,BluE);
}
Else If 저1 > C then
{
저1 = C; 저1IDX = Index;
TL_SetEnd(TL1,sDate[0],sTime[0],저1);
}
/* 저점추세선 */
If 저2IDX[1] <> 저2IDX Then
{
저추세최종 = 0; 저추세기울기 = 0; 저추세시작 = 0; 저추세봉개수 = 0;
If 저2 > 저3 and 저3 > 0 Then
{
저추세기울기 = (저2 - 저3)/(저2IDX - 저3IDX);
저추세시작 = 저3;
저추세시작IDX = 저3IDX;
}
Else If 저2 > 저4 and 저4 > 0 Then
{
저추세기울기 = (저2 - 저4)/(저2IDX - 저4IDX);
저추세시작 = 저4;
저추세시작IDX = 저4IDX;
}
Else If 저2 > 저5 and 저5 > 0 Then
{
저추세기울기 = (저2 - 저5)/(저2IDX - 저5IDX);
저추세시작 = 저5;
저추세시작IDX = 저5IDX;
}
Else If 저2 > 저6 and 저6 > 0 Then
{
저추세기울기 = (저2 - 저6)/(저2IDX - 저6IDX);
저추세시작 = 저6;
저추세시작IDX = 저6IDX;
}
Else If 저2 > 저7 and 저7 > 0 Then
{
저추세기울기 = (저2 - 저7)/(저2IDX - 저7IDX);
저추세시작 = 저7;
저추세시작IDX = 저7IDX;
}
Else If 저2 > 저8 and 저8 > 0 Then
{
저추세기울기 = (저2 - 저8)/(저2IDX - 저8IDX);
저추세시작 = 저8;
저추세시작IDX = 저8IDX;
}
Else If 저2 > 저9 and 저9 > 0 Then
{
저추세기울기 = (저2 - 저9)/(저2IDX - 저9IDX);
저추세시작 = 저9;
저추세시작IDX = 저9IDX;
}
저추세봉개수 = Index - 저추세시작IDX;
저추세최종 = 저추세기울기 * 저추세봉개수 + 저추세시작;
}
Else If 저추세최종[1] > 0 Then
{
저추세최종 = 저추세기울기 * (Index - 저추세시작IDX) + 저추세시작;
}
If 고추세최종[1] > 0 Then
{
고추세최종 = 고추세기울기 * (Index - 고추세시작IDX) + 고추세시작;
}
최종변곡점 = "저점";
}
2022-07-10
1820
글번호 160611
답변완료
상승률 합
안녕하세요 개발자님.
차트 초기 봉부터 가격 상승률의 총합을 구하려고 합니다. 근데 거의 모든 자산에서 1025 봉 부터 오류가 나오더라구요. 올바른 값이 나오게 하려면 어떻게 해야할까요?
항상 도움주셔서 감사합니다.
Var11=Round((C/C[1]-1)*100,2);
Var10=0;
//////////////////////////////////////////////////////////
Var : cnt(0);
For cnt = 0 to Index-1 step 1
{
Var10=Var10+Var11[cnt];
}
/////////////////////////////////////////////////////////
MessageLog("%.2f %.2f %.2f",Var11,Var10,Index);
2022-07-10
1697
글번호 160610