커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1653
글번호 230811
답변완료
문의
input : Period1(5),P1(10),Period3(20);
var : LT(0),HT(0),newH(0),newL(0),T(0),Z(false),SL(0);
var : t1(0),x(0),highestsince(0),y(0),lowestsince(0);
LT = lowest(L,P1);
HT = highest(H,P1);
if H > HT[1] Then
newH = H;
if L < LT[1] Then
newL = l;
T = ma(c,period3);
Z = (NewL==low[1]&&NewL<low) or (NewH== high[1] && NewH>high);
if Z == true Then
SL = T;
SL = valuewhen(1,Z,T);
if SL != SL[1] Then
var1 = T;
t1 = ma(c,period1);
if CrossUp(C,t1) Then
highestsince = t1;
if highestsince > 0 and t1 > highestsince Then
highestsince = t1;
if CrossDown(C,t1) Then
lowestsince = t1;
if lowestsince > 0 and t1 < lowestsince Then
lowestsince = t1;
if CrossDown(c,t1) Then
Var2 = highestsince;
if CrossUp(c,t1) Then
Var3 = lowestsince;
if var1 > 0 Then
Plot1(var1,"수식1");
if var2 > 0 Then
Plot2(var2,"수식2");
if var3 > 0 Then
Plot3(var3,"수식3");
선언되지 않는 valuewhen이 있다고 나와서 수정부탁드립니다
2021-06-22
1370
글번호 150183
답변완료
다음 조건을 수식으로 부탁드립니다.
안녕하세요
키움 수식관리자 지표
a=avg(c,5);
b=avg(c,10);
d=avg(c,20);
e=avg(c,240);
valuewhen(1,crossup(C,a) && crossup(C,b) && crossup(C,d) && C> e, C)
을 예스랭귀지 수식으로 부탁드립니다.
그리고 종가가 위의 선을 크로스업했을 때 검색할수 있는 수식도 부탁드립니다.
2021-06-22
1396
글번호 150182
답변완료
부탁드립니다
$,안녕하세요
아래식에서 질문입니다
var1=Highest(H,20);
Var2=Highest(H,60);
Plot1(Var2+(Var3-var4),"상");
위 식을 일봉에만 적용했을경우로 가정하고
1,var1의 20개봉의 최고가를 옵션시작봉에서 만기일까지봉의 최고가로 수정할경우 식을 어찌 짜야할까요.
2,var2의 60개봉의 최고가를 선물시작봉에서 만기일까지봉의 최고가로 수정할경우 식을
어찌 짜야할지 도움 부탁드립니다.
#,미리감사드립니다.
2021-06-22
1535
글번호 150181
답변완료
문의합니다
전략실행차트에서 시스템수식을 선택하면 아래와 같이 실행이 불가합니다
해결방법이 있나요
2021-06-22
1437
글번호 150179
답변완료
문의드립니다
몇가지 질문좀 드리고자 합니다.
1. 차트 설정창에서 진입지연주문 설정을 하면 예스스팟으로 전달되는 매매신호도 똑같이 지연된 신호가 가는지 알고 싶습니다.
2. //Buy신호 발생
if (Signal.signalKind == 1)
{
//주문할 종콕코드
var Bcode = Option1.GetATMCallRecent(0);
//매수주문
Account1.OrderBuy(Bcode,1, Option1.GetAsk(Bcode,5),0);
//내부파일에 Buy라는 이름으로 Bcode저장
Main.SetUserValue("Buy",Bcode);
}
//예스스팟에서 이런 식으로 매수 신호가 발생되어서 종목코드가 저장된후 청산되기 전에 실수로 예스스팟을 닫았다거나 전략을 닫았다가 켜면 저 종목코드 저장된게 없어지는건지 궁금합니다.
감사합니다.
2021-06-22
1494
글번호 150176
답변완료
답변 잘 보았습니다
1.매수된 총 수량을 오늘 발생한 매도 신호에 1/2 매도
내일도 매도 신호 나오면 나머지 1/2 매도
내일 매도 신호 없으면 1/2 수량은 그냥 보유 이런식으로 하고 싶습니다
가능한지요?
2.아 그리고 오늘 매도 신호 발생해 매도 되었는데
다시 매수 신호 발생해 재 매수 되는 경우가 있네요
매도 신호 발생했으면 그 후는 진입 제한했으면 합니다
늘 많은 도움주셔서 감사합니다
2021-06-22
1775
글번호 150175
답변완료
수식 수정 의뢰드립니다!
안녕하세요!
아래 수식은 전메 만들어 주신겁니다!
매매를 하면서 전일시장과 당일 시장이 연장되지 않고
당일에 새로운 바탕선이 적용될 수 있도록 수정 부탁드립니다!
감사합니다!
Input : Af(0.02), MaxAf(0.2);
Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0);
if count == 0 then //변수들의 초기화
{
highval = High;
lowval = Low;
direction = 0;
sar1 = 0;
afval = 0;
ep = 0;
count = 1;
}
if(ep != 0 ) then // 추세가 진행중
{
if(direction == 1) then // 상승추세이면
{
ep = highval;
sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산
if(high > highval) then // 신고가 발생
{
highval = high;
afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if( low < sar1) then // 추세변경(상승->하락)
{ // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의
direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
lowval = low;
}
}
else // 하락 추세
{
ep = lowval; // 하락추세에서는 EP로 저가 사용
sar1 = sar1 + afval*(ep-sar1);
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af;
if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if(high > sar1) then // 추세 변경(하락->상승)
{ // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의
direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
highval = high;
}
}
}
else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산
{
if(direction == 1) then // 상승 추세
{
ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);
if ( high > highval) then // 신고가가 발생
{
Highval = high;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
else // 하락추세
{
ep = lowval;
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
}
else // SAR 첨 시작
{
if direction == 0 then // 추세가 없으므로
{
if(c > c[1]) then // 상승추세로 시작
direction = 1;
else if( c < c[1]) then // 하락추세로 시작
direction = -1;
}
else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작
{
direction = -1;
sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로
}
}
else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작
{
direction = 1;
sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로
}
}
lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로
highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장
}
//처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid
#if(sar1 != 0) then
# User_Func_Sar = sar1;
if sar1 > sar1[1] Then
plot1(sar1,"파리볼릭",BLUE);
else
plot1(sar1,"파리볼릭",blue);
Plot2(C,"종가");
2021-06-22
1788
글번호 150168
답변완료
시스템 질문입니다
지수선물 적용예정 입니다
1.N봉 전의 주가 보다 현재 주가가 더 높으면 매수
N봉 전의 주가 보다 현재 주가가 더 낮으면 매도
2. N일 전의 주가 보다 현재 주가가 더 높으면 매수
N일 전의 주가 보다 현재 주가가 더 낮으면 매도
신속한 답변 바랍니다
2021-06-22
1820
글번호 150167
답변완료
수식 질문드립니다.
예를들어서 현재 buy 포지션 유지중인데,
익절이 20 pt 입니다.
그런데 익절 나오기전에 또 buy 신호가 뜬다면
여기서 추가로 한개 더 진입하게할수없나요?
사진에서 피라미딩하용하면 하루에 몰아서 다 때려넣는데,
이렇게 말고
신호뜨면 하루 1개만 추가진입하게하고 싶습니다.
반대신호 뜨면 다 청산하고 다시 한개만 진입하고,,
data
---------------------
#
input : StartTime(90500),EndTime(151000);
Input : s1(120), s2(200);
//input : s11(28),s12(265);
input : 손절(5.6);
input : 익절(30.2);
//input : way(9),road(-8),road2(-8);
//input : 최소이익(2),손실범위(0.1);
input : bf11(0.2),sf11(-0.85),bf12(0.85),sf12(-0.5);
input : bf13(0.8),sf13(-0.8),bf14(0.5),sf14(-0.32);
//var : condi(0);
var : Tcond(false,Data1);
var : C2(0,Data2);
var : C3(0,Data3);
var : C4(0,Data4);
var : C5(0,Data5);
var : C6(0,Data6);
var : C7(0,Data7);
value1 = ma(c2,s1);
value2 = ma(c2,s2);
//value12 = Ma(c2,600);
//value13 = Ma(c3,600);
//value14 = Ma(c4,600);
//value15 = Ma(c5,600);
value12 = Average(c2,600);
value13 = Average(c3,600);
value14 = Average(c4,600)*4;
value15 = Average(c5,600)*4;
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;
C2 = Data2(c);
C3 = Data3(c);
C4 = Data4(c);
C5 = Data5(c);
C6 = Data6(c);
C7 = Data7(c);
if Tcond == true Then
{
If #CrossUp(Value3,0)
value13 < -0.32 and (value14 < -0.32 or value14>0.32)
//and c6+c7>road #39.62
//and c2<bf11
//and c3<bf12 #47.86
//and c4<bf13
//and c5<bf14
Then
{
Buy();
}
If #CrossDown(Value3,0)
value13 > 0.32 and (value14 < -0.32 or value14 > 0.32)
//and c6+c7<-road
//and c2>sf11
//and c3>sf12
//and c4>sf13
//and c5>sf14
Then
{
Sell();
}
}
#
#SetStopEndofday(EndTime);
SetStoploss(손절,PointStop);
SetStopProfittarget(익절,PointStop);
#SetStopContract();#생략가능
#SetStopTrailing(손실범위 , 최소이익 , PointStop);
2021-06-22
1572
글번호 150161