커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8052
글번호 230811
답변완료
수식문의
61388 답변 재문의 드립니다.
답변 주신 내용으로 확인하니 추세선뿐만 아니라 매수/매도 신호마저 나오지 않습니다.
아래와 같이 조건문에 0이 빠져 나갈수 없도록 하면 되기는 하는데..
추세선이 제대로 그어지지가 않네요..
번거로우시겠지만 다시 한번 검토 부탁드립니다.
감사합니다.
input:Period(60),Multiplier(2);
var:dAtr(0),UpperLevel(0),LowerLevel(0),Direction(0);
input : P(5),P2(60);
var : T(0),TL1(0),TL2(0);
var : HD(0),HT(0),HH(0),HD1(0),HT1(0),HH1(0);
var : LD(0),LT(0),LL(0),LD1(0),LT1(0),LL1(0);
dAtr=ATR(Period);
UpperLevel=(High+Low)/2+Multiplier*dAtr;
LowerLevel=(High+Low)/2-Multiplier*dAtr;
Direction = Direction[1];
if close >= UpperLevel[1] then Direction = 1; //수정
if close <= LowerLevel[1] then Direction = -1; //수정
#매수/매도
if Direction > 0 then
{
LowerLevel = Max(LowerLevel,LowerLevel[1]);
Buy("매수");
T = 1;
HD = sdate;
HT = stime;
HH = H;
HD1 = HD[1];
HT1 = HT[1];
HH1 = HH[1];
if LL1 > 0 then
{
TL_Delete(TL1);
TL1 = TL_New(LD1,LT1,LL1,LD,LT,LL);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,RED);
}
}
else
{
UpperLevel = Min(UpperLevel,UpperLevel[1]);
Sell("매도");
T = -1;
LD = sdate;
LT = stime;
LL = L;
LD1 = LD[1];
LT1 = LT[1];
LL1 = LL[1];
if HH1 > 0 then
{
TL_Delete(TL2);
TL2 = TL_New(HD1,HT1,HH1,HD,HT,HH);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,BLUE);
}
}
if T == 1 and H > HH Then
{
HH = H;
HD = Sdate;
HT = stime;
}
if T == -1 and L < LL Then
{
LL = L;
LD = Sdate;
LT = stime;
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식문의
>
안녕하세요
예스스탁입니다.
진입의 조건이 Direction이 0보다 크거나 작을때입니다.
Direction은 1 아니면 -1값만 가지므로 해당 부분도 크로스로 정의하시면 됩니다.
1값으로 변하는 첫봉에 매수진입, -1로 변경되는 첫봉에 매도진입입니다.
input:Period(60),Multiplier(2);
var:dAtr(0),UpperLevel(0),LowerLevel(0),Direction(0);
input : P(5),P2(60);
var : T(0),TL1(0),TL2(0);
var : HD(0),HT(0),HH(0),HD1(0),HT1(0),HH1(0);
var : LD(0),LT(0),LL(0),LD1(0),LT1(0),LL1(0);
dAtr=ATR(Period);
UpperLevel=(High+Low)/2+Multiplier*dAtr;
LowerLevel=(High+Low)/2-Multiplier*dAtr;
Direction = Direction[1];
if close > UpperLevel[1] then Direction = 1;
if close < LowerLevel[1] then Direction = -1;
#매수/매도
if crossup(direction,0) then
{
LowerLevel = Max(LowerLevel,LowerLevel[1]);
Buy("매수");
T = 1;
HD = sdate;
HT = stime;
HH = H;
HD1 = HD[1];
HT1 = HT[1];
HH1 = HH[1];
if LL1 > 0 then
{
TL_Delete(TL1);
TL1 = TL_New(LD1,LT1,LL1,LD,LT,LL);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,RED);
}
if T == 1 and H > HH Then
{
HH = H;
HD = Sdate;
HT = stime;
}
if T == -1 and L < LL Then
{
LL = L;
LD = Sdate;
LT = stime;
}
}
if crossdown(direction,0) then
{
UpperLevel = Min(UpperLevel,UpperLevel[1]);
Sell("매도");
T = -1;
LD = sdate;
LT = stime;
LL = L;
LD1 = LD[1];
LT1 = LT[1];
LL1 = LL[1];
if HH1 > 0 then
{
TL_Delete(TL2);
TL2 = TL_New(HD1,HT1,HH1,HD,HT,HH);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,BLUE);
}
if T == 1 and H > HH Then
{
HH = H;
HD = Sdate;
HT = stime;
}
if T == -1 and L < LL Then
{
LL = L;
LD = Sdate;
}
}
즐거운 하루되세요
> 프리윌 님이 쓴 글입니다.
> 제목 : 수식문의
> 61309번 답변에 대해 재문의 드립니다.
-----------------------------------------------------------------------------------
답변 주신 부분을 적용해보았습니다.
시스템 신호의 스위칭 방식이 CrossUp/Down 방식이 아니라 아래와 같을 경우 direction이 "0"인 경우가 있어서인지 제대로 추세라인이 그려지지 않습니다.
아래식과 같이 이럴경우 한번 검토 부탁드립니다.
답변 감사드립니다.
input:Period(60),Multiplier(2);
var:dAtr(0),UpperLevel(0),LowerLevel(0),Direction(0);
input : P(5),P2(60);
var : T(0),TL1(0),TL2(0);
var : HD(0),HT(0),HH(0),HD1(0),HT1(0),HH1(0);
var : LD(0),LT(0),LL(0),LD1(0),LT1(0),LL1(0);
dAtr=ATR(Period);
UpperLevel=(High+Low)/2+Multiplier*dAtr;
LowerLevel=(High+Low)/2-Multiplier*dAtr;
Direction = Direction[1];
if close > UpperLevel[1] then Direction = 1;
if close < LowerLevel[1] then Direction = -1;
#매수/매도
if Direction > 0 then
{
LowerLevel = Max(LowerLevel,LowerLevel[1]);
Buy("매수");
T = 1;
HD = sdate;
HT = stime;
HH = H;
HD1 = HD[1];
HT1 = HT[1];
HH1 = HH[1];
if LL1 > 0 then
{
TL_Delete(TL1);
TL1 = TL_New(LD1,LT1,LL1,LD,LT,LL);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,RED);
}
if T == 1 and H > HH Then
{
HH = H;
HD = Sdate;
HT = stime;
}
if T == -1 and L < LL Then
{
LL = L;
LD = Sdate;
LT = stime;
}
}
else
{
UpperLevel = Min(UpperLevel,UpperLevel[1]);
Sell("매도");
T = -1;
LD = sdate;
LT = stime;
LL = L;
LD1 = LD[1];
LT1 = LT[1];
LL1 = LL[1];
if HH1 > 0 then
{
TL_Delete(TL2);
TL2 = TL_New(HD1,HT1,HH1,HD,HT,HH);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,BLUE);
}
if T == 1 and H > HH Then
{
HH = H;
HD = Sdate;
HT = stime;
}
if T == -1 and L < LL Then
{
LL = L;
LD = Sdate;
}
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 지표문의
> 안녕하세요
예스스탁입니다.
고점과 저점은 자의적인 판단이므로 해당 내용에 대해 명확한 내용이 필요합니다.
올려주신 그림으로 보아 신호가 매수와 매도진입을 번갈아하는 스위칭 수식이고
고점은 매수구간에서 최고점, 저점은 매도구간에서 최저점인것 같습니다.
위 내용으로 판단하고 작성해 드립니다.
스위칭 신호는 일반 이평 골드 데드이므로 사용하시는 스위칭 수식에 맞게 변경하시면 됩니다.
input : P(5),P2(60);
var : T(0),TL1(0),TL2(0);
var : HD(0),HT(0),HH(0),HD1(0),HT1(0),HH1(0);
var : LD(0),LT(0),LL(0),LD1(0),LT1(0),LL1(0);
var1 = ma(C,5);
var2 = ma(c,20);
if crossup(var1,var2) Then
{
buy("b");
T = 1;
HD = sdate;
HT = stime;
HH = H;
HD1 = HD[1];
HT1 = HT[1];
HH1 = HH[1];
if LL1 > 0 then
{
TL_Delete(TL1);
TL1 = TL_New(LD1,LT1,LL1,LD,LT,LL);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,RED);
}
}
if CrossDown(var1,var2) Then
{
sell("s");
T = -1;
LD = sdate;
LT = stime;
LL = L;
LD1 = LD[1];
LT1 = LT[1];
LL1 = LL[1];
if HH1 > 0 then
{
TL_Delete(TL2);
TL2 = TL_New(HD1,HT1,HH1,HD,HT,HH);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,BLUE);
}
}
if T == 1 and H > HH Then
{
HH = H;
HD = Sdate;
HT = stime;
}
if T == -1 and L < LL Then
{
LL = L;
LD = Sdate;
LT = stime;
}
즐거운 하루되세요
> 프리윌 님이 쓴 글입니다.
> 제목 : 지표문의
> 첨부한 그림과 같이 가령 매도 시그날이 발생할시 현재 발생한 위치의 직전 전고와 그 이전 매도시그날이 발생한 직전 고점을 연결하는 추세라인을 만들고 싶습니다.
반대로, 매수시그날의 경우는 최근 매수시그날의 직전 저점과 그 이전 매수 시그날이 발생한 직전 저점을 연결한 추세선이 될테고요...
가장 최근의 매수/매도 추세선만 남기고 이전 추세선은 삭제되어야 합니다.
관련 지표 문의 드립니다.
2019-02-21
188
글번호 126435
답변완료
부탁드립니다.
아래는 지그재그(전환비율) 지표를 본 게시판에서 찾아본 수식입니다.
추가희망사항
1.선두께를 변경지정할 수 있도록 부탁드립니다.
2.현재 최종 파동의 피보나치 비율에 따라 피보나치조정대(위아래 확장 포함)를 표시되도록 부탁드립니다.(최종파동에 대한 조정대는 우측으로 확장 파동선과 색깔을 다르게)
3. 2번의 조정대를 최종이 아닌 모든 파동선에 표시하는 수식도 별도로 부탁드립니다.
감사합니다..
==========
Input:chngRate(0.3);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (chngRate/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (chngRate/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then{
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,black);
2019-02-21
425
글번호 126428
회원 님에 의해서 삭제되었습니다.
2019-02-21
11
글번호 126421
답변완료
문의 드립니다
안녕하세요!
일전에 만들어주신 옵션관련 지표 매우 잘 활용하고있습니다 ^^
아래내용으로 한가지만 더 부탁드리겠습니다
옵션의 특정한 지정가격이 국선차트에서 가로선으로 표시될수있으면 좋겠습니다
이 지정가격은 필요에따라 수시로 바꿀수있고 콜 풋을 별도로 표시했으면 합니다
그리고 콜 풋별로 각각 5개정도의 가로선을 표시할수있으면 좋겠습니다
예를들어 콜 행사가 287.50에서 2.5의 자리,
그리고 풋행사가 285.00에서 2.5의 자리등
각각 최대 5개의 가격선을 국선챠트에 미리 표시를하고자함입니다
감사합니다 ^^
2019-02-21
188
글번호 126416
2wnwn 님에 의해서 삭제되었습니다.
2019-02-21
23
글번호 126415
답변완료
수정부탁드립니다
안녕하세요!
지난번에 만들어 주신 이동평균선입니다!
이 이평선을 저가이평과 고가이평으로 각각 하나씩 만들어 주시길 부탁드립니다
감사합니다!
Input : Period1(3),Period2(7),Period3(14),Period4(28),Period5(40),Period6(56),Period7(112),Period8(224),Period9(540);
var : Xma1(0),Xma2(0),Xma3(0),Xma4(0),Xma5(0),Xma6(0),Xma7(0),Xma8(0),Xma9(0);
Xma1 = ema(C,Period1);
Xma2 = ema(C,Period2);
Xma3 = ema(C,Period3);
Xma4 = ema(C,Period4);
Xma5 = ema(C,Period5);
Xma6 = ema(C,Period6);
Xma7 = ema(C,Period7);
Xma8 = ema(C,Period8);
Xma9 = ema(C,Period9);
Plot1(Xma1, "지수이동평균1");
Plot2(Xma2, "지수이동평균2");
Plot3(Xma3, "지수이동평균3");
Plot4(Xma4, "지수이동평균4");
Plot5(Xma5, "지수이동평균5");
Plot6(Xma6, "지수이동평균6");
Plot7(Xma7, "지수이동평균7");
Plot8(Xma8, "지수이동평균8");
Plot9(Xma9, "지수이동평균9");
plot10(0,"하단값");
2019-02-21
224
글번호 126414
회원 님에 의해서 삭제되었습니다.
2019-02-21
12
글번호 126413
답변완료
부탁드립니다.
1. 국내선물챠트에서 매주 마지막 봉 종가가 첫봉 고가보다 높게 끝나면 빨강색으로, 저가보다 낮게 끝나면 파란색으로 구현해 주세요
2. 해외선물챠트에서 매주 마지막 봉 종가가 첫봉 고가보다 높게 끝나면 빨강색으로, 저가보다 낮게 끝나면 파란색으로 구현해 주세요
3. 국내선물챠트에서 매월 마지막 봉 종가가 첫봉 고가보다 높게 끝나면 빨강색으로, 저가보다 낮게 끝나면 파란색으로 구현해 주세요
4. 해외선물챠트에서 매월 마지막 봉 종가가 첫봉 고가보다 높게 끝나면 빨강색으로, 저가보다 낮게 끝나면 파란색으로 구현해 주세요
감사합니다.
2019-02-21
183
글번호 126412
답변완료
부탁합니다
연일 수고가 많습니다
국내선물 분봉에서 주가가 당일시가보다 크고 당일최고거래량캔들의 종가를 돌파하면 매수
주가가 당일시가보다 작고 당일최고거래량캔들의 종가를 이탈하면 매도 부탁드리며
-당일최고거래량 두번째최고거래량 세번째최고거래량종가로 변경할수있게 부탁합니다
2019-02-21
184
글번호 126406