커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2489
글번호 230811
답변완료
75964 추가 질문 드립니다
안녕하세요~
문의드린 부분에 대해 아래와 같이 답변받았습니다
--------------------
1
청산후에 진입이 동일봉에서 발생하는 경우가 있습니다.
랭귀지는 봉완성이 기준이며 모든 사용하는 값과 값저장은 봉완성이 기준입니다.
if B>0 && B == Hcount then HB = rHB;
if S>0 && S == Lcount then LB = rLB;
청산후 같은봉 미완성시에 위 내용으로 HB,LB에 저장되는 것은 아닙니다.
해당 내용을 해결하기 위해서는 최소한 한개봉은 완성이 되어야 하므로
청산이 발생한 봉에서 같이 동일방향 진입이 발생하는 것을 막는 방법뿐이 없습니다.
if MarketPosition <= 0 and Hstate == true then
{
Buy("b1",AtStop,HB,unitP);
Buy("b2",AtStop,HB+0.5*N,unitP);
Buy("b3",AtStop,HB+N,unitP);
Buy("b4",AtStop,HB+1.5*N,unitP);
}
if MarketPosition >= 0 and Lstate == true then
{
Sell("s1",AtStop,LB,unitP);
Sell("s2",AtStop,LB-0.5*N,unitP);
Sell("s3",AtStop,LB-N,unitP);
Sell("s4",AtStop,LB-2.5*N,unitP);
}
-----------------------------------
위와같이 marketposition 0 이하일때 매수, 0 이상일때 매도를 조건으로 넣게되면
피라미딩이 안되지 않나요??
(매수일 경우) 첫번째 진입하면 marketposition이 1이되서 2~4번째 진입이 안될것 같은데 이 부분 확인 부탁드리겠습니다!
감사합니다
2022-02-16
1417
글번호 156356
답변완료
시스템 문의
안녕하세요 관리자님 우선 아래 답변에 감사 드립니다.
하나 더 여쭤보고 싶은 사항이 있는데요
혹시 -3점 이상일시 매도는 어떻게 작성해야되는지
문의 드립니다.
감사 합니다.
안녕하세요
예스스탁입니다.
불만족시 -1을 지정하시면 안됩니다.
조건이 만족하면 1 아니면 0을 변수에 할당되게 만드신 후에
해당 변수들을 더해서 조건지정하시면 됩니다.
if A조건 Then
var1 = 1;
Else
var1 = 0;
if B조건 Then
var2 = 1;
Else
var2 = 0;
if C조건 Then
var3 = 1;
Else
var3 = 0;
if D조건 Then
var4 = 1;
Else
var4 = 0;
IF var1+Var2+Var3+Var4 >= 3 Then
Buy();
즐거운 하루되세요
> blueo 님이 쓴 글입니다.
> 제목 : 시스템 문의
> 안녕하세요 관리자님 먼저 늘 감사드립니다.
제가 아래와 같은 수식을 만들고 싶은데 도움 부탁 드립니다.
조건이 A, B, C, D라는 조건이 있고
각 조건이 만족하는 것에 대해서 점수를 부여하여 +3점 이상은 매수 -3점 이상은 매도
예를들어
A조건 만족 하면 A=1
B조건 만족 하면 B=1
C조건 불만족 하면 C=-1
D조건 만족 하면 D=1
이런 식으로 나오면
총 +3점 이상으로 매수 진행
이런 시스템을 만들고 싶습니다.
조언 부탁 드립니다.
감사 드립니다.
2022-02-16
1269
글번호 156353
답변완료
함수요청
안녕하세요?
아래 작성주신 스크립트 검증 요청 부탁드립니다.
작성 주신 스크립트를 차트에 적용했을 경우에 육안으로 차트를 식별했을 경우와는 다르게 신호가 생성되지 않습니다.
글번호 75951, 75955번입니다.
감사합니다.
2022-02-16
1203
글번호 156346
답변완료
지표설정 부탁드립니다
안녕하세요
수고많슴니다
틱차트에서 호가잔량의 5 이평선 지표 가능한지요
꼭 부탁 드립니다
2022-02-16
1354
글번호 156343
답변완료
도움 요청합니다.
안녕하세요?
도움을 요청합니다.
아래 수식에서 다음
PLOT1(TCHAN, "TOP")
PLOT2(BCHAN, "BOT") 채널 사이에 50%, 61.8%, 38.2% 라인을 추가해주시면 대단히 감사하겠습니다.
오늘도 행복한 하루 되세요.
----------------------------------------
input : TLENGTH(40),BLength(30);
VAR : TCHAN(0), BCHAN(0);
TCHAN = HIGHEST(HIGH, TLENGTH)[1];
BCHAN = LOWEST(LOW, BLength)[1];
PLOT1(TCHAN, "TOP");
PLOT2(BCHAN, "BOT");
2022-02-16
1329
글번호 156336
답변완료
문의드립니다.
안녕하세요.
분봉 차트에서
value4 는 +2% 이상의 양봉의 거래량이고
if value4 > value4[1] Then
value5 = value4;
전일의 value5는 당일 장시작 시 초기화를 하였을 때
위 조건식은 당일 장시작 후 처음 발생한 value4는
value4[1]이 없어서 value5 값이 나오지 않습니다.
1. value4[1]가 없으면 value5가 당봉의 value4 값으로 지정되도록
위 식 수정 부탁드립니다.
2. if value4 > value4[1] Then
value5 = value4;
위 조건을 없애고
당일 처음 발생한 value4를 value5로 지정하는 수식도 부탁드립니다.
수고하세요.
2022-02-16
1254
글번호 156335
답변완료
수식 오류 문의드립니다
안녕하세요
수식을 테스트하던중 문제상황이 발생해 문의드립니다
사용한 수식은 아래와 같고
문제가 되었던 상황은 캡처로 첨부하였습니다
input : TT(224300), TD(20220215), MDD(200000) ;
var : HB(14574), LB(14481), Hx(20000), Lx(1);
var : e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), Hstate(true), Lstate(true), N(0), unitP(0), exitC(0), rHB(0), rLB(0);
N = Highest(ATr(14), 100);
unitP = floor(MDD/(N*5*4*600));
exitC = (2-(MaxEntries-1)/2)*N;
e60 = Ema(C,60);
if Condition1 == False and sDate >= TD and sTime >= TT Then
{
Condition1 = true;
Hcount = 0;
Lcount = 0;
T1 = TotalTrades;
}
if Condition1 == true Then
{
B = 0;
S = 0;
if TotalTrades-T1 > 0 Then
{
For cnt = 1 to TotalTrades-T1
{
if MarketPosition(cnt) == 1 Then B = B+1;
if MarketPosition(cnt) == -1 Then S = S+1;
}
}
Hcount = B + IFf(MarketPosition == 1,1,0);
Lcount = S + IFf(MarketPosition == -1,1,0);
if B>0 && B == Hcount then HB = rHB;
if S>0 && S == Lcount then LB = rLB;
if Hstate == true then
{
Buy("b1",AtStop,HB,unitP);
Buy("b2",AtStop,HB+0.5*N,unitP);
Buy("b3",AtStop,HB+N,unitP);
Buy("b4",AtStop,HB+1.5*N,unitP);
}
if Lstate == true then
{
Sell("s1",AtStop,LB,unitP);
Sell("s2",AtStop,LB-0.5*N,unitP);
Sell("s3",AtStop,LB-N,unitP);
Sell("s4",AtStop,LB-2.5*N,unitP);
}
if marketposition ==1 Then
{
rHB = Highest(H, BarsSinceEntry) ;
if e60 < HB+2*N Then exitlong("exitB1", atstop, HB-exitC);
if e60 >= HB+2*N and CrossDown(close, e60) Then
{
ExitLong("exitB2") ;
Hstate = false ;
}
exitlong("exitB3", AtLimit, Hx);
}
if marketposition == -1 Then
{
rLB = Lowest(L, BarsSinceEntry);
if e60 > LB-2*N Then ExitShort("exitS1", atstop, LB+exitC);
if e60 <= LB-2*N and CrossUp(close, e60) Then
{
ExitShort("exitS2");
Lstate = false ;
}
exitshort("exitS3", AtLimit, Lx);
}
if Hcount > 3 Then Hstate = False;
if Lcount > 3 Then Lstate = False;
if H >= Hx then Hstate = false;
if L <= Lx then Lstate = false;
}
MessageLog("N %.2f, P %.2f, eC %.2f",N , unitP, exitC);
MessageLog("HB %.2f, rHB %.2f, Hec %.2f, B %.f, Hc %.f, Hs %4s", HB, rHB, HB - exitC, B, Hcount, Hstate);
MessageLog("LB %.2f, rLB %.2f, Lec %.2f, S %.f, Lc %.f, Ls %4s", LB, rLB, LB + exitC, S, Lcount, Lstate);
문제상황
1. 손절조건이 되서 청산되었으나 LB = rLB로 업데이트 되지 않았고
업데이트 되지 않아 초기치로 설정한 LB로 곧바로 다시 진입
'청산 => 재진입'이 일어난 시간을 확인해보면 5초의 갭이 있어 청산-매수 시점이 겹쳐 생긴 문제는 아닌듯 (1-1)
2. 차트상에선 청산신호가 나왔으나, 실제 청산 주문이 들어가지 않음
시스템 모니터 기록에도 청산 주문이 안들어가있음(2-1)
주문은 안들어갔으나, LB=rLB로 업데이트
3. 청산이 안된채로 조건이 되자 다시 진입
청산조건이 되자 이전에 남아있던 12계약은 그대로 있고 4계약만 청산됨
+) 캡쳐는 못했는데, exitL2 조건으로 청산되어 청산후 Hstate == false가 되어 거래정지가 되어야 하는 상황에서도
동일하게 Hstate 안바뀌고, HB 도 업데이트 안되 재진입하는 상황이 발생했습니다
관계가 있는진 모르겟으나 이 케이스도 위에 예시처럼 시스템 실행하고 처음 진입했을때 입니다
이런 문제 원인이 무엇인지 못찾겠어 가능하다면 확인 부탁드립니다
감사합니다
2022-02-16
1198
글번호 156334
답변완료
분할매수
먼저 감사드립니다.
아래 보내주신 수정프로그램 실행시 다음봉에 매수신호는 발생하여 처리가능한데
b2.
b3.
b4.
신호가 동시에 발생합니다. 조언부탁드립니다.
if MarketPosition == 0 and ma(c,60) > ma(c,120) and c > o then
{
Buy("b1");
#첫매수조건이 만족하면 지정한 가격을 셋팅해서
#매수 다음봉만 가격조건 충족하는 것을 감시
Buy("b2.",atlimit,EntryPrice * 0.95);
Buy("b3.",atlimit,EntryPrice * 0.90);
Buy("b4.",atlimit,EntryPrice * 0.80);
}
#첫매수후 다다음봉부터 지정한 가격조건 충족하면 매수
if MarketPosition == 1 Then
{
ExitLong("bx",atlimit, AvgEntryPrice * 1.10);
if MaxEntries == 1 Then
Buy("b2",atlimit,EntryPrice * 0.95);
if MaxEntries == 2 Then
Buy("b3",atlimit,EntryPrice * 0.90);
if MaxEntries == 3 Then
Buy("b4",atlimit,EntryPrice * 0.80);
}
2022-02-15
1293
글번호 156333
답변완료
사용자함수 수식문의 좀 도와주세요. ㅠㅠ
특정날짜(시작과 끝)를 입력받아서 그 사이의 봉의 개수와 날짜 사이의 일수를 구하는 함수를 만들고 싶습니다.
아래같은 논리로 사용자함수를 만들고 싶어요.
input 시작일, 종료일;
var : 봉개수, 일수;
제어문
{봉개수 = 숫자;}
제어문
{일수 = 숫자;}
아무리 머리를 싸매고 고민을해도 로직이 안 그려집니다. ㅠㅠ
염치불구하고 부탁 드려봅니다.
2022-02-15
1390
글번호 156332