커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6138
글번호 230811
답변완료
시스템식 문의 드립니다.
요청드렸던 시스템식 관련해서 감사드리다는 말씀을 먼저 드리고 싶습니다.
항상 감사드립니다.
그리고 확인중에 하나 궁금한 점이 있어 이렇게 글을 남깁니다.
중간쯤 (약 89~90번째 줄) 에
if var1 > 0 and C < AvgEntryPrice then
ExitLong("bx");
이 문구가 있는데,
작성했던 이유는 var1 > 0 이라는것은 일부 청산을 했고, 1분봉상 종가가 평단만큼
다시 내려오면 매도청산하는 내용인데,
해당시스템식으로 돌려보니, 일부청산 이후 1분봉산 종가가 평단이 아니라 마지막
진입가격만큼 내려오면 매도 청산을 하는것을 볼수 있었습니다.
확인좀 부탁드리겠습니다. .
----------------------------------------------------------------------------
input : 고점(7000);
input : 원금(1000000);
var : A1(0),A2(0),A3(0),A4(0),A5(0), 손절(0);
Var : day(0),EntryDay(0),entry(False),dd(0),ED(0);
A1 = 고점*0.95;
A2 = 고점*0.93;
A3 = 고점*0.91;
A4 = 고점*0.89;
A5 = 고점*0.87;
손절 = 고점*0.85;
if Bdate != Bdate[1] Then
{
Condition1 = False;
entry = true;
day = day+1;
dd = dd+1;
}
if TotalTrades > TotalTrades[1] Then
entry = False;
if DAYClose(1) >= DayClose(2)*1.29
OR DAYClose(2) >= DayClose(3)*1.29
OR DAYClose(3) >= DayClose(4)*1.29
OR DAYClose(4) >= DayClose(5)*1.29
OR DAYClose(5) >= DayClose(6)*1.29
OR DAYClose(6) >= DayClose(7)*1.29
Then
Condition1 = TRUE;
if condition1 == true AND MarketPosition == 0 and entry == true and c > J1 Then
Buy("A매수",AtLimit,J1,Floor((원금*0.2)/A1));
if condition1 == true and entry == true and LatestExitName(1) != "손절" AND ((LatestEntryName(0) == "A매수") OR (MarketPosition == 0 AND C < J1 AND C >= J2)) Then
Buy("B매수",AtLimit,J2,Floor((원금*0.2)/A2));
if condition1 == true and entry == true and LatestExitName(1) != "손절" AND ((LatestEntryName(0) == "B매수") OR (MarketPosition == 0 AND C < J2 AND C >= J3)) Then
Buy("C매수",AtLimit,J3,Floor((원금*0.2)/A3));
if condition1 == true and entry == true and LatestExitName(1) != "손절" AND ((LatestEntryName(0) == "C매수") OR (MarketPosition == 0 AND C < J3 AND C >= J4)) Then
Buy("D매수",AtLimit,J4,Floor((원금*0.2)/A4));
if condition1 == true and entry == true and LatestExitName(1) != "손절" AND ((LatestEntryName(0) == "D매수") OR (MarketPosition == 0 AND C < J4 AND C >= J5)) Then
Buy("E매수",AtLimit,J5,Floor((원금*0.2)/A5));
#매수진입
if MarketPosition == 1 Then
{
#전봉대비 수량 감소(일부 청산발생을 위미)
if CurrentContracts < CurrentContracts[1] Then
{
#청산가 저장
var1 = LatestExitPrice(0);
Condition1 = False;
Condition2 = False;
Condition3 = False;
Condition4 = False;
Condition5 = False;
}
#전봉대비 수량 증가(추가 진입발생을 의미)
if CurrentContracts > CurrentContracts[1] Then
{
#현재수량 저장
Var3 = CurrentContracts;
Condition1 = False;
Condition2 = False;
Condition3 = False;
Condition4 = False;
Condition5 = False;
}
if var1 > 0 and C < AvgEntryPrice then
ExitLong("bx");
if Condition1 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수"))Then
ExitLong("3%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.4),1);
if Condition2 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then
ExitLong("4%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.3),1);
if Condition3 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then
ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor(Var3*0.1),1);
if Condition4 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then
ExitLong("7%익절",AtLimit,AvgEntryPrice*1.07,"",Floor(Var3*0.1),1);
ExitLong("10%익절",AtLimit,AvgEntryPrice*1.10);
if Condition1 == False AND ((LatestEntryName(0) == "D매수"))Then
ExitLong("1-D%익절",AtLimit,AvgEntryPrice*1.01,"",Floor(Var3*0.3),1);
if Condition2 == False AND ((LatestEntryName(0) == "D매수")) Then
ExitLong("2-D%익절",AtLimit,AvgEntryPrice*1.02,"",Floor(Var3*0.3),1);
if Condition3 == False AND ((LatestEntryName(0) == "D매수")) Then
ExitLong("3-D%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.3),1);
if Condition4 == False AND ((LatestEntryName(0) == "D매수")) Then
ExitLong("4-D%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.1),1);
if Condition1 == False AND ((LatestEntryName(0) == "E매수"))Then
ExitLong("본절",AtLimit,AvgEntryPrice*1.003,"",Floor(Var3*0.5),1);
if Condition2 == False AND ((LatestEntryName(0) == "E매수")) Then
ExitLong("1-E%익절",AtLimit,AvgEntryPrice*1.01,"",Floor(Var3*0.4),1);
if Condition3 == False AND ((LatestEntryName(0) == "E매수")) Then
ExitLong("2-E%익절",AtLimit,AvgEntryPrice*1.02,"",Floor(Var3*0.1),1);
}
Else#매수진입중이 아니면
{
#변수 0으로 초기화
var1 = 0;
Var2 = 0;
}
if MarketPosition == 1 Then
ExitLong("손절",AtStoP,손절);
2022-07-13
1566
글번호 160687
답변완료
시간 매수매도 문의
안녕하세요 개발자님.
시간 기준 시초가와 장마감 동시호가 매매 방법을 모르겠습니다.
질문 드리는 내용은 다음과 같습니다.
1. 시초가 매수 낮 12시 매도
2. 장 마감 동시호가 매수 다음날 시초가 매도.
3. 낮 12시 매수, 다음날 1시 매도.
항상 도움 주셔서 감사합니다~!
2022-07-12
1219
글번호 160686
신대륙발견 님에 의해서 삭제되었습니다.
2022-07-12
24
글번호 160685
미래펴다 님에 의해서 삭제되었습니다.
2022-07-12
3
글번호 160684
답변완료
함수 사용은 어떻게 하나요 (초보)
input : N(20);
var : RSD(0),MAV(0),MRS(0);
RSD = Data1(c)/data2(c) * 100;
mav = Data1(ma(RSD,N));
MRS = ((RSD /mav) - 1 ) * 100;
Plot1(MRS);
plot2(0);
주가 상대지수 함수 사용시 위와 같은 함수로 지표를 만들어서 사용하려다 보니
첨부처럼 예를 들어 효성첨단소재랑 코스피지수의 2개의 지수를 상대강도도 하려고 하는
데..
효성첨단소재랑 코스피지수 합쳐나도 안되고 사진처럼 위아래해도 안되면서
.//수식에서 참조할 2전빼 종목 데이타가 없다고 문구가 뜹니다..
제가 원하는 당초 질문은 종목을 한개 놓고 함수를 적용하면 즉 위의 예처럼
효성첨단소재(코스피종목)이면 코스피 종목의 차트를 놓고 상대강도지수 지표를 클릭하면
자동으로 코스피 상대강도와 비교되어 아래 차트에 코스피대비 종목 (효성첨단소재)의
상대강도가 지표로 표시되게 하려면 어떻게 하면되나요..
꼭 좀 부탁드립니다..
2022-07-12
1264
글번호 160682
oni 님에 의해서 삭제되었습니다.
2022-07-12
47
글번호 160681
답변완료
수정부탁드립니다
#,안녕하세요
아래식을 일봉,주봉에 적용할수 있도록 도움 부탁드립니다.
input : N(0),추세선굵기(0),추세선색상(0);
var : DD(0),D1(0),T1(0),idx(0),TF(0),TL(0),TL11(0),hh(0),ll(0),box(0);
var : MM1(0),박스색상(0),HH1(0),LL1(0);
if Bdate != Bdate[1] Then
{
DD = sDate;
idx = 0;
}
Else
idx = idx+1;
if DD > 0 Then
{
TF = idx%N;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
D1 = sDate;
T1 = sTime;
TL = TL_new(D1,T1,C,NextBarSdate,NextBarStime,C);
TL_SetColor(TL,추세선색상);
TL_SetSize(TL,추세선굵기);
hh = h;
ll = l;
HH1 = HH[1];
LL1 = LL[1];
MM1 = (HH1+LL1)/2;
box = Box_New(d1,t1,hh,NextBarSdate,NextBarStime,ll);
Box_SetFill(box,true);
}
Else
{
TL_SetBegin(TL,D1,T1,C);
TL_SetEnd(TL,sDate,sTime,C);
if h > hh Then
hh = h;
if l < ll Then
ll = l;
Box_SetBegin(box,d1,t1,hh);
Box_SetEnd(box,sDate,sTime,ll);
}
}
if C > MM1 Then
박스색상 = Magenta;#Magenta
Else
박스색상 = Blue;#LCyan
Box_SetColor(box,박스색상);
2022-07-12
1396
글번호 160680
답변완료
시스템 수식 도움 부탁드립니다.
input : Period(20),Period1(5),Period2(20),A(0);
var1 = ma(C,Period);
Var2 = ma(C,Period2);
Var3 = (ma(c,Period1)-Var2)/C*100;
if Crossup(C,Var1) and Var2 > Var2[1] and Var2[1] < Var2[2] and
CrossUp(Var3,A) Then
buy();
위의 시스템 수식으로 매도주문 수식 부탁드립니다.
조건은 매수가에서 손절-3% 익절20% 시장가 매도
추후에 손절,익절 수치만 바꾸면 수정이 되는건가요?
작성해 주실 수식을 기존 시스템조건명 화면안에 있는 위의 매수식 하단에 바로 붙여넣으면 되는지요?
2022-07-12
1498
글번호 160679
답변완료
함수요청
안녕하세요?
계좌는 한개인데 시스템 A와 시스템 B를 동시에 돌리고 싶습니다.
전략 실행 차트를 각각 띄우고 각각 적용하는 거 말고
시스템 A와 시스템 B를 한개의 스트립트로 재작성해서
시스템 C를 만들고 싶습니다.
시스템 A와 시스템 B를 각각 동시에 돌린 것과 시스템 C 한개를 돌린 것과 신호와 손익이 같도록 작성 요청드립니다.
시스템 A = 글번호 77970번에서 작성주신 스크립트
시스템 B = 글번호 77955번에서 작성주신 스크립트입니다.
/시스템 A
var : T(0),S(0),mav(0);
mav = ma(c,20);
if Bdate != Bdate[1] Then
{
T = 0;
S = 0;
if L[1] > mav[1] and H < mav Then
Sell("s",AtMarket);
if H[1] < mav[1] and L > mav Then
Buy("b",AtMarket);
}
if MarketPosition == -1 Then
{
if CrossUp(c,mav) Then
ExitShort("sx",AtMarket);
if L < DayLow(0)[1] and L[1] != DayLow(0)[1] Then
{
var1 = var1+1;
if var1 == 3 Then
ExitShort("sx1");
}
}
Else
var1 = 0;
if MarketPosition == 1 Then
{
if CrossDown(c,mav) Then
ExitLong("bx",AtMarket);
if H > DayHigh(0)[1] and H[1] != DayHigh(0)[1] Then
{
var2 = var2+1;
if var2 == 3 Then
ExitLong("bx1");
}
}
Else
Var2 = 0;
SetStopEndofday(151500);
/시스템B
var : T(0),S(0),mav(0);
mav = ma(c,20);
if Bdate != Bdate[1] Then
{
T = 0;
S = 0;
if L > mav Then
T = -1;
if H < mav Then
T = 1;
}
if T == -1 and CrossDown(C,mav) Then
{
S = S+1;
if S == 2 Then
Sell();
}
if T == 1 and CrossUp(C,mav) Then
{
S = S+1;
if S == 2 Then
Buy();
}
if MarketPosition == 1 and Bdate == Bdate[1] and C < DayLow(0)[1] Then
ExitLong("bx",AtMarket);
if MarketPosition == -1 and Bdate == Bdate[1] and C > DayHigh(0)[1] Then
ExitShort("sx",AtMarket);
SetStopEndofday(151500);
2022-07-12
1505
글번호 160678