커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5481
글번호 230811
답변완료
시스템 식 요청 드립니다.
안녕하세요 지난번에 도움을 주셔서 제가 생각한 시스템식을 작성하게
되었습니다.
그리고 분할매도 되었을때 평단에 대한 궁금증이 해소되지 않아
주말에 시스템식을 수정하였는데, 어려움이 있어 글을 남기게 되었습니다.
먼저 그림 1을 보시면, 중간에 분할익절된 후에 평단이 진입시점의 평단으로 올라가는 것을
볼수 있었습니다. 예를들어 4차 분할익절을 하였는데, 4차 익절 후 평단이 그대로
있어야 하는데 3차 진입 평단으로 올라가는것이였습니다.
그래서 아래와 같이 시스템식을 수정하였고,
VAR9에 평단을 작성해서 넣어놨습니다. 수량이 늘었을때는 평단과 수량이 제대로 나오는데
그림 2번을 보시면 수량이 줄었을때는 평단이 안나오더라구요
수량이 늘었을때와 줄었을때 내부변수 VAR9가 서로 연동이 안되는 것 같았습니다
시스템식 수정 부탁드리겠습니다.
--------------------------------------------
input : N(14),금액(2000000);
input : 시작날짜 (20250109);
Input : 기준선기간(120);
Var : 기준선(0);
var : cntt(0),H1(0),L1(0);
var : cnt(0),sum(0),mav(0),DD(0);
var : AP(0),TT(0),entry(False);
var : LL(0),RR(0),rate(0);
var : 저항(0), B1(0) ;
Var : day(0),EntryDay(0),ddd(0),ED(0);
var : sum1(0),sum2(0),sum3(0),avg4(0),avg5(0),avg6(0);
#-------------------------------------
if sDate >= 시작날짜 Then
{
if Bdate != Bdate[1] Then
{
entry = true;
day = day+1;
dd = dd+1;
}
}
if TotalTrades > TotalTrades[1] Then
entry = False;
#-------------------------------------
#-------------------------------------
sum = 0;
For cnt = 0 to N-1
{
sum = sum + DayClose(cnt);
}
mav = (sum/N);
#-------------------------------------
#---------------------------------------
if (MarketPosition == 0) and (entry == true) and L > mav Then
Buy("1차매수",AtLimit,mav,Floor(금액/min(NextBarOpen,mav)));
if MarketPosition == 1 and L > EntryPrice*0.95 and CurrentEntries == 1 Then
Buy("2차매수",AtLimit,EntryPrice*0.95,Floor(금액*1.15/min(NextBarOpen,mav)));
if MarketPosition == 1 and L > EntryPrice*0.90 and CurrentEntries == 2 Then
Buy("3차매수",AtLimit,EntryPrice*0.90,Floor(금액*1.2/min(NextBarOpen,mav)));
if MarketPosition == 1 and L > EntryPrice*0.85 and CurrentEntries == 3 Then
Buy("4차매수",AtLimit,EntryPrice*0.85,Floor(금액*1.25/min(NextBarOpen,mav)));
if MarketPosition == 1 and L > EntryPrice*0.80 and CurrentEntries == 4 Then
Buy("5차매수",AtLimit,EntryPrice*0.80,Floor(금액*1.3/min(NextBarOpen,mav)));
if MarketPosition == 1 and L > EntryPrice*0.75 and CurrentEntries == 5 Then
Buy("6차매수",AtLimit,EntryPrice*0.75,Floor(금액*1.35/min(NextBarOpen,mav)));
#-----------------------------------
if MarketPosition == 1 Then
{
#전봉대비 수량 감소(일부 청산발생을 위미)
if CurrentContracts < CurrentContracts[1] Then
{
#최근 청산가 저장
var1 = LatestExitPrice(0);
if LatestExitName(0) == "3%익절" Then
Condition1 = true;
if LatestExitName(0) == "4%익절" Then
Condition2 = true;
if LatestExitName(0) == "5%익절" Then
Condition3 = true;
if LatestExitName(0) == "7%익절" Then
Condition4 = true;
Var5 = CurrentContracts;
Var6 = AvgEntryPrice;
#Var8은 평단임 수량이 줄면 전에 평단 가져다 써야지.
var9 = AvgEntryPrice[1];
}
#전봉대비 수량 증가(진입발생)
if CurrentContracts > CurrentContracts[1] Then
{
#Condition1~4는 False로 초기화
Condition1 = False;
Condition2 = False;
Condition3 = False;
Condition4 = False;
#진입횟수가 3회이하일때
#수량과 평단가
if CurrentEntries <= 3 Then
{
Var3 = CurrentContracts;
Var4 = AvgEntryPrice;
}
#최근 진입시점까지의 수량과 평단가
#현재 수식에서는 사용되는 부분이 없습니다. 필요하실따봐 변수로 남겨드립니다.
Var5 = CurrentContracts;
Var6 = AvgEntryPrice;
#Var9
Var9 = ((AvgEntryPrice[1]*CurrentContracts[1])+(LatestEntryPrice(0)*(CurrentContracts - CurrentContracts[1])))/ (CurrentContracts) ;
}
#현재 진입횟수가 3회 이하이고(1,2,3차 매수만 남은 상태)
#3,4,5,7% 청산중 하나가 발생했으면
#종가가 3차매수까지의 평단가 이하로 내려오면 청산
if CurrentEntries <= 3 and
(Condition1 == true or Condition2 == true or Condition3 == true or Condition4 == true) and
C < Var4*1.007 then
ExitLong("bx");
if Condition1 == False AND CurrentEntries <= 3 Then
ExitLong("3%익절",AtLimit,Var6*1.03,"",Floor(Var3*0.2),1);
if Condition2 == False AND CurrentEntries <= 3 Then
ExitLong("4%익절",AtLimit,Var6*1.04,"",Floor(Var3*0.3),1);
if Condition3 == False AND CurrentEntries <= 3 Then
ExitLong("5%익절",AtLimit,Var6*1.05,"",Floor(Var3*0.4),1);
if Condition4 == False AND CurrentEntries <= 3 Then
ExitLong("7%익절",AtLimit,Var6*1.07,"",Floor(Var3*0.1),1);
ExitLong("10%익절",AtLimit,Var6*1.10);
//4차 이상 진입
if CurrentEntries >= 4 Then
{
//4차 이후의 평균
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "4차매수" Then
{
avg4 = LatestEntryPrice(0);
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "5차매수" Then
{
avg5 = LatestEntryPrice(0);
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "6차매수" Then
{
avg6 = LatestEntryPrice(0);
}
if CurrentEntries >= 4 Then
ExitLong("4차매수익절",AtLimit,avg4*1.045,"4차매수");
if CurrentEntries >= 5 Then
ExitLong("5차매수익절",AtLimit,avg5*1.045,"5차매수");
if CurrentEntries >= 6 Then
ExitLong("6차매수익절",AtLimit,avg6*1.045,"6차매수");
}
Else
{
avg4 = 0;
avg5 = 0;
avg6 = 0;
}
}
Else#매수진입중이 아니면
{
#변수 0으로 초기화
var1 = 0;
Var2 = 0;
}
-------------------------------------------------
2025-03-10
580
글번호 188975
파워 님에 의해서 삭제되었습니다.
2025-03-10
246
글번호 188974
답변완료
종목 검색부탁드립니다.
***아래 수식을 참고하여,
1. 수식1) 이 수식2) 를 돌파할때 종목 검색식
2. 수식1) 이 수식2) 를 돌파할때 종목 검색식(단, 0봉전~20봉전 모든종목)
3. 수식1) 이 수식2)의 위에 있을때 종목 검색식
4. 수식1) 이 수식2)의 위에 있을때 종목 검색식(단, 0봉전~20봉전 모든종목)
5. 수식1) 과 수식2) 가 골든크로스 전 초근접(0.5%이하)상태 종목 검색식
부탁드립니다. 감사합니다
-------아래-------
수식1)
A=(C-lowest(C,period))/C*100;
max(A,0)
수식2)
B=(highest(C,period)-C)/C*100;
max(B,0)
-----
period 60
2025-03-10
359
글번호 188973
답변완료
문의 드립니다
안녕하세요
input : length(20);
var : lower(0),upper(0),basis(0);
lower = lowest(l,length);
upper = highest(h,length);
basis = (upper+lower)/2;
plot1(basis, "Basis", Orange);
plot2(upper, "Upper", Blue);
plot3(lower, "Lower", Blue);
위 수식에서 각선의 각도가 상승이면 빨강으로 하락이면 파랑으로 수평이면 검정으로
표시하고자 합니다.
부탁드립니다.
감사합니다
2025-03-10
375
글번호 188952
답변완료
종목검색식 부탁드림니다.
항상 노고에 감사드림니다.
아래의 수식을 종목검색식으로 부탁드림니다.
CrossUp(C, C(20)) &&
CrossUp(C, C(60)) &&
C>O &&
V>=V(1)*3
2025-03-10
383
글번호 188944
답변완료
스위칭 시스템식 요청드립니다.
진입했던 방향에 대해 손절이 나가면 바로 반대방향으로 진입하는 시스템식 요청드립니다.
매수진입 신호가 나와서 매도방향 진입되어있는걸 손절하고 매수를 진입하는게 아니라
매도가 진입되어 있는 상태에서 손절이 나가면 매수진입이 되게끔 하고 싶습니다.
매도 손절이 매수 진입의 조건이 되게끔 하고 싶습니다.
가능하면 손절나간걸 신호로 보고 다음봉에 진입하는게 아니라
손절가에서 바로 진입되었으면 좋겠습니다.
혼자서 해봤는데 매수매도를 계속 반복해서 진입해서 요청드립니다.
감사합니다.
2025-03-10
364
글번호 188943
답변완료
종목검색식 요청드립니다.
n봉이내에 아래신호가 발생한 최신봉을 기준으로 현재가격이 신호발생했던 봉의 절반 이하에 위치한 종목을 검색하는 검색식을 만들고 싶습니다. 도움 부탁드립니다.
(신호발생한 봉을 기준으로 75%이하, 50%이하, 25% 이하 등 조정 가능하면 조정가능하게 부탁드리겠습니다.) 항상 감사합니다.
키움신호
A=eavg(C,20);
기준선=(highest(high,midPeriod)+lowest(low,midPeriod))/2;
전환선=(highest(high,shortPeriod)+lowest(low,shortPeriod))/2;
기준선>=A && 전환선>=A && 전환선>=기준선
&& 전환선>전환선(1) && 기준선>기준선(1) && C>O
2025-03-10
340
글번호 188942
답변완료
종목 검색 부탁드립니다.
A=wavg(2*wavg(종가,120/2) - wavg(종가,120), floor(sqrt(120)));
위 라인 돌파 종목 검색식 부탁드립니다
2025-03-10
390
글번호 188939
이루나라 님에 의해서 삭제되었습니다.
2025-03-10
0
글번호 188935