커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1402
글번호 230811
답변완료
reverse(T조건화)
아래는
buy,sell 리버스 수식을
buy진입수식을 T조건화한 후 sell 진입하는 것으로 바꾼 수식입니다.
즉, buy 조건 만족 후 sell 입니다.
그런데, 문제점이 있습니다.
buy 조건과 sell 진입 건 모두 장시작 기준으로 봉계산을 하기 때문에
buy 조건을 먼저 만족하면 sell 진입도 계산하여 진입하므로 문제가 없으나,
sell 진입 조건을 먼저 만족하면 문제가 발생합니다.
sell 진입 조건 만족하면 대기하고 있다가
buy 조건이 만족하면 즉시 sell 진입을 합니다.
이렇게 진입하면 안되고
buy 조건 만족하면 그 때부터 sell 진입을 위한 계산을 해서 진입해야 합니다.
이문제를 해결하려면
sell 진입수식에 buy 조건을 만족한 후부터 봉계산을 한다는 내용을 추가해야 합니다.
수식 수정 부탁드립니다.
항상 고맙습니다.
*********************************************************************************
input : up진입시간(084500),up진입제한시간(091200),uup(20),up눌림(2),up돌파(2); //Buy진입을 T조건화
input : dn진입시간(084500),dn진입제한시간(091200),ddn(20),dn눌림(8),dn돌파(0); //Sell진입
var : cnta(0,Data1),cntb(0,Data1);
var : LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),V1(0);
var : Tcond(false);
var : T(0);
var : T1(0),entry(0);
if Bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if Bdate != Bdate[1] Then
{
cnta = 0;
cntb = 0;
}
if Data1(Bdate != Bdate[1]) Then
T = 0;
if (sdate != sdate[1] and stime >= up진입시간) or
(sdate == sdate[1] and stime >= up진입시간 and stime[1] < up진입시간) Then
Tcond = true;
if (sdate != sdate[1] and stime >= up진입제한시간) or
(sdate == sdate[1] and stime >= up진입제한시간 and stime[1] < up진입제한시간) Then
Tcond = false;
if (sdate != sdate[1] and stime >= up진입시간) or
(sdate == sdate[1] and stime >= up진입시간 and stime[1] < up진입시간) Then{
E1 = 0;
LL = L;
}
if stime >= up진입시간 then{
if L < LL Then
LL = L;
if cnta < 1 Then{
if E1 == 0 and C >= LL+PriceScale*uup and C[1] < LL+PriceScale*uup Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
#저가가 시작봉종가보다 클때만 눌림체크
if L >= V1 and L <= H1-PriceScale*up눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*up돌파 and Tcond == true Then{
cnta = cnta+1;
{
T=1; //Buy진입을 T조건화
}
}
}
}
var : HH(0),E2(0),i2(0),S2(0),L1(0),V2(0);
if (sdate != sdate[1] and stime >= dn진입시간) or
(sdate == sdate[1] and stime >= dn진입시간 and stime[1] < dn진입시간) Then
Tcond = true;
if (sdate != sdate[1] and stime >= dn진입제한시간) or
(sdate == sdate[1] and stime >= dn진입제한시간 and stime[1] < dn진입제한시간) Then
Tcond = false;
if (sdate != sdate[1] and stime >= dn진입시간) or
(sdate == sdate[1] and stime >= dn진입시간 and stime[1] < dn진입시간) Then{
E2 = 0;
HH = H;
}
if stime >= dn진입시간 then{
if H > HH Then
HH = H;
if cntb < 1 Then{
if E2 == 0 and C <= HH-PriceScale*ddn and C[1] < HH-PriceScale*ddn Then{
E2 = 1;
L1 = L;
i2 = index;
V2 = HH; //시작점 종가
}
if E2 == 1 and index > i2 then{
if L < L1 Then
L1 = L;
#고가가 시작봉종가보다 작을 때만 눌림체크
if H <= V2 and H >= L1+PriceScale*dn눌림 Then{
E2 = 2;
i2 = index;
S2 = L1;
}
}
//시작점 종가보다 높은 가격이 발생하면 초기화
if E2 >= 1 and H > V2 Then{
E2 = 0;
HH = H;
}
if T==1 and E2 == 2 and index > i2 and C <= S2-PriceScale*dn돌파 and Tcond == true Then{
cntb = cntb+1;
{
T=2;
Sell("s");
}
}
}
}
2024-08-01
935
글번호 180378
답변완료
문의 드립니다.
아래식에서 매수가 여러차례 된 상황에서 시가를 아래로 이탈하는 경우
매수된 모든 수량을 청산완료 하여 손절처리하고자 합니다.
가능하다면 부탁드립니다.
Input : Period(12),수량(10);
value1 = TRIX(Period);
If CrossDown(value1, 0) and C > DayOpen(0) Then
{
Buy("b",OnClose,Def,수량);
}
2024-06-05
1109
글번호 180377
답변완료
문의드립니다
시스템식
매수
매수청산
질문입니다
1분차트에서
삼성전자를
매수
양봉이면
100만원 매수
매수청산
3% 수익돌파시 수량1/3 청산
6% 수익돌파시 수량1/3 청산
9% 수익돌파시 수량나머지 청산
상한가 진입시 수량모두 청산
입니다
2024-06-05
789
글번호 180370
답변완료
정규분포 수식 부탁드립니다.
검색해 보았으나, 다운로드 할수 없습니다.
부탁드립니다.
2024-06-05
1068
글번호 180368
답변완료
문의
1. 30분 60분 90분 120분 등에서의
주기별 이동평균선의 값을 구하는 사용자 함수를 만들고 싶습니다.
예를 들면 30분봉에서의 20이평값을 구하는 사용자 함수
60분봉에서의 60이평값을 구하는 사용자 함수 등 입니다
즐거운 연휴 되세요 ^^
2024-06-05
838
글번호 180364
답변완료
수정체결강도 문의
체결강도 수식을 좀 변경해서 사용하고 싶습니다.
예를 들어 아침에 체결강도가 상방 혹은 하방으로 크게 나온경우, 그후 체결강도 방향의 변이가 반대로 바뀌게 된 경우에도, 그래프는 아침의 영향을 받은 방향으로 계속 그래프로 나타내 주게 됩니다.
그래서 그러한 영향을 제거하고자 체결강도 수식을 좀 변경해 보았습니다.
장시작후 처음에는 당일의 체결강도 누적이 영향을 미치게 만들고, 지정시간 이후에는 특정기간 (예를들어 체결강도 60 이평) 이 영향을 미치게 만들고 싶었슴니다.
만들어본 수식은 다음과 같습니다.
input : 지정시간(100000),기간(60);
var : a(0),b(0);
var1 = accumn(upvol,dayindex+1);
var2 = accumn(DownVol,dayindex+1);
var3 = var1/var2*100-100; --> -100 은 기준선을 100 에서 0으로 변경하기 위함.
a=ma(Var3,기간);
if sTime > 지정시간 Then
b = A ;
Else b = Var3 ;
plot3(b,"수정체결강도",IFf(b-b[1]>0,Red,Blue));
결과는 다음과 같습니다.
1분봉 기준 차트에서는 지정시간 9시45분 이후부터 맞아 들어가고, 2분봉 차트의 경우 10시 45분 부터 맞아 들어 가는듯.. (그림1. 참고)
다시 예를들어 2분봉 그래프에서 지정시간을 10시로 맞추어 놓으면, 10시부터 10시 45분 까지는 잘못된 챠트를 그리게 됩니다.
a = ma (var3, 기간);
--> 이 식에서 문제가 발생.
이평 수식을 사용하다 보니 금일 시초가 부터 지정된 수량 60개에 미달할 경우, 60개에서 부족한 수량 만큼을 전일의 체결강도 봉수를 가져오게 되어 오차 발생.
어떠케 하면 이 문제를 해결할수 이쓸까요 ???
(1분봉 2분봉만 사용한다면, 그럭저럭 쓸수도 있겠지만, 3분, 5분, 10분 이런거 볼때 문제가 생김...)
2024-06-05
1299
글번호 180350
답변완료
전환추세 크기 둘
Input : 전환(0.2);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""), TL(0),TX(0),TX2(0);
Array:고[10,4](0),저[10,4](0);
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1]+전환 <= HH and hiBar == 0;
Condition2 = 고[1,1]-전환 >= LL and loBar == 0;
처리구분 = "";
If Condition1 and Condition2 Then
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL,1);
TL_SetColor(TL,RED);
}
Else If 고[1,1] < HH[hiBar] Then
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
Plot1(고[1,1]);
NoPlot(2);
}
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL,1);
TL_SetColor(TL,BLUE);
Condition99 = False;
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
if Condition99 == False and 저[1,1] <= 고[1,1]-0.45 and 저[2,1] <= 고[2,1]-0.45 Then
{
Condition99 = true;
TL_New(sDate,sTime,0,sDate,sTime,999);
}
Plot2(저[1,1]);
NoPlot(1);
}
하락추세선의 크기가 연속해서 0.45 이상일 때 세로선에서,
두번째 0.45 이상에서 양전환시 매수, 다음봉에 매수청산.
추가. 직전(첫번째) 하락추세선의 크기가 0.9 이상일 때, 다음(두번째,크기 무관) 하락추세선이 양전환시 매수, 다음봉에 매수청산. 감사합니다.
2024-06-05
1397
글번호 180349
답변완료
예스트레이더 종목검색으로 요청합니다...
안녕하세요...
항상감사합니다...
아래 첨부화일은 영웅문 조건검색인데,
이것을 예스 종목검색으로 간곡히 요청드립니다...
2024-06-05
1278
글번호 180348
답변완료
종목검색식 알고싶습니다.
이동평균 5선과 20선 중 에서 4봉이내에서 순서는 관계없이 주가가(종가상) 5선과 20선을
돌파했다면 그 종목을 찾고 싶습니다. 1봉에 동시 돌파도 되고
2봉 이내도 되고
3봉 이내도 되고
4봉 이내까지만
5선 먼저 돌파후 20선 돌파도 되고요 또 20선 먼저 돌파후 5선돌파도 되고요
동시 돌파도 됩니다.
2024-06-05
1172
글번호 180347