커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7717
글번호 230811
답변완료
시스템식부탁드립니다.
수고가 많으십니다.
기준봉 60분봉
현재60분봉종가가 저점종가보다 3% 이상 상승시 매수청산
현재60분봉종가가 고점종가보다 3% 이상 하락시 매도청산
항상 감사합니다
2011-06-16
676
글번호 39873
답변완료
시스템
시초 선물1분봉 진입시 처음봉 다음부터(즉2번째 봉부터) 시스템 작동부탁드림니다.
감사합니다
input : value1(0.5), value2(0.5);
var : cnt(0), bpos(0), bval(0), spos(0), sval(0);
var : bpos2(0), bval2(0), spos2(0), sval2(0);
//최초 진입이 매수일 경우
if date != date[1] then {
cnt = 0;
bpos = 0;
spos = 0;
}
if cnt==0 and C > H[1]+value1 then {
buy("B최초진입");
bpos = 1;
bVal = C;
cnt = 1;
}
if bpos == 1 and crossUp(C,bval+value2) then {
exitlong("B종료1");
bpos = 0;
}
if bpos == 1 and crossdown(C,bval-value2) then {
sell("B재진입1");
sVal = C;
spos = 1;
bpos = 0;
}
if spos == 1 and crossdown(C,sval-value2) then {
exitshort("B종료2");
spos = 0;
}
if spos == 1 and crossup(C, sval+value2) then {
sell("B재진입2");
bval = C;
spos = 0;
bpos = 1;
}
//최초 진입이 매도일 경우
if date != date[1] then {
bpos2 = 0;
spos2 = 0;
}
if cnt==0 and C > L[1]-value1 then {
buy("S최초진입");
spos2 = 1;
sVal2 = C;
cnt = 1;
}
if spos2 == 1 and crossdown(C,sval2-value2) then {
exitshort("S종료1");
spos2 = 0;
}
if spos2 == 1 and crossup(C,sval2+value2) then {
buy("S재진입1");
bVal2 = C;
bpos2 = 1;
spos2 = 0;
}
if bpos2 == 1 and crossup(C,bval2+value2) then {
exitlong("S종료2");
bpos2 = 0;
}
if bpos2 == 1 and crossdown(C, bval2-value2) then {
buy("S재진입2");
sval2 = C;
bpos2= 0;
spos2 = 1;
}
2011-06-16
655
글번호 39872
답변완료
재진입(재질문_전저점)
항상 친절한 답변 감사합니다.
아래의 식이 제가 수정해보고있는 수식인데요. 전저점에서 진입이 안되네요.
어디가 잘못되었는지 알려주세요.
그 아래의 식은 제가 테스트해본건데요, 여기서는 전저점 진입이 됩니다. 어떤 차이점때문인지 모르겠네요. 답변 부탁드립니다.
--------------재진입이 안되는 수식(연결선물5분봉)-------------------------------
Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), ReBars(100);
Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999), ReCnt(0), MP(0);
FastMA = ma(C , FastLen );
SlowMA = ma(C , SlowLen );
If CrossUp(FastMA , SlowMA) and index > 1 then {
LEntryPrice = Highest(H , TrailBar )[1];
LCount = index;
}
If MarketPosition <> 1 AND index < LCount + ChLen then
Buy ("Cross Over Buy", atstop,LEntryPrice);
If CrossDown(FastMA , SlowMA) and index > 1 then {
SEntryPrice = Lowest(L , TrailBar )[1];
SCount = index;
}
If MarketPosition <> -1 AND index < SCount + ChLen then
Sell ("Cross Under Sell", atstop,SEntryPrice );
If MarketPosition == 1 then {
LCount = -999;
ExitLong ("LongTStop", atstop, Lowest(L , TrailBar ));
}
If MarketPosition == -1 then {
SCount = -999;
ExitShort ("ShortTStop", atstop, Highest(H , TrailBar ));
}
//재진입
MP = MarketPosition;
If MP == 0 AND MP[1] == -1 then
ReCnt = 1;
If MP == 0 AND MP[1] == 1 then
ReCnt = 1;
If MarketPosition == 0 AND MarketPosition(1) == -1 and
IsExitName("ShortTStop",1) == True AND ReCnt < ReBars then {
ReCnt = ReCnt + 1;
Sell ("sell_2nd", AtStop, Lowest(L,BarsSinceEntry)[BarsSinceExit(1)]);
}
----------------테스트수식(연결선물일봉)-------------------------------------
Input : Period(25), Dv(1.5);
Var : BBup(0), BBdown(0), 가격(0), 추세(0), MP(0), Recnt(0);
BBup = BollBandUp(period,Dv);
BBdown = BollBandDown(period,Dv);
가격 = ma(C,3);
추세 = ma(C,period);
if MarketPosition == 0 or -1 Then
{
if CrossUp(가격,BBup) Then
Buy("BL");
}
if MarketPosition == 0 or 1 Then
{
if CrossDown(가격,BBdown) Then
sell("SS");
}
if MarketPosition == 1 and IsEntryName("BL",0) == True Then {
if CrossDown(가격,추세) and 가격 > BBdown Then
ExitLong("EL");
}
if MarketPosition == -1 and (IsEntryName("SS",0) == True or IsEntryName("SS2",0) == True) Then
{
if CrossUp(가격,추세) and 가격 < BBup Then
ExitShort("ES");
}
If MarketPosition == 0 AND MarketPosition(1) == -1 then {
If IsExitName("ES",1) == True then {
Sell ("SS2", AtStop, (lowest(L,BarsSinceEntry)[BarsSinceExit(1)]-2));
}
}
2011-06-16
632
글번호 39869
답변완료
시뮬레이션
1. 주식 시뮬레이션에서 매도~매수 사이가 하락일 때 포지션이 없는데도 손실로
처리되네요, 그래서 maxcoseclosers 를 사용할때 차이가 발생합니다.
어떻게 해결하나요?
2. 1분봉으로 9시부터 시뮬레이션은 할수없나요?
2011-06-16
687
글번호 39868
답변완료
지표식 문의.
만약 30분이상 시가대비 + - 0.8사이에 있다면 횡보로 표시 하기 위해 물어서
아래와 같은 답변을 받아 지표로 표시 하려고 아래와 같이 작성 했는데요.
금일 6월 16일 장 보면 현재
if Condition1 then{
var1 = O;
var2 = H;
var3 = L;
var4 = TimeToMinutes(stime);
var5 = sdate;
}
if H > var2 Then
var2 = H;
if L < var3 Then
var3 = L;
if sdate == var5 And
TimeToMinutes(stime) >= var4+30 and
var2 < var1+1 And
var3 > var1-1 then{
var2=h;
var3=l;}
plot1(var2,"H",red);
plot2(var3,"L",blue);
MessageLog(" %.2f %.2f",var2,var3);
11시 반이후 표시가 되어야 하는데 전혀 표시가 되지 않습니다.
랭귀지 공부하고 있는데도 이부분은 잘 모르겠네요.
의도한 대로라면 오늘 11시 반이후 12시가 되는 시점에 위 식이 성립되어
표시가 되어야 하는데 안되고 있네요.
다시 한번 봐주세요.
2011-06-16
669
글번호 39867
답변완료
재문의
뭔가 이상한데요
직전 봉이 양봉이면 현재봉 시가에 매수
현재봉이 양봉으로 끝나면 포지션 유지이고
현재봉이 음봉으로 끝나면 다음봉 시가에 청산후 신규매도
이런수식인데 좀 전에 작성해 주신건 이렇게 안되는거 같습니다.
2011-06-16
695
글번호 39864
답변완료
신호 경보음
같이 질문드린다는 것이 깜박했습니다. 죄송~ ^^;;
분봉에서 data2 에 거래량 지표가 있다고 가정하면, (즉 지표식이 있을 때)
plot1(V);
으로 표시된 지표식이 있게 될텐데,
만약 해당 거래량이 10,000 이상 발생되는 순간부터 경보음을 울리라는 것을
지표식에서도 적용할 수 있는지요?
(분봉이 완성되기 전에라도 조건충족시 해당봉 완성시까지 계속 경보음 발생)
부탁드리겠습니다.
감사합니다~
2011-06-16
606
글번호 39861
답변완료
디버깅 관련..
if date != date[1] Then{
var1= H;
}
if H > var1 Then{
var1 = H;
ClearDebug;#출력된 디버깅창의 내용을 지움
messagelog("%.2f",var1);
}
위 내용상 이전값이 다 clrea 되버리던데요.
갱신 될때 새로
갱신된 값은 나두고 2봉이상 연속으로 출력(갱신 안되는 값)들만 clear 시킬수 있나요?
2011-06-16
664
글번호 39858
답변완료
예제 파일 지표식으로 변환 부탁드립니다.
Input:value(2.7),p1(36),p2(28),p3(5),stopPer(1);
Var: chUp(0), chDn(0),slowK(0),slowD(0), Bap(0);
setstoploss(StopPer);
chUp=dayOpen()+(DayHigh(1)-DayLow(1))/Value;
chDn=dayOpen()-(DayHigh(1)-DayLow(1))/Value;
slowK=StochasticsK(p1,p2);
slowD=StochasticsD(p1,p2,p3);
bap=(daylow()+dayhigh())/2;
if CrossUp(slowK,slowD)then {var1=C;var5=1;}
if CrossDown(slowK,slowD)then {var2=C;var6=1;}
예스스탁 시스템 정기교육자료에 나온시스템 식의 일부입니다.
지표식으로 부탁 좀 드리겠습니다.
전일 고가와 저가 평균가에서 위아래 27% 채널선이 그어지는 지표가 맞는지요?
감사합니다.
2011-06-16
685
글번호 39856