커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7715
글번호 230811
답변완료
문의?
선물 당일청산 시스템에 적용하려고 합니다.
input : shortPeriod(12), longPeriod(26);
Var : value(0);
value = MACD(shortPeriod, longPeriod);
1. MACD 값이 기준선을 상향돌파하고 3개봉이후에 매수.
2. MACD 값이 기준선을 하향돌파하고 3개봉이후에 매도.
매수 전제조건: MACD 값이 이전 값보다 약 10% 높아야 한다.
매도 전제조건: MACD 값이 이전 값보다 약 10% 작아야 한다.
* 눌림목 개념으로 MACD값이 기준선 "0" 을 상.하향돌파할때 매수.매도 하는것이
아닌 돌파후 상승/하락할때 진입하기 위함입니다.
감사합니다.
2011-06-23
621
글번호 40090
답변완료
지표식 질문입니다
data1 옵션차트
data2 선물차트
데이타2 선물차트의 장시작후 N 봉 째 까지의
매수호가의평균
매도호가의평균
매수평균+매도호가의평균
값을 각각 지정하고 싶습니다
예)
데이타2의 선물차트 장시작후 10봉까지의
매수호가 매도호가의 평균
(10봉매수호가값들+10봉매도호가값들)/20
2011-06-23
671
글번호 40074
답변완료
문의
코스피선물가격을 참조한 옵션매매시스템 2가지식을 문의 드립니다
첫번째식
당일선물 시가가 전일선물종가보다 높을때 옵션당일 시가보다 n% 상승시 매수하거나,
당일선물 시가가 전일선물종가보다 낮을때 선물현재가가 전일선물종가보다 20틱 상승시 옵션 즉시매수
진입5회로 제한
두번째식
당일선물 시가가 전일선물종가보다 낮을때 옵션당일 시가보다 n% 상승시 매수하거나,
당일선물 시가가 전일선물종가보다 높을때 선물현재가가 전일선물종가보다 20틱하락시 옵션 즉시매수
진입5회로 제한
이상입니다.답변 미리 감사드립니다.
2011-06-23
607
글번호 40071
답변완료
시스템식
안녕하세요 최초진입후 다음신호시 청산만되고 진입이안되고요 이익청산후는 진입이되는데
식과식사이에 진입신호시 청산만 되고있으며 이익청산후 신호발생후 다음신호면 청산과동시에진입식부탁드립니다.
현재의방법으론 청산만됩니다.
input : value1(0.5), value2(0.5);
var : cnt(0), bpos(0), bval(0), spos(0), sval(0);
var : bpos2(0), bval2(0), spos2(0), sval2(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
If (stime >= 90000 and stime < 91500) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) THEN {
input : value1(0.5), value2(0.5);
var : cnt(0), bpos(0), bval(0), spos(0), sval(0);
var : bpos2(0), bval2(0), spos2(0), sval2(0);
//최초 진입이 매수일 경우
if date != date[1] then {
cnt = 0;
bpos = 0;
spos = 0;
}
if dayindex > 0 then{
if cnt==0 and C > H[1]+value1 then {
buy("B최초진입");
bpos = 1;
bVal = C;
cnt = 1;
}
if bpos == 1 and crossdown(C,bval-value2) then {
sell("B재진입1");
sVal = C;
spos = 1;
bpos = 0;
}
if spos == 1 and crossup(C, sval+value2) then {
sell("B재진입2");
bval = C;
spos = 0;
bpos = 1;
}
}
//최초 진입이 매도일 경우
if date != date[1] then {
bpos2 = 0;
spos2 = 0;
}
if dayindex > 0 then{
if cnt==0 and C > L[1]-value1 then {
buy("S최초진입");
spos2 = 1;
sVal2 = C;
cnt = 1;
}
if spos2 == 1 and crossup(C,sval2+value2) then {
buy("S재진입1");
bVal2 = C;
bpos2 = 1;
spos2 = 0;
}
if bpos2 == 1 and crossdown(C, bval2-value2) then {
buy("S재진입2");
sval2 = C;
bpos2= 0;
spos2 = 1;
}
}
If (stime > 91000 and stime < 113000) THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
if BarsSinceExit(1) > 1 then { ##청산신호 후에 1봉이 경과 할때까지 재진입을 금지하라
if stime>=090100 and Stime< 150300 and marketposition==0 then
if C > H[1] and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) and MarketPosition == 0 Then
buy("매수");
if MarketPosition == 1 Then
sell("반대매도",AtStop,L[BarsSinceEntry]-0.5-PriceScale); ##진입봉의 고가는 H[BarsSinceEntry] if MarketPosition == -1 Then buy("SB",AtStop,H[BarsSinceEntry]+PriceScale);
##매도진입후 매도진입봉의 고가+1틱이상의 시세가 발생하면 매도로 전환
##진입봉의 저가는 L[BarsSinceEntry] if MarketPosition == 1 Then sell("BS",AtStop,L[BarsSinceEntry]-PriceScale);
##매수진입후 매수진입봉의 저가-1틱 이하의 시세가 발생하면 매수로 전환
if C < L[1] and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
sell("매도");
if MarketPosition == -1 Then
buy("반대매수",AtStop,H[BarsSinceEntry]+0.7+PriceScale);
}
}
If (stime > 110000 and stime < 140000) THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Inputs: PercentRLen(10), OverSold(10), OverBought(90), Trigger(62);
Variables: PcntR(0), AvgValue(0), Setup1(False), Setup2(False);
PcntR = PercentR(PercentRLen);
AvgValue = MA(Close, PercentRLen);
If PcntR < OverSold Then
Setup1 = True;
If PcntR > OverBought Then
Setup1 = False;
If PcntR > OverBought Then
Setup2 = True;
If PcntR < OverSold Then
Setup2 = False;
If Setup1 AND AvgValue > AvgValue[1] AND Crossup(PcntR,Trigger) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then Begin{
Setup1 = False;
Buy ("11시이후매수");
}
End;
If Setup2 AND AvgValue < AvgValue[1] AND CrossDown(PcntR, Trigger) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then Begin{
Setup2 = False;
}
End;
If (stime >= 100000 and stime < 145000) THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Inputs: Length1(5),Length2(3),Length3(3),OverSold11(30),OverBought11(70);
Variables: KLine(0), DLine(0);
Var : value(0);
KLine = StochasticsK(Length1,Length2);
DLine = StochasticsD(Length1,Length2,Length3);
If MarketPosition == 0 and Crossup(KLine[5], DLine[5]) AND KLine[5] < OverSold11 AND DLine[5] < OverSold11 and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then ##스토매수 신호을 3개봉뒤에 신호나옴
buy("스토매수",AtStop,value);
If (stime >= 100000 and stime < 135000) THEN {
If MarketPosition == 0 and CrossDown(KLine, DLine) AND KLine > OverBought11 AND DLine < OverBought11 and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
sell ("스토매도",AtStop,value);
}
}
}
If (stime >= 90000 and stime < 150000) THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Input : Period(12), Period1(5), Period2(5);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
If CrossDown(value1, value2) Then {
var1 = C;#데드크로스시 발생시 초기값
var2 = var1[1]; # 직전 데드크로스 구간의 종가 중 최저가
}
#가장 최근 데드크로스 구간의 종가중 최저가 계산
if value1[1] < value2[1] Then{
if C < var1 Then
var1 = L;
}
if CrossUp(value1,value2) Then{
var3 = value1; #골든크로스시 value1값
var4 = var3[1];#직전골든크로스시 value1값
if MarketPosition == 0 and var3 > var4 and var1 < var2 and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
buy("골든크로스시",atmarket);
}
}
If (stime >= 130000 and stime < 150000) THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
if MarketPosition == 0 and min(c,O) > ma(c,3) and min(C,H) > ma(c,20) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
buy("이평매수");
}
If (stime >= 110000 and stime < 150000) THEN {
if MarketPosition == 0 and max(c,O) < ma(c,5) and max(C,H) > ma(c,20) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
sell("이평매도");
}
If (stime >= 100000 and stime < 150000) THEN {
var : slowK1(0), slowD1(0), slowK2(0), slowD2(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
slowK1 = stochasticsK(12,5);
slowD1 = stochasticsD(20,12,12);
slowK2 = stochasticsK(12,5);
slowD2 = stochasticsD(12,5,5);
if BarsSinceExit(1) > 3 then { ##청산신호 후에 1봉이 경과 할때까지 재진입을 금지하라
if stime>=100000 and Stime< 150300 and marketposition==0 then
if MarketPosition == 0 and slowK1 > slowD1 and crossup(slowK2,slowD2) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
buy("스토12");
//if CrossDown(slowK2,slowD2) and ((Condition1 == true and BarsSinceExit(1) >= 1) or Condition1 == false) Then
//ExitLong("청산매도");
}
}
2011-06-23
747
글번호 40070
답변완료
산식작성
1. 그림은 제가 작성한 지표가 표현된것입니다
MD06은 -6,0,6에서 진동하고,
var2는 MD06==-6일때 누적봉수, var3은 MD06==6일때의 누적봉수이며 누적산식은
아래와 같습니다
IF MD06<0 Then
var2=var2-1;
if MD06[1]<0 and MD06==0 or MD06>0 then
var2=0;
IF MD06>0 Then
var3=var3+1;
if MD06[1]>0 and MD06==0 or MD06<0 then
var3=0;
의도는 매수진입(A점)후 MD06<0이 되었을때
var2[1]누적봉수>var3[0]누적봉수 and
var2[0]누적봉수>var3[0]누적봉수 일때
조기청산 혹은 매도진입하려는 것입니다
2. 갭보정 Disparity를 사용자 함수로 지정("GAP_DP"로 정의)한뒤
지표식에서 아래와 같이
GAP_DP(5)
GAP_DP(10)
GAP_DP(20)
사용할수 있게 부탁드립니다
3.매수진입이후의 최고점이 발생한 이후, 약 15봉이 흐른후
현재봉이 "매수진입후의 최고점이 발생한 이후부터 시작해서 현재까지" 최저의 이평5값임을 나타내는 식
산식작성을 부탁드립니다
2011-06-23
805
글번호 40068
답변완료
돌파 후 퍼센트 하락 수식 문의 드립니다
안녕하세요.
돌파 후 퍼센트 하락 수식 문의 드립니다. 우리트레이더 용입니다.
//진입
현재 가격이 90일 간 최고가를 갱신하면 매수진입
//스탑
매수진입가격 x 80% (즉, 매수진입가격에서 20%만큼 하락하면 스탑 발동)
// 청산
매수진입 포지션 보유 중인 경우: 최고점 대비 20% 하락하면 매수청산
// 피라미딩
매수진입가격 x 1.25 (즉, 매수진입가격보다 25% 상승하면 진입)
변수는 다음과 같습니다
진입가격 (초기값은 90일)
스탑 발동 하락 퍼센트 (초기값은 20%)
청산 발동 하락 퍼센트 (초기값은 20%)
2011-06-23
732
글번호 40066
답변완료
보조 차트에서도 NextBarOpen을 이용해 시초가 구할수 있나요?
주차트는 연결선물지수이고 보조차트는 KSP200종합입니다.
선물지수가 시작되는 시점에 보조차트의 KSP200종합의 시초가를 구해서 매매진입을 하려고 하는데 어떠한 방법으로 식을 구하면 될까요?
감사합니다~
2011-06-23
690
글번호 40065
답변완료
문의
보조지표를 여러개 겹쳐서 보고 있는데요
기본 보조지표에 나머지 지표들을 공유로 설정했어요
각 지표들이 y축 스케일에 맞게 보여지는데요
오늘 다시 로그인하니 각 보조지표가 1선으로 뭉쳐서
보여지네요.. 어떻게 설정을 바꾸어야 하나요
2011-06-23
820
글번호 40064
답변완료
수식을 부탁합니다.
c>ma(c,5)>ma(c,26)이면 매수
c<ma(c,26)이면 매수청산;
c<ma(c,5)<ma(c,26) 이면 매도
c>ma(c,26) 이면 매도청산;
stoploss 0.2%;
감사합니다.
2011-06-23
673
글번호 40063