커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4322
글번호 230811
깜피 님에 의해서 삭제되었습니다.
2017-11-18
17
글번호 114293
답변완료
부탁 드립니다,
도움주심에 감사 드립니다.
55436번에서 답변해 주신것을 실행결과
x(100)으로 지정한봉수 이후에만 계산하길 원합니다.
그런데 점을찍는 위치가 그 이전에도 결과가 나타나고 있어
오직 x(100)으로 지정한 위치 이후에만 계산하고
점도 x(100)으로 지정한 위치 이후에만 찍히길 원합니다.
미리 감사 드립니다.
input : Price(1.3), Per(10),N(3),X(100);
var : cnt(0),cnt1(0),cnt2(0),idx(0);
Array : VV[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
}
if index > X then{ //차트전체 X번째 봉부터 계산
#N개값 출력
for cnt1 = 1 to N{
#차트 과거봉 전체 스캔
for cnt2 = 1 to idx{
#Price대비 +- Per%안에 종가가 형성된
if C[cnt2] <= Price*(1+Per/100) and C[cnt2] >= Price*(1-Per/100) and
V[cnt2] > VV[cnt1] and
(cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then{
VV[cnt1] = V[cnt2];
#거래량순 상위 cnt1번째 값추세선 출력
#종가선
TL_Delete(CTL[cnt1]);
CTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],C[cnt2],sdate,stime,C[cnt2]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
#거래량순 상위 cnt1번째 값텍스트 출력
#종가선값
Text_Delete(CTx[cnt1]);
// CTx[cnt1] = Text_New(sdate,stime,C[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(C[cnt2],0));
Text_SetStyle(CTx[cnt1],0,0);
#점출력
Text_Delete(Tx[cnt1]);
Tx[cnt1] = Text_New(sdate[cnt2],stime[cnt2],C[cnt2],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
}
}
}
}
2017-11-18
162
글번호 114292
퀀텀프로 님에 의해서 삭제되었습니다.
2017-11-18
0
글번호 114291
답변완료
또 문의드립니다.
이번것도 종목데이터가 없다는 에러가 나옵니다..
저는 워낙 몰라 어떻게 해야할지 모르겠습니다. 암튼 문제없게 수정 부탁드립니다.
Input:상승률(0.12),하락률(0.12);
Var:j(0),상승(100,data1),하락(-100,data1),양방향(2,data1),색깔(0,data1),파랑(-1,data1),빨강(1,data1),
기준고(0,data1),기준저(0,data1),기준고Bar(0,data1),기준저Bar(0,data1),추세(0,data1),이중파동(0,data1);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0);
Input:상승률D(0.12),하락률D(0.12);
Var:jj(0),상승D(100,data2),하락D(-100,data2),양방향D(2,data2),색깔D(0,data2),파랑D(-1,data2),빨강D(1,data2),
기준고D(0,data2),기준저D(0,data2),기준고BarD(0,data2),기준저BarD(0,data2),추세D(0,data2),이중파동D(0,data2);
Array:고D[20](0,data2),저D[20](0,data2),고BarD[20](0,data2),저BarD[20](0,data2);
#################Data1
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동 > 0 Then
{
이중파동 = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고 <= data1(H) || 기준고 == 0 || IsNaN(기준고) == True Then
{
기준고 = data1(H);
기준고Bar = 0;
}
Else
기준고Bar = 기준고Bar + 1;
If 기준저 >= data1(L) || 기준저 == 0 || IsNaN(기준저) == True Then
{
기준저 = data1(L);
기준저Bar = 0;
}
Else
기준저Bar = 기준저Bar + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고 * (1 - (하락률/100)) > data1(H) && 기준저 * (1 + (상승률/100)) < data1(L) Then
{
추세 = Iff(기준고Bar==기준저Bar,양방향,Iff(기준고Bar>기준저Bar,상승,하락));
}
Else If 기준고 * (1 - (하락률/100)) > data1(H) Then 추세 = 하락;
Else If 기준저 * (1 + (상승률/100)) < data1(L) Then 추세 = 상승;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세[1] == 상승 && 추세 == 하락 Then
{
For j = 18 DownTo 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
기준고 = data1(H);
기준고Bar = 0;
기준저 = data1(L);
기준저Bar = 0;
If 고[2] < 고[1] Then 색깔 = 빨강 ;
If 이중파동[1] > 0 Then 이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 하락 &&
고[1] < 기준고 &&
기준고 * (1 - (하락률/100)) > data1(H) Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = data1(H);
기준고Bar = 0;
기준저 = data1(L);
기준저Bar = 0;
If 저[2] > 저[1] Then 색깔 = 파랑;
If 고[2] < 고[1] Then 색깔 = 빨강;
이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 상승 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = data1(L);
기준저Bar = 0;
기준고 = data1(H);
기준고Bar = 0;
If 저[2] > 저[1] Then 색깔 = 파랑;
If 이중파동[1] > 0 Then 이중파동 = 저[1];
}
If 추세[1] == 상승 && 추세 == 상승 &&
저[1] > 기준저 &&
기준저 * (1 + (상승률/100)) < data1(L) Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = data1(L);
기준저Bar = 0;
기준고 = data1(H);
기준고Bar = 0;
If 고[2] < 고[1] Then 색깔 = 빨강;
If 저[2] > 저[1] Then 색깔 = 파랑;
이중파동 = 저[1];
}
If 추세 == 양방향 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = data1(H);
기준고Bar = 0;
기준저 = data1(L);
기준저Bar = 0;
추세 = 추세[1];
If 추세[1] == 상승 Then
{
If 고[2] < 고[1] Then 색깔 = 빨강;
If 저[2] > 저[1] Then 색깔 = 파랑;
이중파동 = 저[1];
}
Else
{
If 저[2] > 저[1] Then 색깔 = 파랑;
If 고[2] < 고[1] Then 색깔 = 빨강;
이중파동 = 고[1];
}
}
#############################Data2
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For jj = 1 To 19
{
저BarD[jj] = 저BarD[jj] + 1;
고BarD[jj] = 고BarD[jj] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동D > 0 Then
{
이중파동D = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고D <= data2(H) || 기준고D == 0 || IsNaN(기준고D) == True Then
{
기준고D = data2(H);
기준고BarD = 0;
}
Else
기준고BarD = 기준고BarD + 1;
If 기준저D >=data2(L) || 기준저D == 0 || IsNaN(기준저D) == True Then
{
기준저D = data2(L);
기준저BarD = 0;
}
Else
기준저BarD = 기준저BarD + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고D * (1 - (하락률D/100)) > data2(H) && 기준저D * (1 + (상승률D/100)) < data2(L) Then
{
추세D = Iff(기준고BarD==기준저BarD,양방향D,Iff(기준고BarD>기준저BarD,상승D,하락D));
}
Else If 기준고D * (1 - (하락률D/100)) > data2(H) Then 추세D = 하락D;
Else If 기준저D * (1 + (상승률D/100)) < data2(L) Then 추세D = 상승D;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세D[1] == 상승D && 추세D == 하락D Then
{
For jj = 18 DownTo 1 {
고D[jj+1] = 고D[jj];
고BarD[jj+1] = 고BarD[jj];
}
고D[1] = 기준고D;
고BarD[1] = 기준고BarD;
기준고D = data2(H);
기준고BarD = 0;
기준저D = data2(L);
기준저BarD = 0;
If 고D[2] < 고D[1] Then 색깔D = 빨강D ;
If 이중파동D[1] > 0 Then 이중파동D = 고D[1];
}
If 추세D[1] == 하락D && 추세D == 하락D &&
고D[1] < 기준고D &&
기준고D * (1 - (하락률D/100)) > data2(H) Then
{
For jj = 18 DownTo 1
{
고D[jj+1] = 고D[jj];
고BarD[jj+1] = 고BarD[jj];
저D[jj+1] = 저D[jj];
저BarD[jj+1] = 저BarD[jj];
}
고D[1] = 기준고D;
고BarD[1] = 기준고BarD;
저D[1] = 기준저D;
저BarD[1] = 기준저BarD;
기준고D = data2(H);
기준고BarD = 0;
기준저D = data2(L);
기준저BarD = 0;
If 저D[2] > 저D[1] Then 색깔D = 파랑D;
If 고D[2] < 고D[1] Then 색깔D = 빨강D;
이중파동D = 고D[1];
}
If 추세D[1] == 하락D && 추세D == 상승D Then
{
For jj = 18 DownTo 1
{
저D[jj+1] = 저D[jj];
저BarD[jj+1] = 저BarD[jj];
}
저D[1] = 기준저D;
저BarD[1] = 기준저BarD;
기준저D = data2(L);
기준저BarD = 0;
기준고D = data2(H);
기준고BarD = 0;
If 저D[2] > 저D[1] Then 색깔D = 파랑D;
If 이중파동D[1] > 0 Then 이중파동D = 저D[1];
}
If 추세D[1] == 상승D && 추세D == 상승D &&
저D[1] > 기준저D &&
기준저D * (1 + (상승률D/100)) <data2(L) Then
{
For jj = 18 DownTo 1
{
고D[jj+1] = 고D[jj];
고BarD[jj+1] = 고BarD[jj];
저D[jj+1] = 저D[jj];
저BarD[jj+1] = 저BarD[jj];
}
고D[1] = 기준고D;
고BarD[1] = 기준고BarD;
저D[1] = 기준저D;
저BarD[1] = 기준저BarD;
기준저D = data2(L);
기준저BarD = 0;
기준고D = data2(H);
기준고BarD = 0;
If 고D[2] < 고D[1] Then 색깔D = 빨강D;
If 저D[2] > 저D[1] Then 색깔D = 파랑D;
이중파동D = 저D[1];
}
If 추세D == 양방향D Then
{
For jj = 18 DownTo 1
{
고D[jj+1] = 고D[jj];
고BarD[jj+1] = 고BarD[jj];
저D[jj+1] = 저D[jj];
저BarD[jj+1] = 저BarD[jj];
}
고D[1] = 기준고D;
고BarD[1] = 기준고BarD;
저D[1] = 기준저D;
저BarD[1] = 기준저BarD;
기준고D = data2(H);
기준고BarD = 0;
기준저D = data2(L);
기준저BarD = 0;
추세D = 추세D[1];
If 추세D[1] == 상승D Then
{
If 고D[2] < 고D[1] Then 색깔D = 빨강D;
If 저D[2] > 저D[1] Then 색깔D = 파랑D;
이중파동D = 저D[1];
}
Else
{
If 저D[2] > 저D[1] Then 색깔D = 파랑D;
If 고D[2] < 고D[1] Then 색깔D = 빨강D;
이중파동D = 고D[1];
}
}
#==========================================#
# 역행출력
#==========================================#
if data1(crossup(c,고[1])) and data2(H < 고D[1]) Then{
PlotPaintBar(C,O,"1", black);
PlaySound("C:₩예스트레이더31₩Data₩역행.wav");
}
if data1(Crossdown(c,저[1])) and data3(H < 고D[1]) Then{
PlotPaintBar(C,O,"1", black);
PlaySound("C:₩예스트레이더31₩Data₩역행.wav");
}
2017-11-18
161
글번호 114290
답변완료
문의드립니다
아래의 강조식을 적용하려니 에러가 납니다. 에러 안나도록 수정 부탁드립니다.
A_FDC_MARK_S 이 없다는데.. 제가 식 작성자가 아니라서 어떻게 할 줄 모르겠습니다.
어떻게든 에러없게 부탁드립니다. 감사합니다.
Input:추세기준(9), 존간격(0.15), 위치기간(13),상승과열(60),하락과열(-59), LENGTH(26);
var : 위치(0),V_Total(0),V_Net(0),미결추이(0),강도추이(0),V_Color(0),V_존간격(0),V_위치추이(0),회색박스(0);
V_Total = _A_FDC_MARK_S;
위치 = _A_FDC_MARK_P_S;
V_Net = _A_Net;
V_존간격 = _A_Zone(존간격);
회색박스 = _A_Fibonacci_UD(3,3,1);
var1 = abs(dayoi()-dayoi(1)); #미결재
미결추이 = (3 * Ema(var1,5)) - (3 * Ema(Ema(var1,5),5)) +
(Ema(Ema(Ema(var1,5),5),5));
강도추이 = (3 * wma(V_TOTAL,6)) - (3 * wma(wma(V_TOTAL,6),6)) +
(wma(wma(wma(V_TOTAL,6),6),6));
V_Color = (3 * Ema(V_TOTAL,LENGTH)) - (3 * Ema(Ema(V_TOTAL,LENGTH),LENGTH)) +
(Ema(Ema(Ema(V_TOTAL,LENGTH),LENGTH),LENGTH));
V_위치추이 = (3 * Ema(위치,위치기간)) - (3 * Ema(Ema(위치,위치기간),위치기간)) +
(Ema(Ema(Ema(위치,위치기간),위치기간),위치기간));
Var2 = abs(V_Net);
If V_TOTAL > 20 and Var2 > 추세기준 and Var2 >= Var2[1] && V_존간격 >= 0 Then # ((Var2 > 추세기준 and Var2 >= Var2[1]) or (Var2 > 8 and Var2[1] >= Var2[2] and Var2 >= Var2[1])) Then
PlotPaintBar( Open, Close,"강도",
iff(V_TOTAL[1] >= 상승과열 && V_TOTAL<V_TOTAL[1] && var1 <7000 && var1<var1[1] && 미결추이<미결추이[1] ,RGB(255,255,0), #
iff(V_TOTAL > 50 &&V_Color>=V_Color[1] && V_존간격 == 4 , RGB(200,50,50),
iff(V_TOTAL > 35 &&V_Color>=V_Color[1] && V_존간격 > 0, RGB(255,50,50),
iff(V_Color>=V_Color[1] && V_존간격 > 0, RGB(255,140,140),RGB(255,200,200))))));
Else
{ IF V_TOTAL < -20 and Var2 > 추세기준 and Var2 >= Var2[1] && V_존간격 <= 0 Then
PlotPaintBar( Open, Close,"강도",
iff(V_TOTAL[1] <= 하락과열 && V_TOTAL>V_TOTAL[1] && var1<var1[1] && 미결추이<미결추이[1] && var1 <7000 ,RGB(255,255,0),
iff(V_TOTAL < -50 && V_Color<=V_Color[1] && V_존간격 == -4, RGB(0,0,200),
iff(V_TOTAL < -35 && V_Color<=V_Color[1] && V_존간격 < 0, RGB(51,102,255),
iff(V_Color<=V_Color[1] && V_존간격 < 0, RGB(130,165,255),RGB(153,204,255))))));
Else
PlotPaintBar( Open, Close,"강도",GRAY);
}
2017-11-18
153
글번호 114289
답변완료
질문드립니다.
많은 도움을 주신덕에 참고해서 많이 만들어가고있습니다.
한가지 걸리는 것이있는데요.
var : 시그널(false);
시그널 = false;
if 매매조건1 then{
시그널 = true;
}
if 매매조건2 then{
시그널 = true;
}
if 매매조건3 then{
시그널 = true;
}
if 매매조건4 then{
시그널 = true;
}
if 시그널 then
buy();
이 구조에서 시그널에서 손절이 2번나면 더이상 거래하지 않는다. 라는 것이 도통 짜지질 않네요..
2017-11-18
134
글번호 114288
답변완료
문의드립니다
9시 30분 시점에서 그날의 누적 거래량을 과거 n일간 개장 후 30분 간의 거래량들의 평균과 비교하고 싶은데 어떻게 수식을 작성하여야 할까요?
2017-11-17
130
글번호 114287
답변완료
문의드립니다.
55435번 질문에 관련하여 문의드립니다.
아래는 알려주신 주식인데요, 그 수식을 제 시스템에 적용하여 예스랭귀지에서 "검증"을 하면
entry = true; 와 entry = false; 줄에서 오류가 발생하며 "연산자 앞뒤 두 데이터의 형태가 같아야 합니다."라는 설명이 나옵니다. 검토해주시면 감사하겠습니다.
------------------------------------------------------------------------------------
var : dni(0),ep(0),entry(false);
if MarketPosition <= 0 and 진입조건 then{
dni = index;
EP = C;
entry = true;
}
if MarketPosition == 1 Then
entry = false;
If MarketPosition <= 0 and index >= Dni and index < dni+3 then
Buy("매수2", atlimit, EP - PriceScale*3);
SetStoploss(0.40,Pointstop);
SetStopProfittarget(0.60, Pointstop);
2017-11-17
154
글번호 114286
답변완료
문의 드립니다.
Arrays : Relative[50](0);
Relative[0] = RSI(9);
Relative[1] = RSI(10);
Relative[2] = RSI(11);
Relative[3] = RSI(12);
Relative[4] = RSI(13);
Relative[5] = RSI(14);
Relative[6] = RSI(15);
Relative[7] = RSI(16);
우선 Relative 배열변수를 선언 한 후에
방을 총 50개를 만들었습니다.
그리고 0번방부터 기간값이 다른 RIS 함수를 넣고 있는데요.
일일히 하나하나 넣어줘야 해서 매우 불편한데요.
좀 더 간편한 방법은 없을까요?
헌데 For 문을 이용하고 싶어도
배열변수에 하나의 RSI 함수를 사용해서 메모리를 공유하게 되면
계산에 문제가 생겨서
별개의 메모리를 사용하기 위해서
어쩔수없이 저렇게 작성하고 있는데요.
좀 더 효율적인 방법은 없을까요?
2017-11-17
149
글번호 114285