커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3502
글번호 230811
답변완료
다른 분 질문글에 대한 답변글 관련 질문 올립니다.
안녕하세요. 늘 감사드립니다.
수식작성 QNA 게시판 32998번글에 대한 답변글 보다가 관련 질문 올리고자 합니다.
질문 1:
아래 자료 소스코드의 절반 아래 쯤에서 보면, 원자료에서, CurrentPosition이라는 변수를 만들어서 사용하고 있는데,
굳이 그렇게 하지 않고 MarketPosition을 그대로 쓰면 되지 않을지요?
만일 원자료가 썼듯이 굳이 CurrentPosition = MarketPosition;이라고 써 줘야만 하는 것이라면, 그 이유가 무엇인지 가르쳐 주시면 대단히 감사하겠습니다.
질문 2:
그 부분 조금 아래에서 보면, "MarketPosition(1)"이라는 표현이 보이는데, 이 것과 MarketPosition[1]은 어떤 차이가 있는 것인지요? ((즉 원자료에서 MarketPosition[1]이라고 쓰지 않고 MarketPosition(1)이라고 쓴 이유는 무엇인지 가르쳐 주시면 대단히 감사하겠습니다))
질문 3:
아래 변환된 소스 전체를 이미니 나스닥 차트에서 작동시켜 보면, 신호가 한 번도 발생하지 않았습니다. 어떤 이유 때문에 그럴지요?
감사합니다.
아래:
글 32998과 그 답변글 인용:
작성자 : 예스스탁 작성일 : 2013-10-21 오후 3:19:08 조회수 : 46
Re : 문의드립니다..
안녕하세요
예스스탁입니다.
해당식은 트레이드스테이션 수식입니다.
아래는 저희 랭귀지로 변경한 식입니다.
진입이 특정값 +-2%라 선물에서는 신호를 보기 어렵습니다.
옵션이나 주식종목에 적용해 보시거나
%(per)조절해 보시기 바랍니다.
Input: per(2),FastLen(9), SlowLen(18), ChLen(12), TrailBar(8), Initial(300), ReBars(15), Reentry(100);
Vars: FastMA(0), SlowMA(0), LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999),
ReEntryCount(0), CurrentPosition(0);
FastMA = Average( Close , FastLen );
SlowMA = Average( Close , SlowLen );
#{ Order Placement for Long Positions }
If crossup(FastMA,SlowMA) and index > 1 then Begin
LEntryPrice = Highest( High , TrailBar )[1] *(1+per/100);
LCount = index;
End;
If MarketPosition <> 1 AND index < LCount + ChLen then
Buy("Cross Over Buy",AtStop,LEntryPrice);
#{ Order Placement for Short Positions }
If crossdown(FastMA,SlowMA) and index > 1 then Begin
SEntryPrice = Lowest( Low , TrailBar )[1] *(1-per/100);
SCount = index;
End;
If MarketPosition <> -1 AND index < SCount + ChLen then
Sell("Cross Under Buy",AtStop,SEntryPrice);
#{ Trailing Stop while in Position }
If MarketPosition == 1 then begin
LCount = -999;
ExitLong("LongTStop",AtStop,Lowest( Low , TrailBar ));
End;
If MarketPosition == -1 then Begin
SCount = -999;
ExitShort("ShortTStop",AtStop,Highest( High , TrailBar ));
End;
#{ Reentry Technique }
CurrentPosition = MarketPosition;
If CurrentPosition == 0 AND CurrentPosition[1] == -1 then
ReEntryCount = 1;
If CurrentPosition == 0 AND CurrentPosition[1] == 1 then
ReEntryCount = 1;
////////// 질문1 관련: 이 부분에서는, CurrentPosition을 쓰지 않고 그냥 MarketPosition으로만 써도 되는 거 아닌지요? //////////
If MarketPosition == 0 AND MarketPosition(1) == 1 AND ReEntryCount < ReBars then Begin
////////// 질문2 관련: 여기서 MarketPosition(1)은 무슨 의미인지요? (1)이 아니라, [1]이어야 하는 건 아닌지요? //////////
ReEntryCount = ReEntryCount + 1;
Buy("Long ReEntry",AtStop,Highest( High , 10 ));
End;
If MarketPosition == 0 AND MarketPosition(1) == -1 AND ReEntryCount < ReBars then Begin
ReEntryCount = ReEntryCount + 1;
Sell ("Short ReEntry",AtStop,Lowest( Low , 10 ));
End;
즐거운 하루되세요
> 머니사이언스 님이 쓴 글입니다.
> 제목 : 문의드립니다..
> 아래식이 트레이드스테이션용 인거 같은데 예스트레이더에는 작동이 안돼서요..
언어가 틀려서 그런건 가요?
제가 실력이 부족해서요..
작동 가능하도록 변환 부탁드립니다
=====================================================
Input: FastLen(9), SlowLen(18), ChLen(12), TrailBar(8), Initial(300), ReBars(15), Reentry(100);
Vars: FastMA(0), SlowMA(0), LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999),
ReEntryCount(0), CurrentPosition(0);
FastMA = Average( Close , FastLen );
SlowMA = Average( Close , SlowLen );
{ Order Placement for Long Positions }
If FastMA crosses over SlowMA and barnumber > 1 then Begin
LEntryPrice = Highest( High , TrailBar )[1] * 1.02;
LCount = BarNumber;
End;
commentary( barnumber - lcount , lentryprice );
If MarketPosition <> 1 AND BarNumber < LCount + ChLen then
Buy ("Cross Over Buy") Initial Shares next bar at LEntryPrice Stop;
{ Order Placement for Short Positions }
If FastMA crosses under SlowMA and barnumber > 1 then Begin
SEntryPrice = Lowest( Low , TrailBar )[1] *.98;
SCount = BarNumber;
End;
If MarketPosition <> -1 AND BarNumber < SCount + ChLen then
Sell ("Cross Under Buy") Initial Shares next bar at SEntryPrice Stop;
{ Trailing Stop while in Position }
If MarketPosition = 1 then begin
LCount = -999;
ExitLong ("LongTStop") next bar at Lowest( Low , TrailBar ) Stop;
End;
If MarketPosition = -1 then Begin
SCount = -999;
ExitShort ("ShortTStop") next bar at Highest( High , TrailBar ) stop;
End;
{ Reentry Technique }
CurrentPosition = MarketPosition; //
If CurrentPosition = 0 AND CurrentPosition[1] = -1 then
ReEntryCount = 1;
If CurrentPosition = 0 AND CurrentPosition[1] = 1 then
ReEntryCount = 1;
////////// 이 부분에서는, CurrentPosition을 쓰지 않고 그냥 MarketPosition으로만 써도 되는 거 아닌지요? //////////
If MarketPosition = 0 AND MarketPosition(1) = 1 AND ReEntryCount < ReBars then Begin
////////// 여기서 MarketPosition(1)은 무슨 의미인지요? (1)이 아니라, [1]이어야 하지 않는지요? //////////
ReEntryCount = ReEntryCount + 1;
Buy ("Long ReEntry") ReEntry Shares next bar at Highest( High , 10 ) Stop;
End;
If MarketPosition = 0 AND MarketPosition(1) = -1 AND ReEntryCount < ReBars then Begin
ReEntryCount = ReEntryCount + 1;
Sell ("Short ReEntry") ReEntry Shares next bar at Lowest( Low , 10 ) Stop;
End;
2020-01-20
268
글번호 135258
답변완료
몇가지 질문 드립니다.
1. 예를들어
if C > 1.05 * O then
find(1);
를 5분봉 조건으로 검색하도록 한다고 가정하겠습니다.
위의 식은 오늘에 한정될 것입니다.
N일전 같은 조건(5분봉으로 세팅)으로 검색하려면 어떻게 표현해야 할까요?
2. 위에서 처럼 검색할 때 특정종목은 제외할 수 있나요?
예를 들면 삼성전자를 제외한 종목을 검색하고 싶다고 할때 말이죠..
2020-01-19
242
글번호 135257
답변완료
수식 부탁드립니다
수고하십니다.
다음의 여섯가지 수식 부탁드립니다.
감사합니다.
1.CCI 9 지표 : 상승반전시 매수, 다음봉 매도
2.Sigma 20 지표: 상승반전시 매수, 그 다음봉 매도
3.RWI 15,3 지표 : 저점이 직전최저저점보다 높은 상태에서 고점이 직전최고고점돌파시 매수, 그 다음봉 매도
4.RWI 15,3 지표 : 저점이 직전최저저점보다 낮은 상태에서 고점이 직전최고고점돌파시 매수, 그 다음봉 매도
5.1+2+3 결합식
6.1+2+4 결합식
2020-01-19
230
글번호 135256
답변완료
시스템식 부탁드립니다.
오후 2시 정각이 되는 순간 60분봉 종가에 매수하는 식과
60분봉 종가 -(빼기) 0.15(3틱)에 매수하는 식을 좀 부탁드립니다.
그리고 시스템 매매 설정탭의 매매가격 설정에서 진입을 우선3호가 설정해놓는 거랑 주문식자체에서 -0.15(3틱)를 넣는 거랑 같은 것인지 차이점이 있는지 궁금합니다.
감사합니다.
2020-01-19
186
글번호 135255
답변완료
질문 올립니다.
안녕하세요. 늘 감사드립니다.
나스닥이
새벽 04시에서 07시까지 180틱 이상 상승하고 (( 07시 가격 - 04시 가격 > 180틱 )),
08시 ~ 10시 12분까지 70틱 이상 하락했으며 (( 08시 가격 - 10시 12분 가격 > 70틱 )),
새벽 04시 가격보다 10시 12분 가격이 80틱 이상 더 높은 ((10시 12분 가격 - 04시 가격 > 80틱 ))
경우,
항셍 [10시 14분 가격 + 30틱]에 매도 주문이 10시 15분에 나갈 수 있도록 하는
시스템 식 부탁 드립니다.
((위의 180틱, 70틱, 80틱 등의 숫자는, 최적화 가능하도록 외부변수로 해 주시면 대단히 감사하겠습니다.))
((그리고, 작은 추가 질문 올리고 싶습니다.
지금 컴퓨터에서 최적화 작업을 하다 보니 컴퓨터가 버벅대는데,
아주 i9에 9세대, 16기가 램 정도로 새로 컴퓨터를 구입할까 생각 중입니다.
현재 YesLanguage에서,
이렇게 i9 9세대 CPU의 기능을 다 활용하게 되는지,
아니면 (가령 i7 8세대 등) 어떤 특정 단계의 CPU 이상으로는 더 높은 사양을 써 봤자 마찬가지인지
알려 주시면 대단히 감사하겠습니다.
컴퓨터 하드웨어와 소프트웨어간의 관계를 제가 잘 몰라서, CPU 성능 관련 검색을 하다 보니, 어떤 게임의 경우 몇 쓰레드까지 처리 가능하므로 그 이상의 쓰레드를 처리하는 CPU는 결국 성능이 그 아래 등급의 것과 마찬가지다 등의 이야기가 보여서요, 예스트레이더와 관련하여 굳이 현재 최고 사양의 컴퓨터를 쓰는 것이 이득이 되는지, 아니면 아직은 그 것이 불필요하고 어느 정도까지의 CPU를 쓰면 된다라는 것이 있는지 궁금해서 질문 올립니다.))
대단히 감사합니다.
2020-01-21
247
글번호 135254
답변완료
문의 드립니다.
안녕하세요...
기본지표중에 LSR 지표가 있는데요....
수식은
Input : Period(14);
var : Slope(0);
Slope = LRS(C,Period);
Plot1(Slope, "LRS");
PlotBaseLine1(0, "기준선");
이렇게만 나오네요..
이지표를.. 스토케스틱처럼 시그널선을 만들수 있을까요???
기본 LRS선에 시그널선을 만들고 싶어서 가능한지 여쭈어 봅니다.
2020-01-19
220
글번호 135253
답변완료
부탁 드립니다.
도움에 감사 드립니다.
1)아래 수식을 반대로
하락하다가 상승으로의 변곡이 나타 나도록
수정 부탁 드립니다.
2)아울러 수정한 수식을
타주기(분용)을
틱용으로도 수정 부탁 드립니다.
Input: Atime(11),p1(20);
Var: Cnt(0),HH(0),LL(0);
var : count(0),sum1(0),mav1(0),sum2(0),mav2(0),TF(0),S1(0),S2(0),T(0),TM(0);
Array: tp[100](0), upv[100](0),dnv[100](0);
Array : OO[100](0),CC[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
T = 1;
}
if date != date[1] and Bdate == Bdate[1] Then{
S2 = 1440-S1;
T = 2;
}
if T == 1 then
TM = TimeToMinutes(stime)-S1;
if T == 2 Then
TM = TimeToMinutes(stime)+S2;
TF = TM%Atime;
if Bdate != bdate[1] or (TF < TF[1] and Bdate == Bdate[1]) Then{
OO[0] = O;
for cnt = 1 to 99{
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
if CC[P1+1] > 0 and (Bdate != bdate[1] or (TF < TF[1] and Bdate == Bdate[1])) Then{
sum1 = 0;
sum2 = 0;
for count = 0 to P1-1{
sum1 = sum1+CC[count+1];
sum2 = sum2+CC[count+2];
}
mav1 = sum1/P1;
mav2 = sum2/P1;
If (CC[1] < mav1 and CC[2] >= mav2) Then
{
tp[0] = (OO[1] + CC[1]) / 2;
For Cnt = 1 To 99
{
tp[Cnt] = tp[Cnt -1][1];
}
}
for cnt = 0 to 99
{
if tp[cnt] >= C Then
upv[cnt] = tp[cnt];
Else
upv[cnt] = 1000000;
if tp[cnt] <= C Then
dnv[cnt] = tp[cnt];
Else
dnv[cnt] = 0;
}
var1 =1000000;
LL = 0;
for cnt = 0 to 99
{
if upv[cnt] <var1 THEN
var1 = upv[cnt];
if dnv[cnt] > LL Then
LL = dnv[cnt];
}}
plot1(var1);
2020-01-20
226
글번호 135252
답변완료
시스템 진입식 부탁드립니다.
안녕하세요 수고가 많으십니다.
시스템 수식 부탁드립니다.
20일 신고가 대비 5퍼센트 하락하면 바로 매수
5퍼센트 익절 또는 5퍼센트 손절
재진입은 이전의 20일 신고가보다 높은 새로운 20일 신고가 이면
20일 신고가 대비 5퍼센트 하락하면 바로 매수
5퍼센트 익절 또는 5퍼센트 손절
수식 부탁드립니다. 감사합니다.
2020-01-19
217
글번호 135251
답변완료
문의드립니다.
키움에서 사용하던 거래량 지표입니다.
수식변경 부탁드립니다.
수식1 이름: 거래량
PVI(C)+NVI(C)
수식2 이름: 평균
AVG(PVI(C),PERIOD)+AVG(NVI(C),PERIOD)
수식3 이름: 표시
A=PVI(C)+NVI(C);
B=AVG(PVI(C),PERIOD)+AVG(NVI(C),PERIOD);
MIN(A,B)
지표조건설정: 조건
period 25
2020-01-19
426
글번호 135250