커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1544
글번호 230811
답변완료
수식 문의 드립니다.
안녕하세요
전에 올려주신 식입니다.
아래 식중에서 500.300.300 이 Crossup 상태에서 10.6.6 이 Crossup 되면은 매수
신호가 나에게 되어 있습니다.
이 식중에서 500.300.300 이 Crossup 된 상태에서 10.6.6 이 침체권(20) 아래로
내려 왔다가 올라가면서 다시 Crossup 이 되면은 매수신호 나오게 하는 식을 부탁드리겠습니다..
(여기서 10.6.6 Crossup 되는것이 20 아래든 20 위던간에 상관없이
Crossup 만 되면은 매수신호, 반드시 20 아래로 왔다가 탈출해야 매수신호출현)
여기서 침체권 영역 (20) 을 25 나 30 과 같이 조절할수 있도록 해 주시면 감사하겠습니다.
Input : Period(500), Period1(300), Period2(300), Period3(10), Period4(6), Period5(6);
var : T(0);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
value3 = StochasticsK(Period3,Period4);
value4 = StochasticsD(Period3,Period4,Period5);
# 스토캐스틱 500,300,300 이 crossup 상태 일때에만
If CrossDown(value1, value2) Then
T = 1;
if CrossUp(Value1, Value2) Then
T = -1;
# 20 이평과 60 이평이 골드시에 매수 하고
if T == 1 and CrossDown(Value3, Value4) Then
{
Sell();
}
# 이미 매수해 놓은것은 이평 20 이 60을 하향돌파 할때에 청산 신호
if CrossUp(Value3, Value4) Then
{
ExitShort();
}
항상 감사드립니다.
2023-03-23
1575
글번호 167455
답변완료
문의드립니다.
답변 감사드립니다. 답변중에 이해가 잘 안되는 부분이 있어서 다시 질문 드립니다.
HH10 = (High[1] + High[2] + High[3] + High[4] + High[5] + High[6] + High[7] + High[8] + High[9] + High[10]) /10 ;
저번 질문 HH10 계산된 값과 가로선 출력값의 오차가 나는 부분을
추세선과 텍스트는 봉완성시에 동작합니다.
차트의 마지막봉은 미완성봉으로 해당값을 기준으로 출력되게는 할수 없습니다.
현재봉이 포함되면 미완성봉이라 평균 값이 계속 틀려지는건 어쩔수 없지만
과거봉 [1] ~ [10] 또는 [2] ~ [11] 으로 하면 현재봉이 포함되지 않을텐데
HH10 값이 가로선 그려지는 값과 왜 틀릴까요?
감사합니다.
2023-03-23
1167
글번호 167454
답변완료
수식문의드립니다.
개발자님 감사합니다.
시스템 조건식 부탁드립니다.
삼각가중이평 180
삼각가중이평 60
삼각가중이평 30
위의 3개의 삼각가중이평중에
두개 이상의 이평선 위에서 봉의시가가 시작할때 매수진입
위의 3개의 삼각가중이평중에
두개 이상의 이평선 아래에서 봉의시가가 시작할때 있을때 매도진입
건강한 봄날되시고, 좋은일 가득하시길 바랍니다.
감사합니다.
2023-03-23
2032
글번호 167453
답변완료
문의 드립니다.
아래 식에서 익절 청산 추가를 원합니다.
매수와 매도 진입 후 각각 익절 설정할 수 있도록 부탁드립니다.
var1 = BollBandUp(20,2);
Var2 = BollBandDown(20,2);
if CrossUp(c,var1) Then
Buy();
if CrossDown(c,var1) Then
ExitLong();
if CrossDown(c,var2) Then
Sell();
if CrossUp(c,var2) Then
ExitShort();
2023-03-23
1579
글번호 167446
답변완료
수고하십니다.
안녕하십니까?
Text2 위에 Text3에 봉갯수 표시 되도록 추가부탁드립니다.
Input:length(20),종가사용여부(0),파동선두께(2),수치표시(1);
Input:가로라인두께(2),고점라인색상(RED),저점라인색상(BLUE);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),text2(0),TL2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH;
// 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
var1 = 고[2,1]-저[1,1];
TL2 = TL_New(저[1,3],저[1,4],저[1,1],sDate,sTime,저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 1, 1);
Text_SetSize(Text1, 26);
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1]-저[1,1],2)+NewLine);
Text_SetStyle(Text2, 1, 1);
Text_SetSize(Text2, 26);
Text_SetColor(text2,RED);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUe);
TL_SetSize(TL2,가로라인두께);
TL_SetColor(TL2,저점라인색상);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetEnd(TL2,고[1,3],고[1,4],저[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1]-저[1,1],2)+NewLine);
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
var1 = 고[1,1]-저[2,1];
TL2 = TL_New(고[1,3],고[1,4],고[1,1],sDate,sTime,고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 1, 0);
Text_SetSize(Text1, 26);
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NewLine+NumToStr(저[1,1]-고[1,1],2));
Text_SetStyle(Text2, 1, 0);
Text_SetSize(Text2, 26);
Text_SetColor(text2,RED);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUe);
TL_SetSize(TL2,가로라인두께);
TL_SetColor(TL2,고점라인색상);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetEnd(TL2,저[1,3],저[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NewLine+NumToStr(저[1,1]-고[1,1],2));
}
}
최종꼭지점 = "저점";
}
2023-03-23
1426
글번호 167445
답변완료
도와주세요
안녕하세요?
아래 실거래량 지표에 참조데이터2의 거래량을 더한 수식을 만들고자합니다.
또 미리 감사드리며 오늘하루도 즐거운시간 되시길 바랍니다.
===============
input : R1(200),G1(0),B1(0);
input : R2(0),G2(0),B2(200);
var : hh(0),ll(0);
if Bdate != Bdate[1] Then
{
var1 = 0;
Var2 = Upvol-DownVol;
}
var1 = var1 + (Upvol-DownVol);
if CurrentDate == sDate Then
Plot1(var1,"당일실매수거래량",iff(var1 > 0,RGB(0,0,0),RGB(0,0,0)));
if CurrentDate == sDate Then
plot2(Var2,"첫봉종가");
if Bdate != Bdate[1] Then
{
hh = var1;
ll = var1;
}
Else
{
if var1 > hh Then
hh = var1;
if var1 < ll Then
ll = var1;
}
if CurrentDate == sDate Then
{
Plot3(hh,"최고");
plot4(ll,"최저");
plot5(ll+(hh-ll)*0.236,"23.6%");
plot6(ll+(hh-ll)*0.382,"38.2%");
plot7(ll+(hh-ll)*0.500,"50.0%");
plot8(ll+(hh-ll)*0.618,"61.8%");
plot9(ll+(hh-ll)*0.714,"71.4%");
plot10(ll+(hh-ll)*0.500+150,"+150");
}
if CurrentDate == sDate Then
{
PlotBaseLine1(0);
}
2023-03-23
757
글번호 167438
답변완료
수식 문의드립니다.
전일종가대비 갭 10%이상 종목이 시초가대비 -10%가 될시 매수되는 수식을 구현하고 싶습니다.
2023-03-23
1173
글번호 167435
답변완료
전환 비율
Input : 전환(0.2),굵기(3);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""), TL1(0),TX1(0);
Array:고[10,4](0),저[10,4](0);
Plot1(0);
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1]+전환 <= HH and hiBar == 0;
Condition2 = 고[1,1]-전환 >= LL and loBar == 0;
처리구분 = "";
If Condition1 and Condition2 Then // 고점과 저점 조건 동시 만족
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,2);
TL_SetColor(TL1,RED);
TX1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1]-저[1,1],2));
Text_SetSize(tx1,25);
Text_SetColor(Tx1,Red);
Text_SetStyle(tx1,1,1);
Text_SetBold(tx1,1);
}
Else If 고[1,1] < HH[hiBar] Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
Text_SetString(TX1,NumToStr(고[1,1]-저[1,1],2));
Text_SetLocation(TX1,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,2);
TL_SetColor(TL1,BLUE);
TX1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1]-고[1,1],2));
Text_SetSize(tx1,25);
Text_SetColor(Tx1,Blue);
Text_SetStyle(tx1,1,0);
Text_SetBold(tx1,1);
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
Text_SetString(TX1,NumToStr(저[1,1]-고[1,1],2));
Text_SetLocation(TX1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
a.차트 쪽 추세선을 보조지표 쪽으로 이동.
b.하락추세선 크기가 0.5p 이상 커지면 그 부분만 같은 크기로 박스 표시.
c.추세선을 plot화 하여 직선이 아닌 계단식으로 구현. 감사합니다.
2023-03-23
1349
글번호 167434
답변완료
수식 부탁 드립니다.
안녕하세요.
문의 드립니다.
4이평+현재가/5 를 지표로 나타내고 싶습니다.
그런데, 현재가는 봉이 완성이 안되면 위 식이 적용이 안되나요?
4이평 값과 현재가를 비교 해서 현재가가 4이평 보다 크면 화면에 "매수" 표시
수고 하세요
2023-03-23
974
글번호 167431