커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6440
글번호 230811
답변완료
수식문의
# 아래수식에서 매수나 매도시 10틱이밀리면 추가1계약 매수매도하는식부탁합니다
Input : Period(14);
var : TSF(0);
TSF = LRL(C,Period)+LRS(C,Period);
if TSF > TSF[1] Then
buy();
Else if TSF < TSF[1] Then
sell();
2016-03-21
186
글번호 96477
답변완료
수식요청드립니다.
안녕하세요.
당일청산 피라미딩 시스템에서 매도, 매수 포지션 진입 후 목표수익달성, 지수이평선
기울기 각도, 현재봉의 종가에 수익청산 시스템 수식 요청드립니다.
<< 청산조건 3가지 필수 청산조건 >>
-> 매수진입 후 20 지수이평선 기울기 각도가 계속상승 조건발생(반대로 하락시 수식적용 제외)
1. 3PT 이상 목표수익 발생 후
2. 목표수익 발생 후, 고점에서 20 지수이평선 기울기 10%(또는 10도) 하락하고
3. 고점에서 20 지수이평선 기울기 각도가 상승, 횡보, 10%(또는 10도) 하락 시 현재봉의 종가에 수익청산
-> 매도진입 후 20 지수이평선 기울기 각도가 계속하락 조건발생(반대로 상승시 수식적용 제외)
1. 3PT 이상 목표수익 발생 후
2. 목표수익 발생 후, 저점에서 20 지수이평선 기울기 10%(또는 10도) 상승하고
3. 저점에서 20 지수이평선 기울기 각도가 상승, 횡보, 10%(또는 10도) 상승시 현재봉의 종가에 수익청산
( 이평선 기울기는 %와 각도 중 이평선 기울기 판단에 유리한 조건으로 적용해 주세요)
감사합니다.
2016-03-22
193
글번호 96475
답변완료
질문
매수: 가격이 시작가 5원 이하로 내려간후 가격이 다시 시작가 5원이상 오를 때 매수
(가격이 시작가 이하로 내려간 적이 없으면 매수 하지 않음)
매도: 가격이 시작가 5원 이하로 내려갈 때 매도
2016-03-21
154
글번호 96474
답변완료
부탁합니다.
아래수식에서 중복진입이 허용되지 않도록 하려면 어떻게 하여야 하나요?
var entry,T;
function Main_OnStart()
{
T = 0;
Main.MessageLog("시작");
OrderCode = Main.GetOrderCode(SP.code);
entry = 0;
}
function CTP_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
if (T <= 0 && Signal.signalKind == 1)
{
T = 1;
entry = entry+1;
Main.KillTimer(2);
if (entry == 1)
VV = 1;
else
VV = 2;
Main.SetTimer(1, 180000);
}
if (T >= 0 && Signal.signalKind == 3)
{
T = -1;
entry = entry+1;
if (entry == 1)
VV = 1;
else
VV = 2;
Main.KillTimer(1);
Main.SetTimer(2, 180000);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1 && T == 1)
{
Main.KillTimer(1);
A1.OrderBuy(SP.code, VV, SP.Ask(5),2);
Main.MessageLog("매수진입");
}
if (nEventID == 2 && T == -1)
{
Main.KillTimer(2);
A1.OrderSell(SP.code, VV, SP.Bid(5),2);
Main.MessageLog("매도진입");
}
}
2016-03-21
174
글번호 96471
답변완료
문의드립니다.
작성하여 주신 수식에 항상 감사드립니다.
1분봉상 적용입니다.
1. 매수 : 30분 이내에 고가(a)와 저가(b)의 차이가 2%이상으로 하락한 경우 매수
2. 매도 : (a)와 (b)의 1/2지점만큼 상승시 매도
감사합니다.
2016-03-21
164
글번호 96464
답변완료
수식문의합니다.
수식문의합니다.
문의1: 당일고가와 당일저가의 중심선을 만들고 싶습니다.신고가와 신저가가 만들어 지기전까지는 수평선이 변화지 않고 그대로 유지하는선요 색깔은 연두색으로요
문의2: 20일 이동평균선과 120일 이동평균선의 색깔이 변하게 하고싶습니다. 오를때는 빨강 내릴때는 파랑으로요 부탁드립니다.
2016-03-21
187
글번호 96462
답변완료
수식요청드립니다.
안녕하세요.
당일청산 진입식 매수, 매도 후 i증감으로 피라미딩 진입하는 수식을
진입후 다음봉 종가에 피라미딩이 진입 추가 되도록 수정 요청드립니다.
( 진입 후 i증감의 +/- 에 무관, 진입 후 다음 완성봉 종가마다 계속해서
진입방행으로 피라미딩 진입 추가)
input : i증감(0.5),누적진입횟수(3),진입수량(1);
if MarketPosition == 1 and Bxcond == false and
MaxEntries < 누적진입횟수 Then
Buy("PBB",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and SxCond == false and
MaxEntries < 누적진입횟수 Then
sell("PSS",AtStop,LatestEntryPrice(0)-i증감,진입수량);
감사합니다.
2016-03-21
169
글번호 96460
답변완료
시스템 검증
밑에 리플로 달았는데 못보신것 같아서 다시 올립니다.
만들어 주신 시스템으로 시험적용 해봐도 해당사항이 되는데 안뜨네요.
예를 들어 코데즈컴바인047770 3월16일에 떠야하는데 안뜹니다. 1분봉 적용
input : N(15);
Array : DM[50](0),Cond[50](false);
var : 상한가(0), UpLimit(0),cnt(0),sumM(0),avgM(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date != date[1] Then{
Cond[0] = false;
DM[0] = 0;
for cnt = 1 to 49{
DM[cnt] = DM[cnt-1][1];
Cond[cnt] = Cond[cnt-1][1];
}
}
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
if CodeCategory() == 2 then {
if date >= 20030721 then {
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
up7 = int(UpLimit/1+0.00001)*1;
}
}
Else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
if H >= 상한가 Then
cond[0] = true;
DM[0] = DM[0]+M;
if DM[N] > 0 Then{
sumM = 0;
Condition1 = false;
for cnt = 1 to N{
sumM = sumM + DM[N];
if Cond[cnt] == true Then
Condition1 = false;
}
avgM = sumM/15;
if ExitDate(1) != sdate and
stime < 130000 and
avgM >= 3000000000 and
Condition1 == true and
C > dayopen and
DayVolume > DayVolume(1)*0.7 and
C <= DayClose(1)*0.9 Then
buy();
}
if MarketPosition == 1 Then{
ExitLong("BP1",atlimit,EntryPrice*1.05);
ExitLong("BP2",atlimit,EntryPrice*1.10);
ExitLong("BL",atlimit,EntryPrice*0.97);
}
SetStopEndofday(144000);
아 그리고 90일중 상한가가 포함되어있고 최근
15일 평균 거래대금 30억 이상 종목을 검색하고 싶은데
위에 포함된 수식이 있는데 검색추가해도 잘 안되네요.
초보라 죄송합니다. 제가 잘못 추가했나본데 자세히 설명해주시면 감사합니다.
2016-03-21
184
글번호 96459
답변완료
20,60이평의 교차지점을 점이나 선으로 표시하기
20이평과 60이평의 교차하는지점을 선이나 점으로 표시하기위해 아래와같이 작성하였습니다
여기서 점으로표시되는 점이 표현되고 다시 반대로 크로스 되면 이전에 표시되었던 선이나 점의 더이상 표현되지 않고 정지되게 하고 싶습니다
가능할까요?
자세한 질문은 그림첨부드렸습니다
답변 부탁드립니다
감사합니다
input:P1(20), p2(60);
var1=ma(c,p1);
var2=ma(c,p2);
if crossup(var1,var2) then var3=var2;
if CrossDown(var1,var2) then var4=var2;
plot1(var1, "단기이평");
plot2(var2, "중기이평");
plot3(var3, "상승교차");
plot4(var4, "하락교차");
2016-03-21
239
글번호 96458