커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1588
글번호 230811
답변완료
stop loss 코드
수고 많으십니다.
stop loss 코드 문의 드립니다.
매수 stop loss 조건:
- 현재 봉의 종가가 진입 시점부터 과거 5봉 중의 최저점을 하회 할 경우
매도 stop loss
- 현재 봉의 종가가 진입 시점부터 과거 5봉 중의 최고점을 상화 할 경우
감사합니다.
2023-01-06
929
글번호 165157
답변완료
문의 드립니다.
안녕하세요
설명을 글로 하기 어려워 통화와 원격 부탁드립니다.
2023-01-06
868
글번호 165156
답변완료
문의드립니다
안녕하세요?
아래수식은 margenta 색상만 표현되는데
첨부사진에 그려본것처럼 cyan 색상도 더러 표현되는 수식이 가능하다면 구합니다
감사합니다
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0),고점변곡(""),저점변곡("");
var : clr1(0),clr2(0),BE(0),SE(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,data2(C),data2(H));
LL = IFF(0==1,data2(C),data2(L));
If data2(Index) == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = data2(Highest(HH,length)) == HH and 최종고가 <> HH;
Condition2 = data2(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
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,Red);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, -1);
Text_SetColor(Text1,Blue);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then
{
TL12 = TL_New(고[2,3],고[2,4],고[2,1],data2(sdate),data2(stime),고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],data2(Sdate),data2(Stime),고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL13,2);
TL_SetColor(TL12,clr1);
TL_SetSize(TL12,2);
clr1 = Pink;
TL_SetColor(TL13,Pink);
}
if T == 1 and T[1] != 1 Then
{
TL14= TL_New(저[2,3],저[2,4],저[2,1],data2(sdate),data2(stime),저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],data2(sdate),data2(stime),저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetColor(TL14,clr2);
TL_SetSize(TL14,2);
clr2 = LightBlue;
TL_SetColor(TL15,clr2);
TL_SetSize(TL15,2);
}
#================================================================#
VAR:mav5(0),mav10(0),mav20(0),mav40(0),mav60(0),mav120(0),aa(0);
mav5=ma(c,5);
mav10=ma(c,10);
mav20=ma(c,20);
mav40=ma(c,40);
mav60=ma(c,60);
mav120=ma(c,120);
condition11=CountIf(mav10<mav20,20) >= 10 and t==1 and
저[1,1] <mav20[Index-저[1,2]] and 고[1,1]>mav20[Index-고[1,2]];
var:box1(0);
if t == 1 Then
{
if t != t[1] Then
Condition12 = false;
if condition11 == true and Condition12 == False Then
{
Condition12 = true;
Box1 = Box_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
Box_Setcolor(box1,MAGENTA);
Box_Setfill(box1,true,100,true);
}
if Condition12 == true Then
Box_SetEnd(box1,고[1,3],고[1,4],고[1,1]);
}
2023-01-06
924
글번호 165154
답변완료
수식 문의
ㄱ.
현재시간 미결제약정과 현재가를 곱합니다.
ㄴ.
n봉 기간의 누적 거래대금을
n봉 기간의 누적 거래량으로 나눕니다.
이 값을 현재시간 미결제약정과 곱합니다.
ㄱ ÷ ㄴ
ㄱ을 ㄴ으로 나누어 그 값을 plot로 뿌려줍니다.
n봉 기간은 설정 가능하도록 부탁드립니다.
항상 친절한 답변 감사드립니다.
2023-01-06
892
글번호 165152
아트정 님에 의해서 삭제되었습니다.
2023-01-06
80
글번호 165151
답변완료
지표 질문입니다
D-2캔들이 음봉이고
D-1캔들이 양봉이고 D-1고가가 D-2고가보다 높고
현재 캔들 고가가 D-1캔들 고가보다 높을때
D-2캔들 시가를 표시한다
D-1캔들 저가를 표시한다
현재 캔들 저가를 표시한다
D-2캔들이 양봉이고
D-1캔들이 음봉이고 D-1저가가 D-2저가보다 낮고
현재 캔들 저가가 D-1캔들 저가보다 낮을때
D-2캔들 시가를 표시한다
D-1캔들 고가를 표시한다
현재 캔들 고가를 표시한다
감사합니다
2023-01-06
459
글번호 165150
답변완료
수정 부탁드립니다
안녕하세요!
매매시 불편한 부분이 있어서 수정을 좀 부탁드립니다!
첨부파일 (A)는 지난번에 만들어주신 수식을 현재 잘 사용하고 있습니다!
다름이 아니라 매매를 하면서 챠트상의 다른 텍스트 출력 부분과 겹쳐서 매매시 불편함이
있어서 첨부파일 (B)처럼 텍스트 부분을 우측으로 이동하여 출력이 될 수 있도록
수정을 부탁드립니다!
항상 노고에 감사드립니다!
--------------------------------------------------------------
(A)
input : AA(100),BB(200),CC(160),소숫점자리(5);
var1 = AA;
var2 = BB;
var3 = CC;
var4 = BB+(BB-AA);
var5 = BB+(BB-AA)/2;
var6 = CC+(BB-AA);
plot1(var1,"A값");
plot2(var2,"B값");
plot3(var3,"C값");
plot4(var4,"E값");
plot5(var5,"평균값");
plot6(var6,"N값");
if index == 1 then
{
value1 = Text_New_self(sdate,stime,var1,"A값 : "+NumToStr(var1,소숫점자리));
value2 = Text_New_self(sdate,stime,var2,"B값 : "+NumToStr(var2,소숫점자리));
value3 = Text_New_self(sdate,stime,var3,"C값 : "+NumToStr(var3,소숫점자리));
value4 = Text_New_self(sdate,stime,var4,"E값 : "+NumToStr(var4,소숫점자리));
value5 = Text_New_self(sdate,stime,var5,"평균값 : "+NumToStr(var5,소숫점자리));
value6 = Text_New_self(sdate,stime,var6,"N값 : "+NumToStr(var6,소숫점자리));
Text_SetStyle(value1,2,1);
Text_SetStyle(value2,2,1);
Text_SetStyle(value3,2,1);
Text_SetStyle(value4,2,1);
Text_SetStyle(value5,2,1);
Text_SetStyle(value6,2,1);
}
Else
{
Text_SetLocation(value1,sdate,stime,var1);
Text_SetLocation(value2,sdate,stime,var2);
Text_SetLocation(value3,sdate,stime,var3);
Text_SetLocation(value4,sdate,stime,var4);
Text_SetLocation(value5,sdate,stime,var5);
Text_SetLocation(value6,sdate,stime,var6);
}
-------------------------------------------
(B)
input : 날짜변경시간(240000);
var : date0(0), date1(0), time0(0), time1(0);
var : HH(0),HH1(0), Hdate(0),Htime(0),Hdate1(0), Htime1(0), TX11(0), TX1(0);
var : LL(0),LL1(0), Ldate(0),Ltime(0),Ldate1(0), Ltime1(0), TX12(0), TX2(0);
var : OO(0),OO1(0), Odate(0),Otime(0),Odate1(0), Otime1(0), TX13(0), TX3(0);
var : MM(0),MM1(0), Mdate(0),Mtime(0),Mdate1(0), Mtime1(0), TX14(0), TX4(0);
if stime == 날짜변경시간 then
{
date0 = sdate;
date1 = date0[1];
time0 = stime;
time1 = time0[1];
#전일고가
HH = H;
HH1 = HH[1];
TL_Delete(var11);
var11 = TL_New(date1, time1, HH1, date0, time0, HH1);
TL_SetExtRight(var11,true);
TL_SetColor(var11, black);
#전일저가
LL = L;
LL1 = LL[1];
TL_Delete(var12);
var12 = TL_New(date1, time1, LL1, date0, time0, LL1);
TL_SetExtRight(var12,true);
TL_SetColor(var12, blue);
#전일중심선
MM1 = (HH1+LL1)/2;
Mdate1 = Mdate[1];
Mtime1 = Mtime[1];
TL_Delete(var14);
var14 = TL_New(date1, time1, MM1, date0, time0, MM1);
TL_SetExtRight(var14,true);
TL_SetColor(var14, black);
#전일시가
OO = O;
OO1 = OO[1];
Odate1 = Odate[1];
Otime1 = Otime[1];
TL_Delete(var13);
var13 = TL_New(date1, time1, OO1, date0, time0, OO1);
TL_SetExtRight(var13,true);
TL_SetColor(var13, black);
#당일시가
TL_Delete(var3);
var3 = TL_New(sdate[1], stime[1], OO, date0, time0, OO);
TL_SetExtRight(var3,true);
TL_SetColor(var3, black);
Text_delete(TX11);
TX11 = Text_New(sdate, stime, HH1, " ▶전일고가 : "+Numtostr(HH1,2));
Text_SetStyle(TX11, 0, 1);
Text_setColor(TX11, black);
Text_delete(TX12);
TX12 = Text_New(sdate, stime, LL1, " ▶전일저가 : "+Numtostr(LL1,2));
Text_SetStyle(TX12, 0, 0);
Text_setColor(TX12, black);
Text_delete(TX13);
TX13 = Text_New(sdate, stime, OO1, " ▶전일시가 : "+Numtostr(OO1,2));
Text_SetStyle(TX13, 0, 0);
Text_setColor(TX13, black);
Text_delete(TX3);
TX3 = Text_New(sdate, stime, OO, " ▶당일시가 : "+Numtostr(OO,2));
Text_SetStyle(TX3, 0, 0);
Text_setColor(TX3, black);
Text_delete(TX14);
TX14 = Text_New(sdate, stime, MM1, " ▶전일중심 : "+Numtostr(MM1,2));
Text_SetStyle(TX14, 0, 0);
Text_setColor(TX14, black);
}
#당일고가
if stime <> 날짜변경시간 and H[1] >= HH then
{
HH = H[1];
Hdate = sdate[1];
Htime = stime[1];
TL_Delete(var1);
var1 = TL_New(date0, time0, HH, sdate, stime, HH);
TL_SetExtRight(var1,true);
TL_SetColor(var1, black);
}
#당일저가
if stime <> 날짜변경시간 and L[1] <= LL then
{
LL = L[1];
Ldate = sdate[1];
Ltime = stime[1];
TL_Delete(var2);
var2 = TL_New(date0, time0, LL, sdate, stime, LL);
TL_SetExtRight(var2,true);
TL_SetColor(var2, black);
}
#당일중심
if stime <> 날짜변경시간 then
{
MM = (HH+LL)/2;
TL_Delete(var4);
var4 = TL_New(date0, time0, MM, sdate, stime, MM);
TL_SetExtRight(var4,true);
TL_SetColor(var4, black);
}
if stime == 날짜변경시간 then
{
var8 = TL_New(sdate, stime, H, sdate, stime, 999999999);
var9 = TL_New(sdate, stime, L, sdate, stime, 0);
TL_setColor(var8, black);
TL_setColor(var9, black);
}
Text_delete(TX1);
TX1 = Text_New(NextBarSdate,NextBarStime, HH, " ▶당일고가 : "+Numtostr(HH,2));
Text_SetStyle(TX1, 0, 1);
Text_setColor(TX1, black);
Text_delete(TX2);
TX2 = Text_New(NextBarSdate, NextBarStime, LL, " ▶당일저가 : "+Numtostr(LL,2));
Text_SetStyle(TX2, 0,0);
Text_setColor(TX2, black);
Text_delete(TX4);
TX4 = Text_New(NextBarSdate, NextBarStime, MM, " ▶당일중심 : "+Numtostr(MM,2));
Text_SetStyle(TX4, 0,0);
Text_setColor(TX4, black);
Text_SetLocation(TX11,NextBarSdate,NextBarStime,HH1);
Text_SetLocation(TX12,NextBarSdate,NextBarStime,LL1);
Text_SetLocation(TX13,NextBarSdate,NextBarStime,OO1);
Text_SetLocation(TX3,NextBarSdate,NextBarStime,OO);
Text_SetLocation(TX14,NextBarSdate,NextBarStime,MM1);
2023-01-06
409
글번호 165148
답변완료
지표
항상 감사합니다
지정가를 시간값으로 수식부탁드립니다
예]10시30분의 [시가]
[종가]
[고가]
[저가]
[고가+저가}/2
[주셨던수식]
input : 지정가(292.95),진동폭(3.5);
var1 = 지정가;
value1 = 진동폭/5;
Plot1(var1);
plot10(var1+value1*1);
plot11(var1+value1*2);
2023-01-05
410
글번호 165147
답변완료
추세선 세로선
input : Period(20);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
Plot1 (0);
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
}
LoVal[0] = L;
LoBar[0] = 0;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
Text_Delete(tx);
Tx = Text_New(sDate,sTime,value12+PriceScale*2,"●");
Text_SetColor(Tx,Cyan);
Text_SetStyle(Tx,2,2);
Text_SetSize(Tx,30);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
}
HiVal[0] = H;
HiBar[0] = 0;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
Text_Delete(tx);
Tx = Text_New(sDate,sTime,value12-PriceScale*2,"●");
Text_SetColor(Tx,Lime);
Text_SetStyle(Tx,2,2);
Text_SetSize(Tx,30);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
지난것은 모두 지우고 마지막 추세선에서만 시작점에 동그라미가 표시되는데,
여기에 같은 방식으로 세로선도 추가하여, 이전 세로선은 지우고 마지막 세로선만 마지막 동그라미와 같이 표시되게 부탁합니다.
2023-01-05
567
글번호 165145