커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3544
글번호 230811
답변완료
수식 수정 부탁드립니다...
안녕하세요...
먼저 작성해주신 수식 감사하게 잘 사용 하고 있습니다...
그런데 매수, 매도 시스템 전부 시스템성능 보고서와 전략실행 차트에서 수익과 손실을 잘못 인식 하는것 같습니다...
수익이 발생하여도 손실로 표시 되기도 하고 손실이 발생하여도 수익으로 표시 되기도 합니다...
그리고 시스템 성능 보고서에서 수익 손실 포인트도 오류가 나는것 같습니다...
확인 부탁드립니다...
감사합니다...
아래는 수식 원본 입니다...
안녕하세요
예스스탁입니다.
당일청산은 임의로 05시30분으로 지정했습니다.
1. 매수
input : Tick(10);
var : TT(0),T1(0),entry(0);
var1 = PriceScale*tick;
TT = TotalTrades;
if sDate != sDate[1] Then
SetStopEndofday(053000);
if Bdate != Bda1te[1] Then
{
SetStopEndofday(0);
T1 = TT[1];
}
entry = IFf(MarketPosition == 0,TT-T1,TT-T1+1);
if MarketPosition == 0 Then
{
if entry == 0 Then
Buy("b1",AtLimit,DayOpen-PriceScale*160);
if entry == 1 Then
{
if IsExitName("bp1",1) == true Then
Buy("b21",AtLimit,DayOpen-PriceScale*260);
if IsExitName("bl1",1) == true Then
Buy("b22",AtStop,DayOpen-PriceScale*260);
}
}
if MarketPosition == 1 Then
{
if entry == 1 Then
{
ExitLong("bp1",AtLimit,EntryPrice+PriceScale*40);
ExitLong("bl1",AtStop,EntryPrice-PriceScale*180);
}
if entry == 2 Then
{
ExitLong("bp2",AtLimit,EntryPrice+PriceScale*50);
ExitLong("bl2",AtStop,EntryPrice-PriceScale*180);
}
}
2. 매도
input : Tick(10);
var : TT(0),T1(0),entry(0);
var1 = PriceScale*tick;
TT = TotalTrades;
if sDate != sDate[1] Then
SetStopEndofday(053000);
if Bdate != Bda1te[1] Then
{
SetStopEndofday(0);
T1 = TT[1];
}
entry = IFf(MarketPosition == 0,TT-T1,TT-T1+1);
if MarketPosition == 0 Then
{
if entry == 0 Then
Sell("s1",AtLimit,DayOpen+PriceScale*160);
if entry == 1 Then
{
if IsExitName("sp1",1) == true Then
Sell("s21",AtLimit,DayOpen+PriceScale*260);
if IsExitName("sl1",1) == true Then
Sell("s22",AtStop,DayOpen+PriceScale*260);
}
}
if MarketPosition == -1 Then
{
if entry == 1 Then
{
ExitShort("sp1",AtLimit,EntryPrice-PriceScale*40);
ExitShort("sl1",AtStop,EntryPrice+PriceScale*180);
}
if entry == 2 Then
{
ExitShort("sp2",AtLimit,EntryPrice-PriceScale*50);
ExitShort("sl2",AtStop,EntryPrice+PriceScale*180);
}
}
즐거운 하루되세요
> 황금호랑이 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다...
> 시스템을 매수용 따로 매도용 따로 부탁드립니다...
틱으로 계산했는데...틱으로 계산이 안되는 경우 포인트로 해주셔도 괜찮습니다...
10틱= 1포인트
매수용 (해외선물 골드)
1차 매수 조건
당일시가 대비 -160틱 하락하면 매수 진입
1차 매도청산 조건
익절 1차 진입가 대비 +40틱
손절 1차 진입가 대비 -180틱
2차 매수조건
1차 진입 조건에서 익절이 난 경우
당일시가 대비 -260틱 하락 하면 매수 진입
1차 진입 조건에서 손절이 난 경우(시가대비 -340틱 하락 한 경우)
당일 시가 대비 -260틱 하락 하면 매수 진입 하여야 하는데 이미 -340틱이 났으므로
기다렸다가 손절가 대비 +80틱 오르면 매수진입
2차 청산조건
익절 2차 진입가 대비 +50틱
손절 2차 진입가 대비 -180틱
1차 매수조건에서 익절 혹은 손절이 된 경우 1차 매수조건에서는 진입하지 않고
2차 매수조건에서만 진입
2차 익절 혹은 손절 이후 매매 중지
매도용 (해외선물 골드)
1차 매도 조건
당일시가 대비 +160틱 상승하면 매도 진입
1차 매수청산 조건
익절 1차 진입가 대비 -40틱
손절 1차 진입가 대비 +180틱
2차 매도조건
1차 진입 조건에서 익절이 난 경우
당일시가 대비 +260틱 상승 하면 매도 진입
1차 진입 조건에서 손절이 난 경우(시가대비 +340틱 상승 한 경우)
당일 시가 대비 +260틱 상승 하면 매도 진입 하여야 하는데 이미 +340틱이 났으므로
기다렸다가 손절가 대비 -80틱 하락 매도진입
2차 청산조건
익절 2차 진입가 대비 -50틱
손절 2차 진입가 대비 +180틱
1차 매도조건에서 익절 혹은 손절이 된 경우 1차 매도조건에서는 진입하지 않고
2차 매도조건에서만 진입
2차 익절 혹은 손절 이후 매매 중지
감사합니다...
2025-04-25
367
글번호 190431
답변완료
질문드립니다
항상 질문에 답해주셔서 감사드립니다.
키움 신호수식인
crossup(c,bbandsup(기간,2))
and sum(if(v(1)*4<=v,1,0),40)>=1
&& v>v(1)*배수
여기서 기간 조건은 40.배수조건은는 5인 이 신호수식을
예스스탁의 파워종목 검색식으로 어떻게 바꾸면 될까요??
2025-04-25
296
글번호 190423
답변완료
수식 확인 좀 부탁 드립니다.
파라볼릭매수신호중에 익절하면 같은 매수신호에는 재진입하지 않는다.는 식을 아래와 같이 주셨는데 여전히 매수신호중에 여전히 재진입이 됩니다. 수정 좀 부탁드립니다.
Input : af(0.02), maxAF(0.2);
Var : Sarv(0);
Sarv = sar(af,maxAF);
If crossup(c,Sarv) Then
{
Buy();
}
If CrossDown(c,Sarv) Then
{
Sell();
}
참고로 익절은
if 200 < H-Sarv Then
ExitLong("bx2",AtStop,Sarv+200);
식으로 익절하였습니다.
2025-04-25
328
글번호 190421
답변완료
문의 드려요
틱 데이터를 엑셀로 받을수 있나요??
2025-04-25
297
글번호 190420
러블리 님에 의해서 삭제되었습니다.
2025-04-25
19
글번호 190418
회원 님에 의해서 삭제되었습니다.
2025-04-25
56
글번호 190414
답변완료
종목검색식 부탁드립니다
M=Trix(12);
ValueWhen(1,CrossUp(M,0),h)
안녕 하세요 위의 수식은 키움용 지표 수식입니다.
위 신호가 발생하는 종목을 검색식을 만들어 검색코저 합니다.
검색식 부탁 드려 봅니다^^
2025-04-25
261
글번호 190409
답변완료
문의드립니다.
1. 항셍 매매에서 신호발생 시간대를 10시 15분에 시작해 13시에 종료하고 다시 14시에 시작해 17시 30분에 끝나고 18시 20분에 시작해 23시에 끝나는 시간 수식을 원합니다.
강제청산 설정메뉴에서 오후 11시 청산으로 하니 당일은 오후 11시에 종료되나 새벽부터 매매신호가 나오는 문제가 발생했습니다.
2. 5이평선은 5봉 동안의 종가를 선으로 만든 것입니다. 그런데 5봉 동안의 고가와 저가의 1/2로 5이평선을 만들고 싶습니다.
미리 노고에 감사드립니다~
2025-04-25
281
글번호 190408
답변완료
검색식 부탁드립니다. _(_ _)_
항상 도와주심에 감사드립니다. _(__)_
5봉전에서 아래의 수식을 만족시키는 봉이 출현하고 0봉전에서 5봉전 고가를 돌파하는 종목 검색식을 부탁드립니다.
수식4개 각각 검색식이 되겠습니다. _(__)_
수식1
var : ii(0),HO(0);
var : MM(0),KK(0),MO(0),mx(0);
var : M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
var : M7(0),M8(0),M9(0),M10(0),M11(0),M12(0);
MM = floor(date/100);
if MM != MM[1] Then
{
MO = O;
M1 = KK[1];
M2 = M1[1];
M3 = M2[1];
M4 = M3[1];
M5 = M4[1];
M6 = M5[1];
M7 = M6[1];
M8 = M7[1];
M9 = M8[1];
M10 = M9[1];
M11 = M10[1];
M12 = M11[1];
mx = Max(M1, M2, M3, M4, M5,M6, M7, M8, M9, M10, M11, M12);
}
KK = iff(MO > C, MO, 0);
if HO > 0 and C > HO and Index < ii+5 Then
{
HO = 0;
Find(1);
}
if mx > 0 and CrossUp(C,mx) Then
{
ii = Index;
if C < O Then
HO = O;
Else
HO = 0;
}
Else
{
if ii > 0 and Index <= ii+5 Then
{
if C < O and (HO == 0 or (HO > 0 and O > HO)) Then
HO = O;
}
}
수식2
var : m5(0),m20(0),크로스업(False),hh(0),H_high(0),ll(0),L_sum(0),ls(0),조건(false),cnt(-1);
M5 = ma(c,5);
M20 = ma(c,20);
크로스업 = crossup(M5,M20);
if 크로스업 == true Then
{
hh = h;
var1 = L_sum[1];
cnt = 0;
}
Else
{
if hh > 0 and h > hh Then
hh = h;
}
if HH==HH[1] && HH > H Then
H_high = HH;
LL = iff(M20>L, 1, 0);
L_sum = Accum(LL);
Ls = L_sum-var1;
조건 = CrossUp(c, H_High) && Ls>0;
if 조건 == true Then
{
if cnt >= 0 Then
{
cnt = cnt+1;
if cnt == 1 Then
Find(1);
}
}
수식3
var : 당월시가(0),전월시가(0);
var : 당월종가(0),전월종가(0);
if sDate > sDate[1]+30 Then
{
당월시가 = O;
전월시가 = 당월시가[1];
전월종가 = 당월종가[1];
}
당월종가 = C;
if 전월시가 > 0 Then
{
var1 = ((전월시가+전월종가)/2 + 당월시가)/2;
if CrossUp(C,var1) Then
Find(1);
}
수식4
var1 = EnvelopeDown(20,10);
if CrossUp(C,var1)
Then
Find(1);
2025-04-25
262
글번호 190407