커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7255
글번호 230811
답변완료
함수문의
안녕하세요?
항셍 선물을 거래하고 있습니다.
아래와 같이 추세추종전략으로 리버스전략을 사용하고 있습니다.
예스랭귀지 매뉴얼을 보다보니 atstop의 가격조건의 감시는 설정 후 다음 하나의 봉에서만 감시하여 다음 봉이 가격조건에 맞는 시세가 발생하지 않으면 설정은 해제된다고 나와있습니다.
이게 어떤 의미인지 이해가 되지 않습니다.
진입이 안될 리스크가 있는 것인지요?
설명 부탁드립니다.
if MarketPosition <= 0 Then
buy("b",AtStop,highest(H,5)+PriceScale);
if MarketPosition >= 0 Then
sell("s",AtStop,Lowest(L,5)-PriceScale);
2018-03-09
279
글번호 117281
양치기 님에 의해서 삭제되었습니다.
2018-03-09
0
글번호 117279
답변완료
문의드립니다.
선물차트 기준으로 문의드립니다.
Chaikin's Oscillator 지표에 이동평균선 기간값처럼 5,20,60처럼 기간값을 넣을 수 있는지요?
혹시 가능하다면 기간값을 수정가능하게 부탁드립니다.
항상 감사드립니다. 수고하세요!!!
2018-03-09
255
글번호 117275
답변완료
수식부탁드립니다
*매번 미안합니다* 아래수식에서
파동마다 각각의 TL2,TL4 수평선들이 넘 짧아서요
1.각각의 TL2수평선들을 상승봉이나올때 까지 선연장
2.각각의 TL4수평선들을 하락봉이나올때 까지 선연장
부탁드립니다 (수고하세요)
Input:length(6);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),처리구분("");
var : TL2(0),TL3(0),TL4(0),TL5(0),T(0),B(0),S(0),cnt(0),TL6(0),TL7(0),TL8(0),TL9(0);
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
#Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],
#NumToStr(고점[1,1],2));
#Text_SetStyle(Text1, 2, 1);
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],
sDate[eBar],sTime[eBar],저점[1,1]);
#Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],
# NumToStr(저점[1,1],2));
#Text_SetStyle(Text1, 2, 0);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,CYAN);
if T == -1 and T[1] != -1 Then{
TL2 = TL_New(sdate[index-고점[2,2]],stime[index-고점[2,2]],고점[2,1],
sdate[index-고점[1,2]],stime[index-고점[1,2]],고점[2,1]);
TL_SetSize(TL2,3);
TL_SetColor(TL2,BLACK);
TL_Delete(TL3);
TL3 = TL_New(sdate[index-고점[1,2]],stime[index-고점[1,2]],고점[1,1],sdate,stime,고점[1,1]);
TL_SetExtRight(TL3,true);
TL_SetSize(TL3,3);
TL_SetColor(TL3,BLACK);
B = 0;
for cnt = index-고점[1,2] downto 0
{
if B == 0 and C[cnt] < O[cnt] Then
{
B = 1;
S = cnt;
if H[cnt] >= 고점[1,1] Then
B = 2;
}
}
TL_Delete(TL8);
TL_Delete(TL9);
if B >= 1 Then{
TL8 = TL_New(sdate[S+1],stime[S+1],O[S],Sdate,stime,O[S]);
TL_SetExtRight(TL8,true);
TL_SetColor(TL8,BLUE);
}
if B == 2 Then{
TL9 = TL_New(sdate[S+1],stime[S+1],O[S],Sdate,stime,O[S]);
TL_SetExtRight(TL9,true);
TL_SetColor(TL9,BLUE);
}
}
if T == 1 and T[1] != 1 Then{
TL4 = TL_New(sdate[index-저점[2,2]],STime[index-저점[2,2]],저점[2,1],
sdate[index-저점[1,2]],stime[index-저점[1,2]],저점[2,1]);
TL_SetSize(TL4,3);
TL_SetColor(TL4,BLACK);
TL_Delete(TL5);
TL5= TL_New(sdate[index-저점[1,2]],sTime[index-저점[1,2]],저점[1,1],sdate,stime,저점[1,1]);
TL_SetExtRight(TL5,true);
TL_SetSize(TL5,3);
TL_SetColor(TL5,BLACK);
B = 0;
for cnt = index-저점[1,2] downto 0
{
if B == 0 and C[cnt] > O[cnt] Then
{
B = 1;
S = cnt;
if L[cnt] <= 저점[1,1] Then
B = 2;
}
}
TL_Delete(TL6);
TL_Delete(TL7);
if B >= 1 Then{
TL6 = TL_New(sdate[S+1],stime[S+1],O[S],Sdate,stime,O[S]);
TL_SetExtRight(TL6,true);
TL_SetColor(TL6,RED);
}
if B == 2 Then{
TL7 = TL_New(sdate[S+1],stime[S+1],L[S],Sdate,stime,L[S]);
TL_SetExtRight(TL7,true);
TL_SetColor(TL7,RED);
}
}
if T == 1 and B == 0 and C > O Then{
B = 1;
TL6 = TL_New(sdate[1],stime[1],O,Sdate,stime,O);
TL_SetExtRight(TL6,true);
TL_SetColor(TL6,RED);
if L <= 저점[1,1] Then{
TL7 = TL_New(sdate[S+1],stime[S+1],L[S],Sdate,stime,L[S]);
TL_SetExtRight(TL7,true);
TL_SetColor(TL7,RED);
}
}
if T == -1 and B == 0 and C < O Then{
B = 1;
TL8 = TL_New(sdate[1],stime[1],O,Sdate,stime,O);
TL_SetExtRight(TL8,true);
TL_SetColor(TL8,blue);
if H >= 고점[1,1] Then{
TL9 = TL_New(sdate[1],stime[1],H,Sdate,stime,L);
TL_SetExtRight(TL9,true);
TL_SetColor(TL9,RED);
}
}
2018-03-09
273
글번호 117271
답변완료
현재가 - 전일중간값 Text
안녕하세요
text 작성 문의드립니다.
연결선물 분봉에서
다음 수식은 '봉완성기준 당일중간값 - 전일중간값'의 text 수식입니다.
Tx1 = Text_New(D1,T1,(HH1+LL1)/2,NumToStr((HH1+LL1)/2,3)+" /"+" 전일비("+NumToStr(((HH+LL)-(HH1+LL1))/2,3)+")");
이를 '봉완성기준 분봉종가 - 전일중간값'으로 수정하려고 하는데
다음과 같이 수정하니까 이상한 수치가 나옵니다.
어디가 잘못된 것인지 부탁드립니다.
Tx1 = Text_New(D1,T1,(HH1+LL1)/2,NumToStr((HH1+LL1)/2,3)+" /"+" 전일비("+NumToStr((Close-(HH1+LL1))/2,3)+")");
감사합니다 !!
2018-03-09
266
글번호 117270
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
코딩 부탁드립니다.
'장시작후 3개봉까지의 봉 중에 n길이 이상의 봉이 나타났을 때'
2.
코딩 변환 부탁드립니다.
Inputs:
ReferenceAvgLen( 20 ),
TargetAvgLen( 10 ) ;
variables:
Reference_SMA( 0, data2 ),
Reference_Diff( 0, data2 ),
Reference_Vol( 0, data2 ),
Target_SMA( 0 ),
Target_Diff( 0 ),
Target_Vol( 0 ) ;
Reference_SMA= Average(Close data2, ReferenceAvgLen) data2 ;
Reference_Diff = close data2 - Reference_SMA ;
Reference_Vol = Reference_Diff/(2 * StandardDev( Reference_
SMA,ReferenceAvgLen,2));
if Reference_Vol > 1 and close > Average( close, TargetAvgLen)
then
buy next bar at market ;
if Reference_Vol < -1 and (close - Average(Close,TargetAvgLen))
/(2*StdDev( Average(Close, TargetAvgLen),TargetAvgLen)) < 1
then
sell next bar at market ;
Inputs:
ReferenceAvgLen( 20 ),
TargetAvgLen( 10 ) ;
variables:
Reference_SMA( 0, data2 ),
Reference_Diff( 0, data2 ),
Reference_Vol( 0, data2 ) ;
Reference_SMA= Average(Close data2, ReferenceAvgLen) data2 ;
Reference_Diff = close data2 - Reference_SMA ;
Reference_Vol = Reference_Diff/(2 * StandardDev( Reference_
SMA,ReferenceAvgLen,2));
PLOT1(Reference_Vol,”RefVol”);
Plot2(1);
Plot3(-1);
3. 56993 재질문 답변 부탁드립니다.
2018-03-09
262
글번호 117256
답변완료
수식변경
아래의 수식을 변경부탁드립니다.
늘 감사드립니다.
중심=tema(c,중심선);
이평=tema(c,이평선);
중심
중심=tema(c,중심선);
이평=tema(c,이평선);
대칭=중심*2-이평;
이격=이평-중심;
중심+이격*(비율/100)
중심=tema(c,중심선);
이평=tema(c,이평선);
이격=이평-중심;
중심-이격*(비율/100)
2018-03-09
291
글번호 117255
답변완료
전일비 대비 미결증감 수식 문의
input : period1(0);
plot1(period1,"기준선");
if dayoi(0)-dayoi(1) > 0 Then
plot2(dayoi(0)-dayoi(1),">0");
Else
plot3(dayoi(0)-dayoi(1),"<0");
------------------
위의 미결제증감 수식을 사용하고 있습니다.
그런데 오늘 같은 날 "지표"의 미결제증감 수치와 "현재가" 미결제증감 수치가 다르네요
아마도 어제가 만기일이라서 지표상에서 전일미결제를 0으로 처리하고 계산되는 것 같아요
현재가에는 전일미결제가 225,157로 되어있네요
만기일 다음에도 지표값이 현재가창 값과 같게 하고 싶은데 할 수 있을까요?
2018-03-09
259
글번호 117251
답변완료
함수변환 요청
안녕하세요?
함수변환 요청드립니다.
아래는 시그널메이커(한국금융IT社)에서 사용했던 전략입니다.
예스트레이더(한국투자증권)에서 사용할 수 있도록 함수 변환요청드립니다.
-매수: 60분봉 기준으로 60분봉 종가가 볼린저밴드를 하향 돌파하면 익봉 시가에 매수진입
-매수청산: 현재가가 20일이평선 터치시 즉시 매수청산
-매도: 60분봉 기준으로 60분봉 종가가 볼린져밴드를 상향 돌파하면 익봉 시가에 매도진입
-매도청산: 현재가가 20일이평선 터치시 즉시 매도청산
Params : bolPeriod(20), bolSTD(2);
Vars : SP(0);
Vars : SellPrice(0), BuyPrice(0);
Vars : bolMid(0), bolUP(0), bolDN(0);
SP = SignalPosition;
bolMid = AvgFast(C, bolPeriod);
bolUp = bolMid + bolSTD * StandardDev(C, bolPeriod, 1);
bolDn = bolMid - bolSTD * StandardDev(C, bolPeriod, 1);
If CrossUp(C, bolUP) Then SellPrice = C;
If CrossDown(C, bolDN) Then BuyPrice = C;
IF SellPrice > 0 And BuyPrice > 0 Then
Begin
If SP = 0 Then
Begin
If C > bolUP Then Sell("S", Atstop, SellPrice);
If C < bolDN Then Buy("B", Atstop, BuyPrice);
End;
End;
If SP = -1 And C > bolMid Then ExitShort("EXS", Atlimit, bolMid);
If SP = 1 And C < bolMid Then ExitLong("EXL", Atlimit, bolMid);
2018-03-09
303
글번호 117250