커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3164
글번호 230811
답변완료
문의드립니다
당일 10분봉에서 평균체결강도보다 2배이상체결강도가높은봉이 2번이상 나온종목을 찾고싶습니다
2021-10-28
554
글번호 153234
답변완료
문의드립니다
수정해주신 수식으로 데모해본 결과 문의 사항이 있어 남김니다.
데모 차트와 거래내역 표시해서 같이 올려 드립니다.
# 먼저 즉시 진입 수식 부분입니다.
1. 22:36 분, 22:51분, 24:00분 은 조건이 맞지 않는데 진입하였습니다.
3번 모두 이전 캔들의 최고가를 돌파하지 않았는데도 매수 진입한 내용입니다.
그리고 현재 거래시간 전에 매수 매도 진입이 되어 익절, 손절이 안된 경우, 거래시간이 종료되면 종료시간에 자동 청산하는데요. 종료시간 이후에 익절 손절 청산 조건대로 청산 가능한 수식이 있으면 부탁드립니다.
아래 수식에서 수정할 부분이 있는지 확인 부탁드립니다.
input : ntime1(6),ntime2(30),n(10);
input : StartTime(222500),EndTime(010000);
input : 익절틱수(50),손절틱수(50);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0),HH(0),LL(0);
var : Tcond(false),BE1(False),BE2(False),SE1(False),SE2(False);
Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%ntime1;
TF2 = TM%ntime2;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
H1[0] = H;
L1[0] = L;
For cnt = 1 to 49
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if H1[0] > 0 and H > H1[0] Then
H1[0] = H;
if L1[0] > 0 and L < L1[0] Then
L1[0] = L;
HH = 0;
LL = 0;
if H1[n] > 0 and L1[n] > 0 Then
{
For cnt = 1 to N
{
if HH == 0 or (HH > 0 and H1[cnt] > HH) Then
HH = H1[cnt];
if LL == 0 or (LL > 0 and L1[cnt] < LL) Then
LL = L1[cnt];
}
}
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or
(Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or
(Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then
{
H2[0] = H;
L2[0] = L;
For cnt = 1 to 49
{
H2[cnt] = H2[cnt-1][1];
L2[cnt] = L2[cnt-1][1];
}
}
if H2[0] > 0 and H > H2[0] Then
H2[0] = H;
if L2[0] > 0 and L < L2[0] Then
L2[0] = L;
if Tcond == true Then
{
if MarketPosition <= 0 and HH > 0 and H2[n] > 0 Then
Buy("b3",AtStop,max(HH,H2[n])+PriceScale*1);
if MarketPosition >= 0 and LL > 0 and L2[n] > 0 Then
Sell("s3",AtStop,min(LL,L2[n])-PriceScale*1);
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-10-29
586
글번호 153233
답변완료
문의드립니다
수정해주신 수식으로 데모해본 결과 문의 사항이 있어 남김니다.
데모 차트와 거래내역 표시해서 같이 올려 드립니다.
# 먼저 종가 진입 수식 부분입니다.
1. 22:32 분에 조건이 맞는데도 진입하지 않고 22:34분에 진입했습니다.
32분에 진입했으면 익절인데 34분에 진입해서 손절이 되었습니다.
2. 22:46 분에 진입한 것은 1분봉으로 구분해서 봐도 익절인데 익절되지 않고 손절 되었습니다.
아래 수식에서 수정할 부분이 있는지 확인 부탁드립니다.
그리고 종가 진입은 조건이 맞더라도 매수는 양봉에만, 매도는 음봉에만 진입하는 것이 반영되어 있지 않으면 반영해주세요.
input : ntime1(6),ntime2(30),n(10);
input : StartTime(222500),EndTime(010000);
input : 익절틱수(50),손절틱수(50);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0),HH(0),LL(0);
var : Tcond(false),BE1(False),BE2(False),SE1(False),SE2(False);
Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%ntime1;
TF2 = TM%ntime2;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
H1[0] = H;
L1[0] = L;
For cnt = 1 to 49
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if H1[0] > 0 and H > H1[0] Then
H1[0] = H;
if L1[0] > 0 and L < L1[0] Then
L1[0] = L;
HH = 0;
LL = 0;
if H1[n] > 0 and L1[n] > 0 Then
{
For cnt = 1 to N
{
if HH == 0 or (HH > 0 and H1[cnt] > HH) Then
HH = H1[cnt];
if LL == 0 or (LL > 0 and L1[cnt] < LL) Then
LL = L1[cnt];
}
}
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or
(Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or
(Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then
{
H2[0] = H;
L2[0] = L;
For cnt = 1 to 49
{
H2[cnt] = H2[cnt-1][1];
L2[cnt] = L2[cnt-1][1];
}
}
if H2[0] > 0 and H > H2[0] Then
H2[0] = H;
if L2[0] > 0 and L < L2[0] Then
L2[0] = L;
if Tcond == true Then
{
if MarketPosition <= 0 and HH > 0 and H2[n] > 0 and C > max(HH,H2[n])+PriceScale*1 Then
Buy("b3");
if MarketPosition >= 0 and LL > 0 and L2[n] > 0 and C < min(LL,L2[n])-PriceScale*1 Then
Sell("s3");
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-10-28
765
글번호 153232
답변완료
문의 드립니다
수고많으십니다
-. data2 (선물) 의 매수신호에 의한 , data2 의 매수신호가격(예를들어 395.0)에서
data2(c)가 반대로 1.0 pt가 움직일때(394.0 pt)
data1 의 콜옵션을 매도하는 수식이 가능한가요?
-.참조데이터(선물)의 매수신호가격대비 -1.0pt 에서
data1 종목(콜)을 매도하는 식을 말합니다
2021-10-28
649
글번호 153231
답변완료
74455번 수식 수정 부탁드립니다
1.
전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시
->전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들째, 10캔들째 고가,저가
2.
당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시
->당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들째, 10캔들째 고가,저가
감사합니다
2021-10-29
588
글번호 153229
답변완료
부탁 드립니다.
항상 도움에 감사 드립니다.
틱봉용 수식으로 작성 해본 것입니다.
어딘가에 오류가 있어 보입니다.
수정 부탁 드립니다.
질문수식)
input:p(10),sig(30);
var1=obv();
var2=ma(var1,p);
var3=var1-var2;
var4=ma(var3,sig);
틱봉용 수식)
input : ntime(6),P(60),sig(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),sum1(0),sum2(0);
var : v2(0),v4(0),pre(0),C1(0),idx(0),vv(0);
Array : v1[100](0),v3[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
idx = 0;
}
Else
idx = idx+1;
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = idx%ntime;
if Bdate != bdate[1] or (TF < TF[1] and Bdate == Bdate[1]) Then
{
// idx = idx+1;
C1 = C[1];
vv = 0;
pre = v1[0][1];
For cnt = 1 to 99
{
v1[cnt] = v1[cnt-1][1];
v3[cnt] = v3[cnt-1][1];
}
}
vv = vv + v;
if C > C1 Then
v1[0] = pre + vv;
else if C < C1 Then
v1[0] = pre - vv;
else
v1[0] = pre;
if idx >= P then
{
sum1 = 0;
For cnt = 0 to P-1
{
sum1 = sum1+v1[cnt];
}
v2 = sum1/p;
v3[0] = v1[0]-v2;
}
if idx >= P+sig then
{
sum2 = 0;
For cnt = 0 to sig-1
{
sum2 = sum2+v3[cnt];
}
v4 = sum2/sig;
Plot1(v4);
}
}
PlotBaseLine1(0);
2021-10-28
629
글번호 153226
답변완료
문의 드립니다.~~~~
항상 감사합니다. 건강하세요~~~
input : StartTime1(070000),EndTime1(100000);
input : StartTime2(110000),EndTime2(120000);
input : StartTime3(130000),EndTime3(140000);
input : StartTime4(010000),EndTime4(030000);
input : ntime(100000),n(10);
<질문1>
전체시간 조건 중
input : StartTime1(070000),EndTime1(100000);
input : StartTime2(110000),EndTime2(120000);
위 조건만 적용하고
전체조건중
아래 조건을 삭제하지 않고 적용되지 않게 하려면
어떻게 시간을 설정해야 하나요?
input : StartTime3(130000),EndTime3(140000);
input : StartTime4(010000),EndTime4(030000);
<질문2>
ntime(100000) 의 의미는 무엇인가요?
감사합니다~~~
2021-10-28
735
글번호 153219
답변완료
키움지표예스로 변경부탁드립니다
질문1
키움수식
기간=14
======================
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
B=valuewhen(1, M5<M5(1), C);
ma(B,35)
========================
위수식을 예스로 변경하면 다음과같습니다
input:기간(14);
var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
if M5<M5[1] Then
Value1=C;
M6=ma(Value1,35);
Plot1(M6);
위와같이하면 키움과예스의 수치가 정확히 일치를 합니다만
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
B=valuewhen(1, M5<M5(1), C);
D=ma(B,35);
M11=Max(C,O);
M12=Min(C,O);
M13=Highest(M11,기간);
M14=Lowest(M12,기간);
M15=(M13+M14)/2;
B1=valuewhen(1, M15<M15(1), C);
D1=ma(B1,35);
E=(D+D1)/2:
이렇게 키움수식이 되었을시에 예스로변경하면
input:기간(14);
var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
if M5>M5[1] Then
Value1=C;
M6=ma(Value1,35);
var:M11(0),M12(0),M13(0),M14(0),M15(0),M16(0),M17(0);
M11=Max(C,O);
M12=Min(C,O);
M13=Highest(M11,기간);
M14=Lowest(M12,기간);
M15=(M13+M14)/2;
if M15<M15[1] Then
Value2=C;
M16=ma(Value2,35);
M17=(M6+M16)/2;
Plot1(M17);
각각하나씩은 수치가 같은데요 두개의식을 합치면 수치가 달라집니다
질문2
또한 종목검색으로 만들시
input:기간(14);
var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
if M5>M5[1] Then
Value1=C;
M6=ma(Value1,35);
var:M11(0),M12(0),M13(0),M14(0),M15(0),M16(0),M17(0);
M11=Max(C,O);
M12=Min(C,O);
M13=Highest(M11,기간);
M14=Lowest(M12,기간);
M15=(M13+M14)/2;
if M15<M15[1] Then
Value2=C;
M16=ma(Value2,35);
M17=(M6+M16)/2;
if crossup(C,M17) then find(1);
분명히 종목들이 존재를 하는데도 검색이 안됩니다
열흘이상 고민해봐도 해답을 모르겠습니다
도움이 절실합니다 부탁드리겠습니다
감사합니다 수고하세요
2021-10-28
966
글번호 153217
답변완료
영웅문 수식을 변환하고 싶습니다.
안녕하세요?
영웅문에서 시스템 신호로 사용을 했는데요.
예스트레이더로 이전하고 싶습니다.
수식변환 도움 주실수 있나요?
<<<매수진입/매도청산>>>
R=highest(H,X);
S=lowest(L,X);
A=countsince(time>=T1,crossUp(c,R(1)) or crossDown(c,S(1)));
crossUp(A,0.5) and C>R(1)
<<<매수청산/매도진입>>>
R=highest(H,X);
S=lowest(L,X);
crossDOWN(C,S(1))
<<<변수>>>
T1 = 15
X = 30
<<<매매시간>>>
오전 9시 ~ 익일새벽 2시
<<<하루목표 수익 및 손절>>>
목표수익 100틱(나스닥)
목표손절 100틱(나스닥)
2021-10-28
911
글번호 153212