커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1536
글번호 230811
답변완료
함수요청
안녕하세요?
아래 글번호 82039번 재질문입니다.
시스템에서 종가청산이 가능하지 않는다면 혹 시가청산은 가능한지요?
그래서 일봉차트에 적용해서 첫봉에 적용하는 것으로 시스템 구현이 가능할련지요?
가령 매주 월요일이 일봉상 캔들이 상승 양봉이면 화요일 시초가에 매수 진입 목요일 시가에 청산 이렇게요
2023-05-12
964
글번호 168916
답변완료
검색결과에 대한 질문
5/8일 질문한 내용에 대한 답을 주셨는데 ..
var1 = ma(C,20);
var2 = ma(C,60);
var3 = ma(C,120);
if highest(max(C,O),30) <= lowest(min(C,O),30)*1.25 and
max(var1,Var2,Var3) <= min(var1,Var2,Var3)*1.07 Then
Find(1);
그런데 이수식으로 검색을 하면 30거래일중 주가 변동폭이 50%도 넘는 종목도 검색되고
있습니다. 주가 변동폭이 작은 종목이 이평이 밀집되었을때 검색되는 수식을 원하는데
결과는 다르네요. 어떻게 수정해야 되나요?
2023-05-12
1296
글번호 168913
답변완료
변경 부탁드립니다.
안녕하세요.항상도와주신데 감사드립니다.
라인하나로보기위함입니다.
수식1:M15=Eavg(c,15);
M40=Eavg(c,40);
M50=Eavg(c,50);
조건1=crossup(M15,M40);
A1=valuewhen(1,조건1(1),L(1));
매수라인=A1-(틱단위*갭);
조건2=crossdown(M15,M40);
A2=valuewhen(1,조건2(1),H(1));
매도라인=A2+(틱단위*갭);
if(M15(1)>M40(1),매수라인,매도라인)
조건설정:틱단위(0.5)
갭:10
라인색상:적색
2023-05-12
1327
글번호 168911
답변완료
부탁드립니다.
안녕하세요.
키움의지표수식입니다. 변경부탁드립니다.
1번
수식이름:STO_RSI
수식1:((RSI(R기간)-lowest(RSI(R기간),S기간))/(highest(RSI(R기간),S기간)-
(lowest(RSI(R기간),S기간))))*-1
조건설정:R기간값13
S기간값10
시그날 3
과열:-0.2
침체:-0.8
2번
수식이름:이평이격OSC(일목균형표)
수식4:ma(c,기간1,종류)-ma(c,기간2,종류)
수식5:ma(c,기간2,종류)-ma(c,기간1,종류)
조건설정:기간1(5)
기간2(60)
종류(단순)
구름영역채우기
2023-05-12
1232
글번호 168908
답변완료
문의 드립니다1
안녕하세요!
제가 아래수식을 활용코자하는 목적은...
세로선이 발생하기전에 이 세로선의 가격에 미리 가로선이 N봉전에 발생하는것을 보고자함이었습니다
헌데 며칠간 실시간에서 검증해본결과 오히려 세로선이 발생후(N봉후)에 이 가로선이 나중에 발생이됩니다
+ - 어떤것을 적용해도 이치는 똑같습니다
저의 의도대로 수정이 가능하다면 다시한번 부탁드리겠습니다
여러번 번거롭게 해드려서 죄송합니다
------------------------------------------------------------------------------
input : 굵기1(5),굵기2(5),굵기3(5),굵기4(5);
var : cond11(false,data2),cond21(false,data2);
var : cond12(false,data2),cond22(false,data2);
var : TL1(0,Data1),TL2(0,Data1),TL3(0,Data1),TL4(0,Data1);
if Bdate != Bdate[1] Then
{
value1 = 0;
value2 = 0;
value3 = 0;
value4 = 0;
}
cond11 = data3(highD(0)) >= data2(highD(0)-PriceScale*1);
cond21 = data2(lowD(0)) <= data3(lowD(0)+PriceScale*1);
cond11 = data2(highD(0)) >= data3(highD(0)-PriceScale*1);
cond21 = data3(lowD(0)) <= data2(lowD(0)+PriceScale*1);
if data2(sTime >= 90300 and Cond11 == true and cond11[1] == false) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL1 = TL_New(sDate,stime,0,sDate,sTime,99999999);
TL_SetColor(TL1,White);
TL_SetSize(TL1,굵기1);
value1 = data3(highD(0));
}
if data2(sTime >= 90300 and Cond21 == true and cond21[1] == false) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL2 = TL_New(sDate,stime,0,sDate,sTime,99999999);
TL_SetColor(TL2,black);
TL_SetSize(TL2,굵기2);
value2 = data3(lowD(0));
}
cond12 = data3(LowD(0)) <= data2(lowD(0)+PriceScale*1);
cond22 = data2(highD(0)) >= data3(highD(0)-PriceScale*1);
cond12 = data2(LowD(0)) <= data3(lowD(0)+PriceScale*1);
cond22 = data3(highD(0)) >= data2(highD(0)-PriceScale*1);
if data2(sTime >= 90300 and Cond12 == true and cond12[1] == false) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL3 = TL_New(sDate,stime,0,sDate,sTime,99999999);
TL_SetColor(TL3,White);
TL_SetSize(TL3,굵기3);
value3 = data3(LowD(0));
}
if data2(sTime >= 90300 and Cond22 == true and cond22[1] == false) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL4 = TL_New(sDate,stime,0,sDate,sTime,99999999);
TL_SetColor(TL4,black);
TL_SetSize(TL4,굵기4);
value4 = data3(highD(0));
}
if value1 > 0 Then
Plot1(value1);
Else
noplot(1);
if value2 > 0 Then
Plot2(value2);
Else
noplot(2);
if value3 > 0 Then
Plot3(value3);
Else
noplot(3);
if value4 > 0 Then
Plot4(value4);
Else
noplot(4);
FixPlotShift(1,-10);
FixPlotShift(2,-10);
FixPlotShift(3,-10);
FixPlotShift(4,-10);
2023-05-12
1376
글번호 168901
답변완료
트렌드 크기
inputs: ATRLength(15), Strength(18), 폭(0.2);
input : 쌍봉상(1),쌍봉하(2),쌍바닥상(2),쌍바닥하(2);
var : STrend(0),ATRv(0), avgv(0), dnv(0), upv(0), trend(1), flag(0), flagh(0), ST(0),hl(0);
var : idx(0),hh(0),ll(0),EP1(0),EP2(0);
var : ema1(0),ema2(0),ema3(0),h1(0),l1(0),h2(0),h3(0),l2(0),l3(0),h4(0),l4(0);
var :tx(0),tl(0);
Ep1 = 2/(ATRLength+1);
Ep2 = 2/(Strength+1);
idx = idx+1;
if idx < ATRLength Then
{
hh = DayHigh;
ll = daylow;
}
Else
{
hh = Highest(High, ATRLength);
ll = Lowest(Low, ATRLength);
}
if idx < Strength Then
{
h1 = DayHigh;
l1 = daylow;
}
Else
{
h1 = Highest(High, Strength);
l1 = Lowest(Low, Strength);
}
hl = hh-ll;
if idx == 1 Then
{
ema1 = hl;
ema2 = h;
ema3 = l;
}
Else
{
ema1 = hl * EP1 + ema1 * (1-EP1);
ema2 = h * EP2 + ema2 * (1-EP2);
ema3 = l * EP2 + ema3 * (1-EP2);
}
atrv = ema1;
avgv = (ema2+ema3)/2;
upv = avgv + ATRv;
dnv = avgv - ATRv;
if idx >= 2 then
{
if c > upv[1] and c > h1[1] then trend = 1;
else if c < dnv[1] and c < l1[1] then trend = -1;
if trend < 0 and trend[1] > 0 then flag=1; else flag=0;
if trend > 0 and trend[1] < 0 then flagh = 1; else flagh = 0;
if trend > 0 and dnv < dnv[1] then dnv=dnv[1];
if trend < 0 and upv > upv[1] then upv=upv[1];
if flag == 1 then upv = avgv + ATRv;
if flagh == 1 then dnv = avgv - ATRv;
if trend == 1 then ST = dnv; else ST = upv;
STrend = trend;
}
Plot1(st,"SuperTrend",iff(strend == 1,red,blue));
if Trend != Trend[1] Then
{
if Trend == 1 Then
{
var1 = h;
var2 = var1[1];
tx = Text_New_Self(sDate,sTime, st,"●");
Text_SetColor(tx,Red);
Text_SetSize(tx,20);
Text_SetStyle(tx,2,2);
if Var4 > 0 and var3 <= Var4+PriceScale*쌍바닥상 and var3 >= Var4-PriceScale*쌍바닥하 Then
{
tx = Text_New_Self(sDate,sTime, st,"●");
Text_SetColor(tx,Magenta);
Text_SetSize(tx,25);
Text_SetStyle(tx,2,2);
}
}
Else
{
Var3 = l;
Var4 = Var3[1];
tx = Text_New_Self(sDate,sTime, st,"●");
Text_SetColor(tx,Blue);
Text_SetSize(tx,20);
Text_SetStyle(tx,2,2);
if Var2 > 0 and var1 <= Var2+PriceScale*쌍봉상 and var1 >= Var2-PriceScale*쌍봉하 Then
{
tx = Text_New_Self(sDate,sTime, st,"●");
Text_SetColor(tx,Cyan);
Text_SetSize(tx,25);
Text_SetStyle(tx,2,2);
}
}
}
Else
{
if Trend == 1 Then
{
if h > var1 Then
var1 = h;
}
if Trend == -1 Then
{
if l < var3 Then
var3 = l;
}
}
if Trend != Trend[1] Then
{
if Trend == 1 Then
{
h2 = h;
h3 = h2[1];
h4 = h3[1];
if L4 > 0 and
max(L2,l3,l4) <= min(L2,l3,l4)+폭 Then
{
tx = Text_New_Self(sDate,sTime, st,"●");
Text_SetColor(tx,Black);
Text_SetSize(tx,20);
Text_SetStyle(tx,2,2);
}
}
Else
{
L2 = l;
l3 = l2[1];
l4 = l3[1];
}
}
Else
{
if Trend == 1 Then
{
if h > h2 Then
h2 = h;
}
if Trend == -1 Then
{
if l < L2 Then
L2 = l;
}
}
상승 트렌드가 생기면 트렌드 상단에, 크기를 트렌드를 따라 올라가며 red로 표기.
하락 트렌드로 바뀌면 하단을 따라 내려가며 크기를 blue로 표기.
표기는 마자막 상단 하나, 하단 하나만 남기고 이전은 삭제. 감사합니다.
2023-05-12
1648
글번호 168900
답변완료
basis 하이로우
data2 k200선물
data3 k200지수
bs =(data2(c)-data3(c));
입력한 시간사이에 발생한 bs값의 하이로우를 계산합니다.
진입은 입력한 마지막시간 다음부터 가능합니다.
10시와 14시면 14시후부터 진입
if 10시 에서 14시 and bs로우값 하향돌파 then
sell( );
수식 부탁드립니다.
2023-06-22
1328
글번호 168899
답변완료
박스 중앙선
input : Period(250);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0);
var : TL(0),TL1(0),TX(0),tl4(0),tl5(0),tl9(0);
var : box(0),box1(0),txx(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Plot1(value12);
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];
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
box = box_new(date11,time11,Value11,date12,time12,Value12);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
}
if value12 > value11-0.7 Then
{
Box_SetColor(box,LCyan);
Box_SetFill(box,true,20);
}
else if value12 <= value11-0.7 and value12 > value11-1 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,50);
}
else if value12 <= value11-1 and value12 > value11-1.7 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,40);
}
else
{
Box_SetColor(box,Yellow);
Box_SetFill(box,true,30);
}
}
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];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
box = box_new(date11,time11,Value11,date12,time12,Value12);
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date32 = date[0];
time32 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
}
if Value12 >= value11+1 Then
{
Box_SetColor(box,Magenta);
Box_SetFill(box,true,20);
}
Else
{
Box_SetColor(box,Orange);
Box_SetFill(box,true,20);
}
}
박스의 상하 정중앙에(50%), 커짐에 따라 상하로 이동하는 "수평" 라인 추가. 감사합니다.
2023-05-12
1754
글번호 168898
답변완료
청산이 되지않아요 수식검토 부탁드립니다.
수고많으십니다.
프로그램을 다시접속해서 그런지 디버킹을 정상적으로 됩니다.
if Date==20230512 and sTime==033500 Then
{
Buy("매수",AtMarket);
}
//Data1============================================= 나스닥 호가 0.25 틱가치 5
var1=c-EntryPrice; //지수차이를 나타냄
Var2=var1/0.25;
Var3=Var2 * 5;
if Var3 == 200.00 or Var3 == -200.00 Then
{
ExitLong("청산"); //매수포지션 청산
}
MessageLog("지수차이 %.2f",Var1);
MessageLog("틱수 %.2f",Var2);
MessageLog("손익금액 %.2f",Var3);
1분봉에 자동주문 적용하니 033600에 정상적으로 매수 되었습니다.
수익200달러이거라 손실200달러일때 청산하도록 코딩을 한것 같은데
청산이 되지 않았습니다. 챠트상 잠시 청산신호는 나왔다가 사라졌습니다.
2023-05-12
1511
글번호 168896