커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6577
글번호 230811
답변완료
수식 좀 부탁드립니다.
우선 매번 허접한 부탁에도 정확한 수식을 알려주시는 점 대단히 감사하게 생각하고 있습니다.
조금이라도 더 성공률을 높일 수 있을까 생각하다보니 자꾸 조금 더 욕심이 나서 또 한번 부탁을 드립니다.
우선 매수신호는 기간이 다른 MACD 두 선 중 기간이 짧은 선이 기간이 긴 선을 골든크로스 할 때 인데 이때 120일 이평선이 상승중일때만 매수신호가 나오게 하는 것 입니다. 그러니까 MACD골든크로스가 나더라도 이평선이 하향 중일 때는 신호가 없고 골든크로스와 이평선이 상승하는 두 조건을 모두 만족 할 때만 매수신호가 나오게 만드는 것 입니다.
반대로 매도신호도 똑같이 두 MACD 선이 데드크로스가 나오면서 120일 이평선이 하향 중 일때 매도 신호가 나오게 하는 것입니다.
조금 복잡한 수식이 될 수 있을 것 같은데 제 실력으로는 도저히 만들기가 어려워 다시한번 부탁드립니다. 감사합니다.
2015-05-11
165
글번호 85895
답변완료
170틱챠트 만들기
안녕하세요 별첨챠트 즉 170틱챠트에서 stochastic 20-12-12에서
1.스톡캐스틱을 따라 저점에서 매수신호 ---->고점 꺽일때 매도신호 나오게 해야되고요
2.각마디가 모양다르게 하는법을 식을 만들어 주세요
김프로님 항상 감사합니다
===========================================================================
안녕하세요
예스스탁입니다.
1.
미완성신호는 조건이 만족되는 봉에서 발생하므로
완성신호가 나오기 한봉전에 발생하게는 작성이 되지 않습니다.
현재봉 미완성시에 지정한 조건이 만족하면 미완성신호가 보여지고
계속 조건충족하다가 봉완성시에 최종 조건이 만족하고 있으면 완성신호가 됩니다.
Input : Period1(10), Period2(5),Period3(5);
var : Stok(0),StoD(0);
StoK = StochasticsK(Period1,Period2);
StoD = StochasticsD(Period1,Period2,Period3);
If CrossUP(StoK, StoD) Then
{
Buy("매수");
}
If CrossDown(StoK, StoD) Then
{
Sell("매도");
}
2.
수식에서 지표의 모양은 지정이 되지 않습니다.
해당 부분은 사용자분께서 지표속성창에서 직접 하셔야 합니다.
Var : Pivot(0),R1(0),R2(0),S1(0),S2(0);
Pivot = (DayHigh(1)+DayLow(1)+DayClose(1))/3;
R1 = 2*Pivot-DayLow(1);
R2 = Pivot+DayHigh(1)-DayLow(1);
S1 = 2*Pivot-DayHigh(1);
S2 = Pivot-DayHigh(1)+DayLow(1);
Plot1(Pivot, "피봇포인트");
Plot2(R1, "1차저항");
Plot3(R2, "2차저항");
Plot4(S1, "1차지지");
Plot5(S2, "2차지지");
plot6(dayopen(1),"전일시가");
plot7(DayHigh(1),"전일고가");
plot8(DayLow(1),"전일저가");
plot9(DayClose(1),"전일종가");
위 내용을 지표식으로 작성하신 후에
문법검증(f4)하시고 검증후 f5키를 누르시면
지표속성이 나타납니다.
Y축표시탭에서 가격으로 지정하신 후에
차트표시탭에서 각 지표의 이름을 클릭하시고
그래프모양과 색, 굵기등을 지정해 주시면 됩니다.
즐거운 하루되세요
2015-05-11
336
글번호 85894
답변완료
수식 요청
수고 많으십니다.
일목균형표 전환선, 기준선 크로스 진입 청산에 대한 수식 부탁드립니다.
진입은 3틱 유리한 가격에 청산은 2틱 유리한 가격에 매매 가능하도록 부탁드립니다.
- 크로스 이후 진입 가격에 1.5P 수익권 도달시 청산
- 진입/청산 후 10봉 이내 신호는 무시
감사합니다.
2015-05-11
128
글번호 85893
답변완료
항상 감사합니다..오전에 전화드렸었는데요..
안녕하세요..
오전에 전화드렸었는데요..
실수로 수식을 수정되지않은 수식에 적용해서 다시 질문 드립니다..
아래 수식에다가 오전에 질문드렸던 내용( 하루 수익이 20틱이상이면 매매중단하라는
수식) 을 입력해주시면 감사하겠읍니다..
Input : Period(50), Percent(0.1);
var : center(0),UPline(0),DNline(0),T(0),Bcond(false),Scond(false);
center = ma(C, Period);
UPline = EnvelopeUp(Period, Percent);
Dnline = EnvelopeDown(Period, Percent);
if crossup(c,upline) Then{
T = 1;
var1 = C;
Scond = false;
}
if CrossDown(c,dnline) Then{
T = -1;
var1 = C;
Bcond = false;
}
if C > dnLine and C < upline Then{
T = 0;
Bcond = false;
Scond = false;
}
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
Scond = true;
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
Bcond = true;
if T == 1 and Scond == false Then{
Sell("매도",AtLimit,var1+PriceScale*10);
}
if T == -1 and Bcond == false Then{
buy("매수",AtLimit,var1-PriceScale*10);
}
SetStopProfittarget(PriceScale*10,PointStop);
2015-05-11
143
글번호 85891
답변완료
수식바랍니다
당일 데이트레이딩입니다
1. rsi가 30을 상향돌파 당일 3회 발생과 동시에 macd오실레이터가 직전봉보다 증가하면 매수진입
rsi가 70을 하향돌파 당일 3회 발생과 동시에 macd오실레이터가 직전봉보다 감소하면 매도진입
2. energy1이 300 돌파하면서 미결제가 직전봉보다 감소 매도진입
energy2가 300 돌파하면서 미결제가 직전봉보다 감소 매수진입
감사합니다
2015-05-11
147
글번호 85890
답변완료
도움 부탁드립니다.
안녕하세요-
저- 아래 절취선(>>>>>) 밑에 전략 2개(거의 같은)가 있습니다.
두개의 전략에 대래 EQUITY 라는 변수로 수익률 그래프를 지표로 구현 부탁드립니다.
바로 밑은 저 혼자서 예전 유사전략을 수익률 그래프로 만들었던 것입니다.
제가 안하려는 것이 아니고..미세한 오차 발생분에 대해 정확한 구현을 도움부탁드리고자 이렇게 올립니다.
혹시 작업중 필요하시면 연락부탁드립니다.
(01054410350)
번거로우시겠지만,
SETSTOPLOSS(C*0.03,POINTSTOP);
등까지도 구현해주시면 감사하겠습니다.
다시 한번 먼저 감사드립니다.
# 유사 전략 수익률그래프
INPUT : init(400),risk(0.08),CAP(100000),f(3);
VAR : PV_ZW(100),POINTV2(100),POINTV3(100),POINTV4(100);
VAR : BET1(0), BET2(0), BET3(0), BET4(0);
VAR : BET_T1(0), BET_T2(0), BET_T3(0), BET_T4(0);
VAR : TRADE(0), T1(0), T2(0), TEMP_L(0), TEMP_H(0), CC(0);
VAR : PST1(0), EP1(0), EX1(0), TR(0), CNT(0);
ARRAY : PROFIT[100](0),ECURVE[100](0),RATE[100](0);
PV_ZW = 50;
BET1 = 1;
IF PST1[2] == 0 AND PST1 <> 0 THEN {
#MessageLog("[PST] %.3f",PST1);
MessageLog("betsize %.3f %.3f %.3f %.3f %.3f %.3f",BET1,(CAP+(ECURVE[0]*PV_ZW))*f/(C[2]*PV_ZW),ECURVE[0]);
}
IF (DATA2(L) <> TEMP_L) AND (DATA2(H) <> TEMP_H) THEN {
T1 = STIME[10];
T2 = STIME + 10000;
TEMP_L = DATA2(L);
TEMP_H = DATA2(H);
}
IF (STIME[1] < T2 AND STIME >= T2) THEN TRADE = 1;
# 수익그래프
IF (STIME[2] < T1 AND STIME[1] >= T1) THEN {
IF PST1 == 1 THEN {
PROFIT[0] = (EP1-O)*BET_T1;
#MessageLog("매수이익1 %.3f %.3f %.3f",O,EP1,PROFIT[0]);
FOR CNT = 1 TO 99 {
PROFIT[CNT] = PROFIT[CNT-1][1];
}
ECURVE[0] = ECURVE[0] + PROFIT[0];
FOR CNT = 1 TO 99 {
ECURVE[CNT] = ECURVE[CNT-1][1];
}
#MessageLog("수익 %.3f",ECURVE[0]);
PST1 = 0;
}
IF PST1 == -1 THEN {
PROFIT[0] = (O-EP1)*BET_T1;
#MessageLog("매도이익1 %.3f %.3f %.3f",O,EP1,PROFIT[0]);
FOR CNT = 1 TO 99{
PROFIT[CNT] = PROFIT[CNT-1][1];
}
ECURVE[0] = ECURVE[0] + PROFIT[0];
for CNT = 1 TO 99{
ECURVE[CNT] = ECURVE[CNT-1][1];
}
#MessageLog("수익 %.3f",ECURVE[0]);
PST1 = 0;
}
TR = 0;
}
# IF SDATE[1] != SDATE[2] THEN TR = 1;
IF (STIME[2] < T2 AND STIME[1] >= T2) THEN TR = 1;
# 진입
IF TR == 1 AND PST1 == PST1[1] AND DATA2(H) <> DATA2(L) THEN {
IF (L[1] <= DATA2(L) AND L[2] > DATA2(L)) OR (L[1] <= DATA2(L) AND TR[2] == 0 AND TR[1] == 1) THEN {
IF O[1] > DATA2(L) THEN {
EX1 = DATA2(L);
} ELSE {
EX1 = O[1];
#MessageLog("매수시점 %.3f %.f %.3f %.3f %.3f %.3f %.3f %.3f",EX1,STIME,DATA2(H),DATA2(L),DATA2(H[1]),DATA2(L[1]),DATA2(H[2]),DATA2(L[2]));
}
IF PST1 == -1 THEN {
PROFIT[0] = (EX1-EP1)*BET_T1;
#MessageLog("매도이익2 %.3f %.3f %.3f",EX1,EP1,PROFIT[0]);
FOR CNT = 1 TO 99{
PROFIT[CNT] = PROFIT[CNT-1][1];
}
ECURVE[0] = ECURVE[0] + PROFIT[0];
for CNT = 1 TO 99{
ECURVE[CNT] = ECURVE[CNT-1][1];
}
#MessageLog("수익 %.3f",ECURVE[0]);
PST1 = 0;
}
IF PST1[1] <> 1 THEN {
PST1 = 1;
EP1 = EX1;
#MessageLog("매수시점 %.3f",EP1);
BET_T1 = BET1;
}
}
IF (H[1] >= DATA2(H) AND H[2] < DATA2(H)) OR (H[1] >= DATA2(H) AND TR[2] == 0 AND TR[1] == 1) THEN {
IF O[1] < DATA2(H) THEN {
EX1 = DATA2(H);
} ELSE {
EX1 = O[1];
}
IF PST1 == 1 THEN {
PROFIT[0] = (EP1-EX1)*BET_T1;
#MessageLog("매수이익2 %.3f %.3f %.3f",EX1,EP1,PROFIT[0]);
FOR CNT = 1 TO 99 {
PROFIT[CNT] = PROFIT[CNT-1][1];
}
ECURVE[0] = ECURVE[0] + PROFIT[0];
FOR CNT = 1 TO 99 {
ECURVE[CNT] = ECURVE[CNT-1][1];
}
#MessageLog("수익 %.3f",ECURVE[0]);
PST1 = 0;
}
IF PST1[1] <> -1 THEN {
PST1 = -1;
EP1 = EX1;
#MessageLog("매도시점 %.3f",EP1);
BET_T1 = BET1;
}
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# 전략1
VAR : ET(0,DATA1), XT(0,DATA1);
VAR : TR(0,DATA1), BET(1,DATA1);
ET = 140000;
XT = 150000;
ST = 93000;
IF MARKETPOSITION <> 0 AND (DATA2(H)-DATA2(L)) > C*0.005 AND MAXPOSITIONPROFIT < C*0.002 AND STIME[1] < ST AND STIME >= ST THEN {
EXITLONG();
EXITSHORT();
TR = 0;
}
IF STIME[1] < XT AND STIME >= XT THEN {
EXITLONG("매수청산",ATMARKET);
EXITSHORT("매도청산",ATMARKET);
TR = 0;
}
IF STIME[1] < ET AND STIME >= ET THEN {
TR = 1;
}
IF TR == 1 AND DATA2(H) <> DATA2(L) AND MARKETPOSITION == MARKETPOSITION[1] THEN {
BUY("B",ATSTOP,DATA2(H),BET);
SELL("S",ATSTOP,DATA2(L),BET);
}
SETSTOPLOSS(C*0.03,POINTSTOP);
#전략2
VAR : ET(0,DATA1), XT(0,DATA1);
VAR : TR(0,DATA1), BET(1,DATA1);;
ET = 140000;
XT = 150000;
ST = 93000;
IF MARKETPOSITION <> 0 AND (DATA2(H)-DATA2(L)) > C*0.005 AND MAXPOSITIONPROFIT < C*0.002 AND STIME[1] < ST AND STIME >= ST THEN {
SELL("S1",ATSTOP,DATA2(L-C*0.015),BET); # 이 부분이 서로 다릅니다.
TR = 0;
}
IF STIME[1] < XT AND STIME >= XT THEN {
EXITLONG("매수청산",ATMARKET);
TR = 0;
}
IF STIME[1] < ET AND STIME >= ET THEN {
TR = 1;
}
IF TR == 1 AND DATA2(H) <> DATA2(L) AND MARKETPOSITION == MARKETPOSITION[1] THEN {
BUY("B1",ATLIMIT,DATA2(L),BET);
}
2015-05-11
176
글번호 85889
답변완료
문의드립니다.
주가 이동평균선 정배열전환 종목검색을 하면 주봉에서 설정이 500봉까지 되어있었는데
이렇게 설정해서 검색이 됐었는데 갑자기 첨부파일과 같이 메세지가 뜨면서 되지않습니다. 조치방법을 알려주세요
2015-05-11
155
글번호 85888
답변완료
수식문의 드립니다.
일봉을 기준으로 합니다.(국내선물)
매수조건
어제 종가가 5일선 위에서 끝났을 경우
오늘 시가에서 매수한다.
청산조건
1.당일 종가 청산 또는
2.손절매 0.5p
청산(손절매)후 재매수 조건
손절매 이후 가격이 시가를 돌파할 경우
재매수후 청산조건
1.당일 종가 청산 또는
2.손절매 0.5p
*이렇게 한번 또는 두번 매매함(즉, 2번을 초과해서 매매를 하지못함)
매도조건
어제 종가가 5일선 아래에서 끝났을 경우
오늘 시가에서 매도한다.
청산조건
1.당일 종가 청산 또는
2.손절매 0.5p
청산(손절매)후 재매도 조건
손절매 이후 시가를 아래로 돌파할 경우
재매도후 청산조건
1.당일 종가 청산 또는
2.손절매 0.5p
*이렇게 한번또는 두번 매매함(즉, 2번을 초과해서 매매하지 못함)
여기서 당일 종가 청산이라 함은 무조건 포지션을 당일 정리한다는 뜻임
2015-05-11
142
글번호 85887
알리섬 님에 의해서 삭제되었습니다.
2015-05-10
9
글번호 85886