커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8162
글번호 230811
답변완료
수식문의입니다
안녕하세요
옵션차트에서 콜255일때 상대편 풋255의 전일고가를 콜차트에 나타내는
수식 좀 부탁드립니다
2016-10-18
202
글번호 103061
답변완료
수식 부탁드립니다
안녕하세요?
신속하고 친절한 답변에 대해 감사드립니다.
밑에 4등분선에 대한 수식이 있어서 마침 필요하던차 사용해봤는데요
최근 30봉이내의 고가,저가, 1/4, 2/4, 3/4을 가로선으로 나타내는 수식이라 제가 원하는 것과는 맞지 않았습니다. 저는 당일의 고저가 4등분선이 필요한데요. 그래서 input : P(30); 을
input : P(dayopen); 으로 바꿔서 사용해 보았더니 전일부터 오늘까지 2일간의 고저가 4등분선이 나오게 되더군요.
제가 원하는 것은 오늘 개장시부터 계속해서 연속되는 고저가 4등분선이 필요합니다.
수식 부탁드리겠습니다
-----------------------------------------------------
input : P(30);
var : HH(0),LL(0);
HH = highest(H,P);
LL = lowest(L,P);
plot1(HH);
plot2(HH-(HH-LL)*(1/4));
plot3(HH-(HH-LL)*(2/4));
plot4(HH-(HH-LL)*(3/4));
plot5(LL);
2016-10-18
174
글번호 103060
답변완료
부탁합니다.
안녕하세요.
시스템식 부탁합니다.
- 20이평이 우상향이며 일목기준선 위에 있고,
일목기준선이 Trione지표의 중간선위에 있을때 매수.
- 20이평이 우하향하면 청산.
- 20이평이 우하향이며 일목기준선 아래에 있고,
일목기준선이 Trione지표의 중간선아래에 있을때 매도.
- 20이평이 우상향하면 청산.
감사합니다.
2016-10-18
161
글번호 103058
답변완료
질문드립니다
수익률 계산할 때 식을 보자면
계약수 * 등락포인트 * 50만원 / 가격 *50만원 * 0.125(증거금률) 인데요
이 때 가격이 청산시점에서의 가격인가요 아니면 진입시점에서의 가격인가요?
2016-10-18
166
글번호 103055
답변완료
문의드립니다
1.
var : T(0),TX(0);
var1 = highest(H,20);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
plot1(var1);
if T == 1 and T[1] != 1 Then{
tx = Text_New(sdate[1],stime[1],var1[1],"상승전환");
Text_SetColor(tx,RED);
Text_SetStyle(tx,2,2);
}
if T == -1 and T[1] != -1 Then{
Text_New(sdate[1],stime[1],var1[1],"하락전환");
Text_SetColor(tx,blue);
Text_SetStyle(tx,2,2);
}
위 상승전환,하락전환 에 매수,매도신호 부탁드립니다
2016-10-18
174
글번호 103054
답변완료
수식 부탁드립니다
안녕하세요
캔들을 이용한 지표를 만들려고 하는데요.
수식이 무언가 부족하여 안되는데 완성되도록 도움 좀 부탁드립니다
--------------------------------------------------------
캔들전체의 길이는 (고가-저가)가 된다.
몸통의 길이는 (종가-시가)가 된다.
뒤의 값을 앞의 값으로 나눠주면 하나의 지수를 구할 수 있다.
이 지수를 가공해 지표를 만들어보자.
편의상 현재 캔들과 앞선 3개 캔들의 평균 길이를 값1 이라고 하고
그중 몸통 길이를 값2 라고 하자.
(현재 캔들이 진행중인 상황에서 단순평균을 구하면 왜곡이 생길 수 있다.
이럴때는 직전 캔들과 직직전 캔들에 가중치을 부여하면 근사값을 구할 수 있다)
그리고 각각의 기간누적을 구한 뒤
다시 앞의 값을 뒤의 값으로 나눠주자.
기간은 10 이 적당하다.
수식은 다음과 같다.
VALUE1 = ((CLOSE - OPEN) + 2 * (CLOSE (1)) – OPEN (1)) + 2*(CLOSE (2)
– OPEN (2)) + (CLOSE (3) – OPEN (3))) / 6
VALUE2 = ((HIGH - LOW) + 2 * (HIGH (1) – LOW (1)) + 2*(HIGH (2)
- LOW (2)) + (HIGH (3) – LOW (3))) / 6
NUM = SUM (VALUE1, N)
DENUM = SUM (VALUE2, N)
RVI = NUM / DENUM
RVISig = (RVI + 2 * RVI (1) + 2 * RVI (2) + RVI (3)) / 6
이 수식들은 거의 모든 HTS에 적용되는 범용함수로 만들어졌기 때문에
바로 따다붙이기를 해서는 제대로 구현되지 않는다.
그러나 위에서 개념을 충분히 설명했으니
초보자를 면한 사람이라면 얼마든지 키움에 맞춰 변환할 수 있다.
-------------------------------------------------------------
완성된 차트가 올라가지 않고 첨부도 안되네요
부탁드립니다
2016-10-18
224
글번호 103047
답변완료
지표문의
1.아래는 수식지님이 만든 당일파동지표 입니다.
에스차트에 보면 차트 뒤집어 보기가 잇는데 그것 말구 지표자체 뒤 집어 보구 싶은데
수정 좀 부탁드립니다.
Input:전환율(0.5),선두께(4),선색(green); //전환율 또는 변동률
Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0),
date11(0),date12(0),time11(0),time12(0),TL1(0),
date21(0),date22(0),time21(0),time22(0),TL2(0);
Array:hiVal[2](0),loVal[2](0),hiBar[2](0),loBar[2](0);
upRate = 1 + (전환율/100); //상승률
dnRate = 1 - (전환율/100); //하락률
loBar[1] = loBar[1] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리
hiBar[1] = hiBar[1] + 1; //전고점의 위치
if DayIndex == 0 then {
if trnd == upTr then {
date11 = date[loBar[1]]; //추세선 시작일
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
}
else {
date11 = date[hiBar[1]]; //추세선 시작일
time11 = stime[hiBar[1]]; //추세선 시작시간
Value11 = hiVal[1]; //추세선 시작가격
}
date12 = date[1]; //추세선 종료일
time12 = stime[1]; //추세선 종료시간
Value12 = C[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수
TL_SetSize(TL1,선두께);
TL_SetColor(TL1,선색);
hiVal[1] = O;
hiBar[1] = 0;
loVal[1] = O;
loBar[1] = 0;
hiVal[0] = C;
hiBar[0] = 0;
loVal[0] = C;
loBar[0] = 0;
trnd = 0;
if hiVal[1] * dnRate > C then trnd = dnTr;
else if loVal[1] * upRate < C then trnd = upTr;
}
if hiVal[0] <= C then {
hiVal[0] = C;
hiBar[0] = 0;
}
else {
hiBar[0] = hiBar[0] + 1;
}
if loVal[0] >= C then {
loVal[0] = C;
loBar[0] = 0;
}
else {
loBar[0] = loBar[0] + 1;
}
if trnd != dnTr && hiVal[0] * dnRate > C then trnd = dnTr;
else if trnd != upTr && loVal[0] * upRate < C then trnd = upTr;
if trnd[1] != dnTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면
hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입
hiBar[1] = hiBar[0];
hiVal[0] = C; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가
hiBar[0] = 0;
loVal[0] = C;
loBar[0] = 0;
//전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다.
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
//TL_New는 신규 추세선을 그려주는 함수
}
if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데
hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면
hiVal[0] * dnRate > C then {
hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다.
hiBar[1] = hiBar[0];
hiVal[0] = C;
hiBar[0] = 0;
loVal[0] = C;
loBar[0] = 0;
//전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다.
date12 = date[hiBar[1]]; //추세선 종료일
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
//TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다.
//TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다.
}
if trnd[1] != upTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = C;
loBar[0] = 0;
hiVal[0] = C;
hiBar[0] = 0;
date11 = date[hiBar[1]];
time11 = stime[hiBar[1]];
Value11 = hiVal[1];
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데
loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면
loVal[0] * upRate < C then {
loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다.
loBar[1] = loBar[0];
loVal[0] = C;
loBar[0] = 0;
hiVal[0] = C;
hiBar[0] = 0;
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
}
TL_SetSize(TL1,선두께);
TL_SetColor(TL1,선색);
if trnd == upTr then {
date21 = date[loBar[1]]; //추세선 시작일
time21 = stime[loBar[1]]; //추세선 시작시간
Value21 = loVal[1]; //추세선 시작가격
}
else {
date21 = date[hiBar[1]]; //추세선 시작일
time21 = stime[hiBar[1]]; //추세선 시작시간
Value21 = hiVal[1]; //추세선 시작가격
}
date22 = date; //추세선 종료일
time22 = stime; //추세선 종료시간
Value22 = C; //추세선 종료가격
TL_Delete(TL2);
TL2 = TL_New(date21,time21,Value21,date22,time22,Value22);
TL_SetSize(TL2,선두께);
TL_SetColor(TL2,선색);
2.그럼 수고 하십시요
2016-10-18
215
글번호 103042
답변완료
부탁드립니다.
5분챠트에서 매시간 마지막 봉 종가가 첫봉 고가보다 높으면 빨간색으로, 첫봉 저가보다 낮으면 파란색으로 칠해 주세요. 감사합니다.
2016-10-18
165
글번호 103041
답변완료
문의드립니다
1.
Input : short(12),long(26),sig(9),시작시간(90000),종료시간(150000),당일수익틱수(10),텍스트표시소숫점자리수(2);
Var : MACDv(0),MACDS(0),MACDO(0),T1(0),tx(0),NP(0),N1(0),Tcond(false),당일수익(0);
var : daypl(0),Xcond(false),Bcond(false),Scond(false);
NP = NetProfit;
MACDv = MACD(short, long);
MACDs = ema(MACDv,sig);
MACDO = MACDV-MACDS;
당일수익 = PriceScale*당일수익틱수;
if MACDV > MACDS Then
T1 = 1;
Else
T1 = -1;
if stime == 시작시간 or (stime > 시작시간 and stime[1] <시작시간) Then{
Tcond = true;
Xcond = false;
N1 = Np;
}
daypl = NP-N1;
if TotalTrades > TotalTrades[1] and IsExitName("bp",1) == true Then{
Xcond = true;
tx = Text_New(sdate,stime,H,"매수청산"+NumToStr(ExitPrice(1),텍스트표시소숫점자리수));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,blue);
}
if TotalTrades > TotalTrades[1] and IsExitName("sp",1) == true Then{
Xcond = true;
tx = Text_New(sdate,stime,H,"매도청산"+NumToStr(ExitPrice(1),텍스트표시소숫점자리수));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,red);
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
if MarketPosition != 0 then{
tx = Text_New(sdate,stime,H,"당일청산"+NumToStr(ExitPrice(1),텍스트표시소숫점자리수));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,BLACK);
}
}
bcond = T1 == 1;
Scond = T1 == -1;
if Tcond == true and Xcond == false then{
if MarketPosition <= 0 and Bcond == true and Bcond[1] == false Then{
buy("b");
tx = Text_New(sdate,stime,H,"매수진입 :"+NumToStr(C,텍스트표시소숫점자리수));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,RED);
}
if MarketPosition >= 0 and Scond == true and Scond[1] == false Then{
sell("s");
tx = Text_New(sdate,stime,H,"매도진입 :"+NumToStr(C,텍스트표시소숫점자리수));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,blue);
}
if MarketPosition == 1 Then
ExitLong("bp",AtLimit,EntryPrice+당일수익-daypl);
if MarketPosition == -1 Then
ExitShort("sp",AtLimit,EntryPrice-당일수익+daypl);
}
SetStopEndofday(150000);
2.
Input : Period(12),당일수익틱수(50);
var : NP(0),N1(0),dayPl(0),당일수익(0),Xcond(false);
NP = NetProfit;
당일수익 = PriceScale*당일수익틱수;
if bdate != Bdate[1] Then{
N1 = NP;
Xcond = false;
}
dayPl = Np-N1;
value1 = TRIX(Period);
if TotalTrades > TotalTrades[1] and (IsExitName("dbp",1) or IsExitName("sdp",1)) Then
Xcond = false;
# 매수/매도청산
If CrossUP(value1, 0) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, 0) Then
{
Sell();
}
if MarketPosition == 1 Then
ExitLong("bdp",atlimit,EntryPrice+daypl-daypl);
if MarketPosition == -1 Then
ExitShort("sdp",atlimit,EntryPrice-daypl+daypl);
SetStopEndofday(150000);
1번시스템을 2번시스템에 대입을해볼려고 ...손을써봐도
당일수익틱수 가 문제가있는지 신호가 계속 연속적으로 뜹니다
1번시스템을 2번시스템으로 수정좀부탁드리겠습니다..
2016-10-18
199
글번호 103040