커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7530
글번호 230811
답변완료
문의드립니다.
NetProfit, OpenPositionProfit, CurrentContracts, MarketPosition 을 풀어써주시면 감사하겠습니다.
가상의 진입청산을 만들어보려해서 그럽니다.
2013-10-11
184
글번호 68337
답변완료
문의합니다
안녕하세요
늘 감사합니다
틱챠트에서
당일 첫봉과 3번째봉의 고점과저점, 중심값을 수평선으로 나타내고 싶습니다
부탁드립니다
2013-10-11
156
글번호 68336
답변완료
문의드립니다
> 장시작 시점에
var3 = var4+ var5 then
var3 가 장시작 값의 마이너스두배가되었을때 출력하고싶습니다
var3 가 장시작 값의 마이너스0.5 배가되었을때 출력하고싶습니다
2013-10-11
172
글번호 68333
답변완료
질문
input : N(0);
Plot1(260.50);
이런식으로 값을 직접 지정해서 쓰고 있는데요.
해당 값을 갭차트로 볼때 갭보정 된 값으로 볼려면 어떻게 하면 되나요?
갭보정 차트의 갭보정 계산 방식이 어떻게 되나요?
수고하시구요. 즐거운 주말 보내시길^^
2013-10-11
154
글번호 68332
답변완료
문의드립니다.
예전에 문의드려서 만들어주셨던 수식을 간단하게 변형을 해서 오늘 아침에 데모트레이딩에 적용을 해봤는데요.
장이 열리기 전에 1분봉 전략실행차트를 열고 자동주문을 실행해 두었습니다.
그런데 의도했던 것과는 다른 곳에서 진입과 청산이 이루어져서 다시 질문드립니다.
1
일단 첫봉에서 이미 목표가에 도달했는데 바로 신호가 발생하지 않았고 두번째봉에서 목표가에 다시 도달했을때 신호가 발생했습니다.
첫봉부터 신호가 발생하려면 어떻게 수정해줘야 하는건가요?
2
청산은 매도익절로 바로 다음 봉의 시가에서 (265.40) 이루어졌습니다.
MessagLog 명령어를 써서 청산가격이 되어야할 DayOpen-DayATR*4의 값도 확인해 봤는데
값은 의도했던 정상값인 264.80을 보여주고 있었습니다.
왜 다른 가격 (바로 다음봉의 시가)에서 이루어졌는지 궁금하고 어떻게 수정해야하는건지요?
감사합니다.
-----------------------------
input : ATRP(14),N(1);
var : TH(0),TL(0),Sum(0),TR(0),DayATR(0),cnt(0),count(0);
//당일 진입횟수
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
DayATR = 0.3;
If Marketposition == 0 and stime < 143000 and count < N then{
buy("b",AtStop,dayopen+DayATR);
Sell("s",AtStop,dayopen-DayATR);
}
if MarketPosition == 1 Then{
ExitLong("매수익절",AtStop,DayOpen+DayATR*4);
ExitLong("매수손절",AtStop,DayOpen-DayATR);
}
if MarketPosition == -1 Then{
ExitShort("매도익절",AtStop,DayOpen-DayATR*4);
ExitShort("매도손절",AtStop,DayOpen+DayATR);
}
SetStopEndofday(143000);
2013-10-11
191
글번호 68331
답변완료
감사합니다
바이너리가 4에 있고 종가지수가 볼린져밴드 상단선을 돌파한 상태면 매도
반대로 바이너리가 -4에 있고 종가지수가 볼린져밴드 하단을 돌파한 상태면 매수 시스템식을 만들어 주세요
2013-10-11
171
글번호 68330
답변완료
지표식 변환 문의드립니다.
트레이드 스테이션용 이지 랭귀지로 작성된 지표를 변환하고자 합니다.
Median (Function)
Disclaimer
The Median function returns the middle value after sorting numbers over a specified range of bars.
Syntax
Median(Price, Length)
Returns (Double)
A numeric value containing the median value of a specified number of sorted values.
Parameters
Name Type Description
Price Numeric Specifies which bar value (price, function, or formula) to use.
Length Numeric Sets the number of bars to consider.
Remarks
The input Price tells the function what values to look at, while the Length input tells the function how many bars to
include in the calculations. The function will sort Length number of Price elements in ascending order and return the
middle element. If Length is an even number, it will choose the two values that fall at the middle of the sort and
average them. See Table 1. If Length is an odd number the function will return the middle value. See Table 2.
Table 1
Bar Number Price Rank
(1 = smallest)
Median
Close[0] 3646.6 􀁯
Close[1] 3625.0 􀁮
Close[2] 3667.1 􀁰
Close[3] 3669.6 􀁱
Length = 4 3656.8
Table 2
Bar Number Price Rank
(1 = smallest)
Median
Close[0] 3646.6 􀁯
Close[1] 3625.0 􀁮
Close[2] 3667.1 􀁰
Close[3] 3669.6 􀁱
Close[4] 3670.0 􀁲
Length = 5 3667.1
Price is a numeric series type input. The input Length must be a whole number as it represents the number of bars,
and it cannot change on a bar-to-bar basis.
Example
Value1 = Median(Close,10);
위와 같이 median 함수가 정의됩니다.(이지 랭귀지에서)
아래의 식에 median 함수가 있어 어떻게 해야 하는지 여쭙니다.
inputs: price(c), alpha(.07), cutoff(8);
vars: smooth(0),cycle(0),q1(0),i1(0),deltaphase(0),mediandelta(0),dc(0),instperiod(0),period(0),
num(0),denom(0),a1(0),b1(0),c1(0),coef1(0),coef2(0),coef3(0),coef4(0),filt3(0);
smooth = (price + 2*price[1] + 2*price[2] + price[3])/6;
cycle = (1-.5*alpha)*(1-.5*alpha)*(smooth-2*smooth[1]+smooth[2]) + 2*(1-alpha)*cycle[1] - (1-alpha)*(1-alpha)*cycle[2];
if currentbar < 7 then cycle = (price-2*price[1]+price[2])/4;
q1 = (.0962*cycle + .5769*cycle[2] - .5769*cycle[4] - .0962*cycle[6])*(.5+.08*instperiod[1]);
i1 = cycle[3];
if q1<>0 and q1[1]<>0 then deltaphase = (i1/q1-i1[1]/q1[1]) / (1+i1*i1[1]/(q1*q1[1]));
if deltaphase < 0.1 then deltaphase=0.1;
if deltaphase > 1.1 then deltaphase=1.1;
mediandelta = median(deltaphase,5);
if mediandelta = 0 then dc=15; else dc=6.28318/mediandelta + .5;
instperiod = .33+dc + .67*instperiod[1];
period = .15*instperiod + .85*period[1];
value1 = price - price[intportion(period-1)];
a1 = expvalue(-3.14159 / cutoff);
b1 = 2*a1*cosine(1.738*180 / cutoff);
c1 = a1*a1;
coef2 = b1 + c1;
coef3 = -(c1 + b1*c1);
coef4 = c1*c1;
coef1 = 1 - coef2 - coef3 - coef4;
filt3 = coef1*value1 + coef2*filt3[1] + coef3+filt3[2] + coef4*filt3[3];
if currentbar < 4 then filt3= value1;
plot1(filt3);
plot2(0);
위의 식은 제가 예스트레이더에 맞도록 약간 수정해 놓았습니다.
해결 안되는 부분은 MEDIAN 함수이고 (MEDIANPRICE 함수과 다릅니다)
이것이 해결되었을 때 다른 오류가 없는지 확인 부탁드립니다.
참고로 위의 식은 John. F. Ehlers 의 cybernetic analysis for stocks and futures 에
나와 있는 지표입니다. (smoothed adaptive momentum)
감사합니다.
2013-10-11
445
글번호 68329
답변완료
손절라인
늘빠른답변 감사드립니다
항상현재가에서 5틱손절 라인을 그리고 싶습니다 수고하십시요
2013-10-11
199
글번호 68328
답변완료
합리적인....
합리적인 청산방법 때문에 고민중입니다
아래와 같은 청산식의 구조는 어떻게 되나요?
<1단계>
진입한때가 STOC05의 Crossup(SK05,SD05)과 일치할 때 STOC05의 CrossDown(SK05,SD05)에 청산
진입한때가 STOC10의 Crossup(SK10,SD10)과 일치할 때 STOC10의 CrossDown(SK10,SD10)에 청산
진입한때가 STOC20의 Crossup(SK20,SD20)과 일치할 때 STOC20의 CrossDown(SK20,SD20)에 청산
<2단계>
진입한때가 STOC05, STOC10, STOC20의 Crossup과 복수(2개이상)로 일치할때에는 큰것으로청산
예)진입한때가 STOC05와 STOC10의 Crossup과 일치할 때 , STOC10의 CrossDown(SK10,SD10)에 청산
진입한때가 STOC10와 STOC20의 Crossup과 일치할 때 , STOC20의 CrossDown(SK20,SD20)에 청산
<3단계>
진입한때가 STOC05, STOC10, STOC20의 Crossup과 일치하지 않을때에는
진입전후로 +-3봉이내 Crossup이 발생하는 STOC로 청산하고
복수(2개이상)로 해당될때에는 Crossup이 가장 가까운 STOC으로 청산
복수(2개이상)로 해당되고 Crossup이 일치할경우 큰것으로 청산
<4단계>
모든 경우가 없을 경우에는 STOC30의 CrossDown(SK30,SD30)에 청산
==============스톡 산식============
Array : SHV05[5](0),SHI05[5](0),SHM05[5](0),SHD05[5](0);
Array : SLV05[5](0),SLI05[5](0),SLM05[5](0),SLD05[5](0);
If SD05[2]<SD05[1] and SD05[1]>SD05[0] Then { //꼭지점
SHV05[0] = SD05[1];
SHI05[0] = index[0];
SHM05[0] = Ma05[0];
SHD05[0] = D0[0];
For J=1 to 4 {
SHV05[J] = SHV05[J-1][1];
SHI05[J] = SHI05[J-1][1];
SHM05[J] = SHM05[J-1][1];
SHD05[J] = SHD05[J-1][1];
}
}
If SD05[2]>SD05[1] and SD05[1]<SD05[0] Then { //바닥점
SLV05[0] = SD05[1];
SLI05[0] = index[0];
SLM05[0] = Ma05[0];
SLD05[0] = D0[0];
For J=1 to 4 {
SLV05[J] = SLV05[J-1][1];
SLI05[J] = SLI05[J-1][1];
SLM05[J] = SLM05[J-1][1];
SLD05[J] = SLD05[J-1][1];
}
}
Array : SHV10[5](0),SHI10[5](0),SHM10[5](0),SHD10[5](0);
Array : SLV10[5](0),SLI10[5](0),SLM10[5](0),SLD10[5](0);
If SD10[2]<SD10[1] and SD10[1]>SD10[0] Then { //꼭지점
SHV10[0] = SD10[1];
SHI10[0] = index[0];
SHM10[0] = Ma05[0];
SHD10[0] = D0[0];
For J=1 to 4 {
SHV10[J] = SHV10[J-1][1];
SHI10[J] = SHI10[J-1][1];
SHM10[J] = SHM10[J-1][1];
SHD10[J] = SHD10[J-1][1];
}
}
If SD10[2]>SD10[1] and SD10[1]<SD10[0] Then { //바닥점
SLV10[0] = SD10[1];
SLI10[0] = index[0];
SLM10[0] = Ma05[0];
SLD10[0] = D0[0];
For J=1 to 4 {
SLV10[J] = SLV10[J-1][1];
SLI10[J] = SLI10[J-1][1];
SLM10[J] = SLM10[J-1][1];
SLD10[J] = SLD10[J-1][1];
}
}
Array : SHV20[5](0),SHI20[5](0),SHM20[5](0),SHD20[5](0);
Array : SLV20[5](0),SLI20[5](0),SLM20[5](0),SLD20[5](0);
If SD20[2]<SD20[1] and SD20[1]>SD20[0] Then { //꼭지점
SHV20[0] = SD20[1];
SHI20[0] = index[0];
SHM20[0] = Ma05[0];
SHD20[0] = D0[0];
For J=1 to 4 {
SHV20[J] = SHV20[J-1][1];
SHI20[J] = SHI20[J-1][1];
SHM20[J] = SHM20[J-1][1];
SHD20[J] = SHD20[J-1][1];
}
}
If SD20[2]>SD20[1] and SD20[1]<SD20[0] Then { //바닥점
SLV20[0] = SD20[1];
SLI20[0] = index[0];
SLM20[0] = Ma05[0];
SLD20[0] = D0[0];
For J=1 to 4 {
SLV20[J] = SLV20[J-1][1];
SLI20[J] = SLI20[J-1][1];
SLM20[J] = SLM20[J-1][1];
SLD20[J] = SLD20[J-1][1];
}
}
2013-10-11
201
글번호 68327