커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8106
글번호 230811
답변완료
수식 부탁드립니다.
이 수식은 거래량 터진 과거봉에 시가 고가 저가 종가에 수평 추세선 긋는 수식인대요..
이 수식에서 과거봉의 갯수를 제가 지정할수가 있읍니다.이렇게 갯수를 지정하면
여기에 덧붙여서 거래량 터진 봉의 거래량이 몇주인지 오늘자 거래량 옆 오른쪽 빈공간에
1번거래량 몇주(숫자로표시 예를들어 상위1번 1,500) 2번 거래량 몇주 이렇게 표시되게
개선이 가능한지요...수고스럽지만 부탁드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0),ii[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
ii[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
TL_Delete(OTL[cnt1]);
TL_Delete(HTL[cnt1]);
TL_Delete(LTL[cnt1]);
TL_Delete(CTL[cnt1]);
Text_Delete(OTx[cnt1]);
Text_Delete(HTx[cnt1]);
Text_Delete(LTx[cnt1]);
Text_Delete(CTx[cnt1]);
Text_Delete(Tx[cnt1]);
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 5 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if !(L[cnt2] > Price*(1+Per/100) or H[cnt2] < Price*(1-Per/100)) and
V[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then
{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
ii[cnt1] = cnt2;
}
}
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N
{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == OO[cnt3] or HH[cnt1] == HH[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == LL[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == OO[cnt3] or CC[cnt1] == HH[cnt3] or CC[cnt1] == LL[cnt3] or CC[cnt1] == CC[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
if LastBarOnChart == 1 Then
MessageLog("O %.2f",color);
#시가선 추세선 출력
OTL[cnt1] = TL_New(Sdate[1],stime[1],OO[cnt1],sdate,stime,OO[cnt1]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
OTx[cnt1] = Text_New(sdate,stime,OO[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(OO[cnt1],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
HTL[cnt1] = TL_New(Sdate[1],stime[1],HH[cnt1],sdate,stime,HH[cnt1]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
HTx[cnt1] = Text_New(sdate,stime,HH[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(HH[cnt1],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
LTL[cnt1] = TL_New(Sdate[1],stime[1],LL[cnt1],sdate,stime,LL[cnt1]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
LTx[cnt1] = Text_New(sdate,stime,LL[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(LL[cnt1],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
CTL[cnt1] = TL_New(Sdate[1],stime[1],CC[cnt1],sdate,stime,CC[cnt1]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
CTx[cnt1] = Text_New(sdate,stime,CC[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(CC[cnt1],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
}
if CC[cnt1] > 0 then{
Tx[cnt1] = Text_New(sdate[ii[cnt1]],stime[ii[cnt1]],CC[cnt1],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
2018-05-03
300
글번호 118659
답변완료
수식작성을 부탁드립니다.
1.전봉의 종가가 20일선 상향돌파 후 다음봉의 종가가 20일선값보다 높고,
rsi값이 전봉보다 높으면 매수
전봉의 종가가 20일선 하향돌파 후 다음봉의 종가가 20일선값보다 낮고,
rsi값이 전봉보다 낮으면 매도
2. 전봉이 시초가대비 5% 상승했을때 다음봉은 전봉의 종가 도달시 1차매수, 종가대비 50% 하락시 2차매수, 종가대비 70%하락시 3차 매수
평단대비 5% 상승시 매도
전봉 종가대비 90% 하락시 매도
감사합니다.
2018-05-02
237
글번호 118658
답변완료
지표식부탁드립니다
안녕하세요
아래수식은 고저파동수식인데 이수식의 30틱차트에서의 움직임이 120틱차트에서 실현되도록 수식으로 수정부탁드립니다
감사합니다
Input:length(2),종가사용여부(0),파동선두께(5),수치표시(1),ADXP1(2),ADXP2(14);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),tl2(0),ADXV1(0),ADXV2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
ADXV1 = ADX(ADXP1);
ADXV2 = ADX(ADXP2);
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]);
TL2 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 2, 1);
Text_SetColor(Text1,BLACK);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,CYAN);
TL_SetSize(TL2,파동선두께);
TL_SetColor(TL2,BLACK);
}
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));
}
}
최종꼭지점 = "고점";
}
#==========================================#
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]);
TL2 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
Text_SetColor(Text1,BLACK);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,CYAN);
TL_SetSize(TL2,파동선두께);
TL_SetColor(TL2,BLACK);
}
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));
}
}
최종꼭지점 = "저점";
}
if ((고[1,1]+ 저[1,1])/2) > ((고[1,1]+ 저[1,1])/2)[1] then
plot1((고[1,1]+ 저[1,1])/2,"중앙",WHITE,def,iff(ADXV1>ADXV1[1],10,2));
if ((고[1,1]+ 저[1,1])/2) < ((고[1,1]+ 저[1,1])/2)[1] then
plot1((고[1,1]+ 저[1,1])/2,"중앙",BLACK,def,iff(ADXV1>ADXV1[1],10,2));
2018-05-02
221
글번호 118657
크래프트 님에 의해서 삭제되었습니다.
2018-05-02
19
글번호 118656
답변완료
수고하십니다
###,다시한번 도전입니다
$,아래수식은 어느회원분 질문에 대한 답변수식입니다,조건만족시 파동추세선의
색상이 변경되는 내용입니다, 여기서 질문입니다,
ㅡ,18시15분을 장시작~ 익일17시30분을 장마감 기준으로보고 전일의 파동추세선중에 가장큰
파동에 피봇등분선 수치를 출력하여 당일현재까지 오른쪽 그리기로 연장 하고싶습니다.
(단,당일에 전일보다 큰파동이 출현시에는 갱신되는)
#,잘 부탁드립니다~"꾸벅"
Input : af(0.02), maxAF(0.2);
var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0),TL1(0),TL2(0),cnt(0),count(0);
var : HH1(0),LL1(0),color(0);
var1 = CSar(af,maxAF);
if crossup(c,var1) Then
{
T = 1;
HH = H;
HH1 = HH[1];
HD = sdate;
HT = stime;
if HH > HH1 Then
color = red;
if LL > 0 Then
{
TL1 = TL_new(LD[1],LT[1],LL[1],HD,HT,HH);
TL_SetSize(TL1,3);
TL_SetColor(Tl1,color);
}
}
if CrossDown(c,var1) Then
{
T = -1;
LL = L;
LL1 = LL[1];
LD = sdate;
LT = stime;
if LL < LL1 Then
color = BLUE;
if HH > 0 Then
{
TL2 = TL_new(HD[1],HT[1],HH[1],LD,LT,LL);
TL_SetSize(TL2,3);
TL_SetColor(Tl2,color);
}
}
if T == 1 then
{
if H > HH Then
{
HH = H;
HD = sdate;
HT = stime;
if HH > HH1 Then
color = YELLOW;
TL_SetEnd(TL1,HD,HT,HH);
TL_SetSize(TL1,3);
TL_SetColor(Tl1,color);
}
}
if T == -1 then
{
if L < LL Then{
LL = L;
LD = sdate;
LT = stime;
if LL < LL1 Then
color = CYAN;
TL_SetEnd(TL2,LD,LT,LL);
TL_SetSize(TL2,3);
TL_SetColor(Tl2,color);
}
}
#,매번 감사합니다.
2018-05-03
218
글번호 118655
jba 님에 의해서 삭제되었습니다.
2018-05-02
28
글번호 118654
답변완료
수식 문의드립니다.
수고 많으십니다. 수식 부탁드립니다.
이동평균 200선 아래로 내려간 1)첫번째 캔들의 종가를 기준으로 2)아래로 N 틱 이상 내려간후 (N틱이상 갭 발생후) 다시 200선 위로 3)캔들이(종가가) 올라가면 이후 10개 갠들의 평균 가격이 200선 위에 있을경우 매수
이동평균 200선 위로 올라간 4)첫번째 캔들의 종가를 기준으로 5)위로 N 틱 이상 올라간후 (N틱이상 갭 발생후) 다시 200선 아래로 6)캔들의 종가가 내려가면 이후 10개 갠들의 평균 가격이 200선 아래에 있을경우 매도
1) ■ 표시와 가격
2) ●(-N틱) 표시와 가격
3) ★ 표시
4) ■ 표시와 가격
5) ●(-N틱) 표시와 가격
6) ★ 표시
포지션이 있을경우
손절 50틱 익절 50틱
2018-05-06
209
글번호 118653
슬림 님에 의해서 삭제되었습니다.
2018-05-02
0
글번호 118652
2wnwn 님에 의해서 삭제되었습니다.
2018-05-03
9
글번호 118651