커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2114
글번호 230811
답변완료
종목검색식 부탁드립니다
일봉상 20일 이동평균선 쌍바닥 종목검색식을 알려 주시면 감사하겠습니다 쌍바닥후 5이평위에 주가가 위치에 있는 종목만 검색이 되도록 부탁드립니다
2022-09-18
749
글번호 162271
회원 님에 의해서 삭제되었습니다.
2022-09-18
12
글번호 162270
답변완료
문의 드립니다!
안녕하세요!
일전에 작성해주신 수식 많은 도움이 될것같습니다
다시한번 감사드립니다!!
아래수식과 이평선이 동시에 만족될때(일치할때)의 수식도 한번더 부탁드립니다
이평선은 5일선 20일선 60일선을 예시로해서 3개의 선이 발생토록 부탁드립니다
---------------------------------------------------------
input : n(2);
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
if C > Plot1 Then
plot2(999999999,"라인1");
Else
plot2(0,"라인1");
var1 = IFf(Trend == 1,upv,dnv);
if CountIf(trend != 1,2) == 2 and
H < var1-PriceScale*n and H[1] >= var1[1]-PriceScale*n Then
plot3(999999999,"라인2");
Else
plot3(0,"라인2");
if CountIf(trend == 1,2) == 2 and
L > var1+PriceScale*n and L[1] <= var1[1]+PriceScale*n Then
plot4(999999999,"라인3");
Else
plot4(0,"라인3");
2022-09-18
1031
글번호 162269
답변완료
문의드립니다.
전일 진입하였고 진입명칭이 A이면 var1==1 을 나타내는 조건식 부탁드립니다.
(현재 보유 포지션에 관계 없습니다.)
2022-09-17
896
글번호 162268
답변완료
감사 합니다
1번지표
input : P1(10),Period3(20);
var : LT(0),HT(0),NewH(0),NewL(0);
var : T(0),Z(false),SL(0);
LT=lowest(L,P1);
HT=highest(H,P1);
if H > HT[1] Then
NewH = H;
if L < LT[1] Then
NewL = L;
T= ema(ema(ema(c,period3),Period3),Period3);
Z=(NewL==low[1]&&NewL<low) or (NewH== high[1] &&NewH>high);
if Z == true Then
SL = T;
if SL != SL[1] Then
var1 = T;
plot1(var1);
2번지표
input : P1(10),Period3(60);
var : LT(0),HT(0),NewH(0),NewL(0);
var : T(0),Z(false),SL(0);
LT=lowest(L,P1);
HT=highest(H,P1);
if H > HT[1] Then
NewH = H;
if L < LT[1] Then
NewL = L;
T= ema(ema(ema(c,period3),Period3),Period3);
Z=(NewL==low[1]&&NewL<low) or (NewH== high[1] &&NewH>high);
if Z == true Then
SL = T;
if SL != SL[1] Then
var1 = T;
plot1(var1);
3번지표
input : Period(20);
var : cnt(0);
var : sum(0),mav(0);
Array : nPreWC[99](0);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then
{
for cnt = 1 to 99
{
nPreWC[cnt] = nPreWC[cnt-1][1];
}
}
nPreWC[0] = C;
if nPreWC[Period-1] > 0 Then
{
sum = 0;
for cnt = 0 to Period-1
{
sum = sum+nPreWC[cnt];
}
mav = sum/Period;
plot1(mav);
}
## 1번 2번 3번 지표를 하나로 부탁 드립니다
## 3분용 으로두 부탁드립니다
2022-09-17
1196
글번호 162267
외국인 님에 의해서 삭제되었습니다.
2022-09-17
0
글번호 162266
외국인 님에 의해서 삭제되었습니다.
2022-09-17
0
글번호 162265
답변완료
추세선
Input:length(3),선굵기(1);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),처리구분(""),
TL_Val1(0),TL_Val2(0);
var : T(0),LTL1(0);
var : HTL1(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);
}
if T[1] != 1 Then{
TL_SetExtRight(LTL1,False);
TL_Delete(LTL1);
LTL1 = TL_New(sDate[index-저점[2,2]],sTime[index-저점[2,2]],저점[2,1],sDate[index-저점[1,2]],sTime[index-저점[1,2]],저점[1,1]);
//
TL_SetExtRight(LTL1,true);
}
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
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);
}
if T[1] != -1 then{
TL_SetExtRight(HTL1,false);
TL_Delete(HTL1);
HTL1 = TL_New(sDate[index-고점[2,2]],sTime[index-고점[2,2]],고점[2,1],sDate[index-고점[1,2]],sTime[index-고점[1,2]],고점[1,1]);
TL_SetExtRight(HTL1,true);
}
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,선굵기);
TL_SetColor(TL1,BLACK);
TL_SetColor(LTL1,green);
TL_SetColor(HTL1,red);
TL_SetSize(LTL1,선굵기);
TL_SetSize(HTL1,선굵기);
Input:blength(20);
Var:bj(0),blastHiVal(0),blasbTLoVal(0),sbBar(0),ebBar(0),bTL1(0),b처리구분(""),
bTL_Val1(0),bTL_Val2(0);
var : bT(0),LbTL1(0);
var : HbTL1(0);
Array:b고점[10,2](0),b저점[10,2](0);
b처리구분 = "";
If Highest(H,blength) == H and blastHiVal <> H and Lowest(L,blength) == L and blasbTLoVal <> L Then
{ If b저점[1,1] > L Then b처리구분 = "b저점처리";
If b고점[1,1] < H Then b처리구분 = "b고점처리";
}
Else If Highest(H,blength) == H and blastHiVal <> H Then b처리구분 = "b고점처리";
Else If Lowest(L,blength) == L and blasbTLoVal <> L Then b처리구분 = "b저점처리";
If b처리구분 == "b고점처리" Then
{
bT = 1;
blastHiVal = H;
If b고점[1,2] < b저점[1,2] Then
{
For bj = 10 DownTo 2
{
b고점[bj,1] = b고점[bj-1,1];
b고점[bj,2] = b고점[bj-1,2];
}
}
If b고점[1,2] < b저점[1,2] or b고점[1,1] < H Then
{
b고점[1,1] = H;
b고점[1,2] = Index;
sbBar = Index - b저점[1,2];
ebBar = 0;
If TL_GetBeginDate(bTL1) == sDate[sbBar] and TL_GetBeginTime(bTL1) == sTime[sbBar] Then
{
TL_Delete(bTL1);
}
if bT[1] != 1 Then{
TL_SetExtRight(LbTL1,False);
TL_Delete(LbTL1);
LbTL1 = TL_New(sDate[index-b저점[2,2]],sTime[index-b저점[2,2]],b저점[2,1],sDate[index-b저점[1,2]],sTime[index-b저점[1,2]],b저점[1,1]);
//
TL_SetExtRight(LbTL1,true);
}
If b고점[3,1] < b고점[2,1] and b고점[2,1] > b고점[1,1] and b저점[2,1] < b저점[1,1] Then
{
sbBar = Index - b저점[2,2];
ebBar = Index - b저점[1,2];
}
}
}
If b처리구분 == "b저점처리" Then
{
bT = -1;
blasbTLoVal = L;
If b저점[1,2] < b고점[1,2] Then
{
For bj = 10 DownTo 2
{
b저점[bj,1] = b저점[bj-1,1];
b저점[bj,2] = b저점[bj-1,2];
}
}
If b저점[1,2] < b고점[1,2] or b저점[1,1] > L Then
{
b저점[1,1] = L;
b저점[1,2] = Index;
sbBar = Index - b고점[1,2];
ebBar = 0;
If TL_GetBeginDate(bTL1) == sDate[sbBar] and TL_GetBeginTime(bTL1) == sTime[sbBar] Then
{
TL_Delete(bTL1);
}
if bT[1] != -1 then{
TL_SetExtRight(HbTL1,false);
TL_Delete(HbTL1);
HbTL1 = TL_New(sDate[index-b고점[2,2]],sTime[index-b고점[2,2]],b고점[2,1],sDate[index-b고점[1,2]],sTime[index-b고점[1,2]],b고점[1,1]);
TL_SetExtRight(HbTL1,true);
}
If b저점[2,1] < b저점[1,1] and b저점[2,1] < b저점[3,1] and b고점[2,1] > b고점[1,1] Then
{
sbBar = Index - b고점[2,2];
ebBar = Index - b고점[1,2];
}
}
}
TL_SetSize(bTL1,선굵기);
TL_SetColor(bTL1,BLACK);
TL_SetColor(LbTL1,darkgreen);
TL_SetColor(HbTL1,darkred);
TL_SetSize(LbTL1,선굵기);
TL_SetSize(HbTL1,선굵기);
2022-09-17
1478
글번호 162264
답변완료
변수저장 유지
안녕하세요~
mp = MarketPosition;
f mp[1] == 0 && mp == 1 Then enP=100;
포지션 진입 기간동안 상기 변수 100 값을 유지하려면 아래 수식이 필요한가요?
If mp[1] == 1 && mp == 1 Then enP=enP[1];
2022-09-17
1420
글번호 162263