커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7742
글번호 230811
답변완료
16978 재질문 확인 부탁드립니다. (내용무)
..
2011-01-26
699
글번호 35291
답변완료
시스템식질문입니다
1. data2 의 조건만족시 data1으로 돌아와 당일 11시까지의 종가중 가장 큰 종가값을.. 11시에서 12시사이 그 종가값을 넘는 양봉의 종가가 나와야 하는데.. 그 나온 종가의 봉의 고가를 돌파하면 매수한다.. 이것은 어떻게 해야 하나요?
2. cond1[1] == false 이말은 구체적으로 무엇을 의미하는건가요??
3. 당일 첫봉 고가의 60% 이상으로 떨어지거나 전날 종가의 50% 이후로 떨어진이후 5.20 골든크로스시 매수한다.. 이식도 부탁드립니다
4. 볼밴 하한에 양봉,음봉,양봉이 순서대로 걸쳐있거나 볼밴 중한에 양봉,음봉이 걸쳐 있으면 매수한다.. 이식도 부탁드려요.. 질문많아서 죄송합니다.. 죽자살자 공부하고 있는데 잘 안돼네요 ㅠ
2011-01-26
755
글번호 35290
답변완료
죄송해요.
죄송합니다만, 한개 더 부탁드려요
일봉시스템을 사용하는데,
주봉볼린져밴드하단선(주봉볼하(0))을 기간5,승수2로 나타내려면,
다음이 맞는지 부탁드려요
-------------------------------------
BollBandDown = ma(C, Period) - (D * std(C, Period));
이니까...
------------------------------------
array : 주봉O[100](0),주봉H[100](0),주봉L[100](0),주봉C[100](0);
var : k(0),주봉볼하(0),m(0);
if date[1]<date and dayofweek(date[1])>=dayofweek(date) then {
for k = 98 downto 0 {
주봉O[k+1] = 주봉O[k];
주봉H[k+1] = 주봉H[k];
주봉L[k+1] = 주봉L[k];
주봉C[k+1] = 주봉C[k];
}
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
}
주봉C[0] = C;
if H > 주봉H[0] Then
주봉H[0] = H;
if L < 주봉L[0] Then
주봉L[0] = L;
m=(주봉C[0]+주봉C[1]+주봉C[2]+주봉C[3]+주봉C[4])/5 ;
주봉볼하= m - 2*SquareRoot( ( (주봉C[0]-m)^2+...+(주봉C[4]-m)^2 )/5 ) ;
이렇게 하면 맞나요?
=======================================
2011-01-26
822
글번호 35289
답변완료
검토부탁드려요
일봉시스템을 사용하는데요.
일봉값을 이용해서, [주봉macd(12,26)]을 나타냈습니다.
맞는지 봐주시면 감사하겠습니다.
--------------------------------------------
array : 주봉O[100](0),주봉H[100](0),주봉L[100](0),주봉C[100](0);
var : k(0);
var : 단기지평(0),장기지평(0),전단기지평(0),전장기지평(0),주봉macd(0);
if date[1]<date and dayofweek(date[1])>=dayofweek(date) then {
for k = 98 downto 0 {
주봉O[k+1] = 주봉O[k];
주봉H[k+1] = 주봉H[k];
주봉L[k+1] = 주봉L[k];
주봉C[k+1] = 주봉C[k];
}
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
전단기지평=단기지평;
전장기지평=장기지평;
}
주봉C[0] = C;
if H > 주봉H[0] Then
주봉H[0] = H;
if L < 주봉L[0] Then
주봉L[0] = L;
단기지평= C*( 2/(12+1) ) + 전단기지평*( 1 - 2/(12+1) );
장기지평= C*( 2/(26+1) ) + 전장기지평*( 1 - 2/(26+1) );
주봉macd = 단기지평-장기지평;
=================================================
여기에
주봉macd변화= 주봉macd- ema(주봉macd,9);
란 식을 추가로 나타내고 싶다면,
var:주봉macd변화(0),주봉macd(0),전주봉macd(0);
란 변수를 추가하고,
if date[1]<date and dayofweek(date[1])>=dayofweek(date) then {
for k = 98 downto 0 {
주봉O[k+1] = 주봉O[k];
주봉H[k+1] = 주봉H[k];
주봉L[k+1] = 주봉L[k];
주봉C[k+1] = 주봉C[k];
}
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
전단기지평=단기지평;
전장기지평=장기지평;
전주봉macd=주봉macd;
}
이렇게 전주봉macd=주봉macd를 추가한후,
주봉macd변화= 주봉macd- (주봉macd*(2/(9+1))+ 전주봉macd*(1 - 2/(9+1)));
이렇게 하면 맞는 것인지요?
감사합니다. 부탁드리겠습니다.
2011-01-26
771
글번호 35288
답변완료
궁금점
일봉시스템에서 주봉지표값을 만들어서 사용합니다.
1)그런데 아래와 같이 정의할 경우, 시스템에서
O,H,L,C가 일봉값인지 주봉값인지 알 수가 없게 되지 않나요?
이를 해결하기 위해,
var:주O(0),주H(0),주L(0),주C(0);
위와 같은 변수를 아래식에 추가하고,
아래식의
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
를
주봉O[0] = 주O;
주봉H[0] = 주H;
주봉L[0] = 주L;
주봉C[0] = 주C;
이런식으로 바꿔줘야 하나요?
어떤 해결책이 있을까요?
-----------------------
2)지금 자세히 보니, 아래식에서
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
이렇게 그대로 놔둬도, 그밑에식에서 추가정의를 했으므로
그냥 놔둬도 시스템식에 아무 상관없을듯 싶어요.
이때 O,H,L,C는 일봉값을 의미하고요.
1)번과 2)번중 어떤것이 맞는지 확인하고 싶습니다.
2)번이 맞는것 같은데, 이때 주봉O[0] = O; 이렇게만 주봉O를 정의하면
주봉O[0] 가 현재일봉의 시초가가 되어서 안될듯 싶어요.
뭔가 주봉O를 추가로 정의해줘야 하지 않나요?
답변 부탁드려요. 감사합니다.
--------------------------------
---------------------------------
아래는 주봉 시고저종가를 나타내는 식입니다.
var : cnt(0);
array : 주봉O[99](0),주봉H[99](0),주봉L[99](0),주봉C[99](0);
if date[1]<date and dayofweek(date[1])>=dayofweek(date) then{
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
for cnt = 1 to 98{
주봉O[cnt] = 주봉O[cnt-1][1];
주봉H[cnt] = 주봉H[cnt-1][1];
주봉L[cnt] = 주봉L[cnt-1][1];
주봉C[cnt] = 주봉C[cnt-1][1];
}
}
주봉C[0] = C;
if H > 주봉H[0] Then
주봉H[0] = H;
if L < 주봉L[0] Then
주봉L[0] = L;
2011-01-25
747
글번호 35287
답변완료
감사합니다
일봉시스템을 사용하는데요.
일봉값을 이용해서, [주봉14봉기준 adx,+di,-di]를 나타냈습니다.
맞는지 봐주시면 감사하겠습니다.
--------------------------------------------
array : 주봉O[100](0),주봉H[100](0),주봉L[100](0),주봉C[100](0);
var : k(0);
var : s1(0),s2(0),s5(0),s6(0),m5(0),m6(0),주봉diplus(0),주봉diminus(0),
주봉adx(0);
array : v1[100](0),v2[100](0),v3[100](0),v4(100)(0);
if date[1]<date and dayofweek(date[1])>=dayofweek(date) then {
for k = 98 downto 0 {
주봉O[k+1] = 주봉O[k];
주봉H[k+1] = 주봉H[k];
주봉L[k+1] = 주봉L[k];
주봉C[k+1] = 주봉C[k];
v1[k+1] = v1[k];
v2[k+1] = v2[k];
v3[k+1] = v3[k];
v4[k+1] = v4[k];
}
주봉O[0] = O;
주봉H[0] = H;
주봉L[0] = L;
주봉C[0] = C;
}
주봉C[0] = C;
if H > 주봉H[0] Then
주봉H[0] = H;
if L < 주봉L[0] Then
주봉L[0] = L;
if 주봉C[1]>0 then {
v1[0]=iff(주봉H[0]-주봉H[1]>0 and 주봉H[0]-주봉H[1]>주봉L[1]-주봉L[0],
주봉H[0]-주봉H[1],0);
v2[0]=iff(주봉L[1]-주봉L[0]>0 and 주봉H[0]-주봉H[1]<주봉L[1]-주봉L[0],
주봉L[1]-주봉L[0],0);
}
s1=0; s2=0;
for k= 0 to 13 {
s1=s1+v1[k];
s2=s2+v2[k];
}
v3[0]=s1/14;
v4[0]=s2/14;
s5=0; s6=0;
for k= 0 to 13 {
s5 = s5 + max(주봉H[k]-주봉L[k],abs(주봉C[k+1]-주봉H[k]),
abs(주봉C[k+1]-주봉L[k]));
s6 = s6 + abs(v3[k]-v4[k])/(v3[k]+v4[k])*100;
}
m5 = s5/14; m6 = s6/14;
주봉diplus=v3[0]/m5*100;
주봉diminus=v4[0]/m5*100;
주봉adx=m6;
2011-01-26
822
글번호 35286
답변완료
HPI (헤릭정산 지수)
Inputs: Mult(NumericSimple), Factor(NumericSimple);
Variables: IDiff(0), IMin(0), K(0), HalfRange(0);
IDiff = 2 * AbsValue(OpenInt[0] - OpenInt[1]);
If OpenInt[0] < OpenInt[1] Then
IMin = OpenInt[0]
Else
IMin = OpenInt[1];
HalfRange = (High + Low) * .5;
If IMin <> 0 Then Begin
If HalfRange > HalfRange[1] Then
K = (HalfRange - HalfRange[1]) * Mult * Volume * (1 + IDiff / IMin)
Else
K = (HalfRange - HalfRange[1]) * Mult * Volume * (1 - IDiff / IMin);
If CurrentBar <= 1 Then
HPI = K
Else
HPI = HPI[1] + ((K - HPI[1]) * Factor);
End
Else
HPI = 0;
선언되지 않은 함수가 사용되었다고 에러가 뜹니다.
조언 부탁드립니다.
2011-01-25
1649
글번호 35285
답변완료
간단한 질문.
내공이 부족하여 해석이 어렵습니다.
1)아래식 주석좀 부탁드립니다.
2) crossup(c,기준) then buy(),crossdown(c,기준2)then sell() 을 적용하여 아래식에 적용해 주세요.
3) 현재 가동중인 시스템의 주문 형태가 onclose type인데요, 미체결이 되었더라구요.
근데 시초가에 미체결이라 시장이 다시 꼬구라 질까 했는데 오후에 보니 꼬구라져
체결되어 있더군요. 어떻게 해야 하나 시스템은 종가 청산되어 무포 상태인데,
낼 수동으로 장초에 포지션 청산할까...이럴땐 어떻게 하는게 낳을까요?
그리고 atmarket 주문은 미체결이 일어나지 않나요?
그럼 좋은 하루 되세요.
input : N(3);
var : cnt(0),loss(0);
#당일 진입횟수 계산
loss = 0 ;
for cnt = N DownTo 1{
if PositionProfit(cnt) < 0 then
loss = loss + 1;
}
if MarketPosition != 0 Then{
var1 = 0;
Condition1 = false;
}
if loss == 4 and MarketPosition == 0 Then{
if Condition1 == false and 진입조건 Then{
Condition1 = true;
}
if Condition1 == true and 청산조건 Then{
Condition1 = false;
var1 = var1+1;
}
}
if loss == 4 and MarketPosition == 0 And var1 == 2 and 진입조건 Then
buy();
2011-01-25
845
글번호 35284
답변완료
시스템식 질문입니다
아래는 이전글의 내용입니다
결론은
SetStopEndofday(144500);
이로직 하나밖에 없다는 말씀인가요?
(45분 이후에 거래가 되지 않아서 청산이 되지않는경우를 제외)
if marketposiotion == 1
and stime > 144600
then exitlong();
45분 이후 46분의 위의 로직은 어떤가요?
---------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
시스템에서 시간은 시세데이터의 적혀오는 시간으로 판단합니다.
SetStopEndofday(145000);
와 같이 작성하시면 14시 50분을 포함해서 해당 시간
이후에 들어오는 첫시세데이터에 신호와 주문이 발생합니다.
말씀하신 내용이 신호가 발생하지 않은 경우이면 해당시간 이후의 시세가 없는 것이므로
시간을 조절하셔서 하며
신호는 발생했는데 체결이 되지 않은 경우는 주문은 발생했는데
체결이 되지 않은 것이므로 수식으로는 컨트롤이 되지 않습니다.
설정창의 청산가격을 체결에 유리한 가격으로 하셔야 합니다.
4번과 같이 늘여 쓰시는 것은 의미가 없습니다
SetStopEndofday(145000);하나만 있으면 이후시간이 모두 커버가 됩니다.
즐거운 하루되세요
> 파인애플 님이 쓴 글입니다.
> 제목 : 시스템 질문입니다
>
1.
1틱,1초 차트 시스템에서
당일청산 주문을 사용하는데
SetStopEndofday(145000);
가끔 보면
청산이 안되어 있는경우가 있습니다.
보험으로 강제청산주문을 하나더 만들고 싶습니다
2.
시스템설정을
1초 옵션차트 시스템 이었는데
분명 당일청산 로직이 있었는데
청산이 안되서 손실 큽니다..
안전로직이 절실합니다
3.
SetStopEndofday(145000);
이라고 하면
45분에 봉거래가 안되서 봉이 안만들어지면 청산이
안되는건가요?
4.
SetStopEndofday(145000);
SetStopEndofday(145100);
SetStopEndofday(145200);
SetStopEndofday(145300);
SetStopEndofday(145400);
SetStopEndofday(145500);
SetStopEndofday(145600);
SetStopEndofday(145700);
SetStopEndofday(145800);
SetStopEndofday(145900);
이런식으로 해도 되나요?
2011-01-25
872
글번호 35282