커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3360
글번호 230811
답변완료
문의드립니다.
아래수식을 예스로 부탁합니다.
//Mode
src = input(title = "Source", type = source, defval = close)
atrLen = input(title = "ATR", type = integer, defval = 12, minval = 1, maxval = 1000)
m1 = input(title = "ATR Multiplier - ADX Rising", type = float, defval = 4.0, minval = 1, step = 0.1, maxval = 1000)
m2 = input(title = "ATR Multiplier - ADX Falling", type = float, defval = 1.5, minval = 1, step = 0.1, maxval = 1000)
adxLen = input(title = "ADX", type = integer, defval = 14, minval = 1, maxval = 1000)
// DI-Pos, DI-Neg, ADX
hR = high - nz(high[1])
lR = nz(low[1]) - low
dmPos = hR > lR ? abs(hR) : 0
dmNeg = lR > hR ? abs(lR) : 0
sTR = nz(sTR[1]) - nz(sTR[1]) / adxLen + tr
sDMPos = nz(sDMPos[1]) - nz(sDMPos[1]) / adxLen + dmPos
sDMNeg = nz(sDMNeg[1]) - nz(sDMNeg[1]) / adxLen + dmNeg
DIP = sDMPos / sTR * 100
DIN = sDMNeg / sTR * 100
DX = abs(DIP - DIN) / (DIP + DIN) * 100
adx = sma(DX, adxLen)
// Trailing ATR
m = rising(adx, 1) ? m1 : falling(adx, 1) ? m2 : nz(m[1])
up = hl2 - m * atr(atrLen)
dn = hl2 + m * atr(atrLen)
TUp = src[1] > TUp[1] ? max(up, TUp[1]) : up
TDown = src[1] < TDown[1] ? min(dn, TDown[1]) : dn
trend = src > TDown[1] ? 1 : src < TUp[1]? -1 : nz(trend[1], 1)
stop = trend == 1 ? TUp : TDown
trendChange = change(trend)
// Plot
lineColor = not(trendChange) ? trend > 0 ? #00FF00DD : #FF0000DD : #00000000
shapeColor = trendChange ? trendChange > 0 ? #00FF00F8 : #FF0000F8 : #00000000
plot(stop, color = lineColor, style = line, linewidth = 1, title = "ATR Trend")
plotshape(trendChange ? stop : na, style = shape.circle, size = size.tiny, location = location.absolute, color = shapeColor, title = "Change")
// end
2020-06-10
2247
글번호 139693
답변완료
문의
3개월 주기인 선물 만기일이 포함된 달만
거래하는 날짜 수식을 3가지 부탁드립니다.
1. 만기달 만기일만 거래
2. 만기달 만기 주만 거래(만기일 제외)
3. 만기달 첫날부터 만기일 전까지 거래
항상 고맙습니다.
2020-06-10
1882
글번호 139692
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2020-06-10
3
글번호 139691
답변완료
문의드립니다.
안녕하세요
항상 많은 도움에 감사드립니다.
진입 조건이 만족할 때, 보통 다음 캔들에서 진입하게 되는데요..
다음봉이 아닌 현재봉에서 조건 만족시 바로 진입이 가능하게 할 수있는지요 ?
감사합니다.
2020-06-10
1975
글번호 139690
답변완료
질문 올립니다.
안녕하세요. 늘 감사드립니다.
반전 패턴으로서의 파이프 패턴 매매식 부탁 드립니다.
1. 매수
하락 상태(5이평, 20이평이 역배열)에서,
첫째 봉 = 2*ATR(20)보다 큰 장대 음봉.
그 장대 음봉의 종가와 저가와, 그 다음 (즉 패턴의 두번 째 봉) 장대 양봉의 시가와 저가가 전부 서로 3틱(외부변수) 이상의 차이가 없고 (즉, 대략 패턴의 밑 바닥이 두 봉의 저가들 정도인 상태...),
첫번째 음봉과 두번째 봉(양봉)은 70% 이상 겹칠 때,
이 두 봉의 고가 중 높은 가격을 가격이 돌파할 때 매수.
손절은, 이 두 봉의 저가 중 더 낮은 가격보다 3틱 아래에 손절선 설치.
2. 매도
위의 매수와 반대 논리로 매도 및 매도청산.
감사합니다.
2020-06-10
2216
글번호 139689
답변완료
문의드립니다
해외선물의경우 장시작후 첫번째봉과 장마감전 마직막봉은 계산에 넣지않는 수식을 알고싶습니다
2020-06-09
2118
글번호 139688
답변완료
부탁드립니다
#,안녕하세요
ㅡ,아래수식에서 파동이 완성되고 완성된 파동의 텍스트출력이 되는 시점에서 현재가 봉의종가
를 다음파동 완성시까지 오른쪽 그리기로 Text 출력하는식을 추가하고 싶습니다,
도움 부탁드립니다.
input: period(20),봉수(2),파중굵기(0),파동굵기(0);
Var:선두께(파동굵기),상승색(GREEN), 하락색(YELLOW),예비선색상(white),상승세로선색상(RED),하락세로선색상(BLUE),세로선두께(0.5);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0),idx(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/;
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(h,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(l,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
//ZZ[j+1] = ZZ[j];
}
LoVal[0] = l;
LoBar[0] = 0;
//ZZ[0] = l;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
Tx = Text_New(date11,time11,Value11,"▼");
#동그라미 색상, 빨강
Text_SetColor(Tx,blue);
Text_SetStyle(Tx,2,1);
Text_SetSize(tx,20);
PlaySound("C:예스트레이더dataSound1point.wav");
tx = Text_New(date11,time11,Value11,NumToStr(value11,0)+NewLine);
Text_SetStyle(tx,2,1);
Text_SetSize(tx,0);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
TL2[0] = TL_New(date21,time21,fr[0],date22,time22,fr[0]);
TL_SetColor(TL2[0],white);
#TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]);
#TL_SetColor(TL2[1],RED);
#TL_SetStyle(TL2[1], 3);
#TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]);
#TL_SetColor(TL2[2],red);
#TL_SetSize(TL2[2],1);
#TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2));
#Text_SetColor(Tx2[2],BWHITE);
#Text_SetStyle(TX2[2],1,1);
#TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]);
#TL_SetColor(TL2[3],RED);
#TL_SetStyle(TL2[3], 3);
#TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]);
#TL_SetColor(TL2[4],red);
#TL_SetSize(TL2[4],1);
#TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2));
#Text_SetColor(Tx2[4],BWHITE);
#Text_SetStyle(TX2[4],1,0);
TL2[5] = TL_New(date21,time21,fr[5],date22,time22,fr[5]);
TL_SetColor(TL2[5],WHITE);
TL_SetSize(tl2[5],1);
TL2[6] = TL_New(date21,time21,fr[6],date22,time22,fr[6]);
TL_SetColor(TL2[6],YELLOW);
TL_SetSize(tl2[6],파중굵기);
idx = 0;
}
If LoVal[0] > l Then
{
LoVal[0] = l;
LoBar[0] = 0;
//ZZ[0] = l;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
//Tx = Text_New_Self(date12,time12,Value12,NumToStr(abs(value11-value12)/PriceScale,0)+" ");
#동그라미 색상, 빨강
//Text_SetColor(Tx,BLUE);
//Text_SetStyle(Tx,1,0);
TL_SetEnd(TL2[0],date22,time22,fr[0]);
TL_SetEnd(TL2[1],date22,time22,fr[1]);
TL_SetEnd(TL2[2],date22,time22,fr[2]);
Text_SetLocation(TX2[2],date22,time22,fr[2]);
TL_SetEnd(TL2[3],date22,time22,fr[3]);
TL_SetEnd(TL2[4],date22,time22,fr[4]);
Text_SetLocation(TX2[4],date22,time22,fr[4]);
TL_SetEnd(TL2[5],date22,time22,fr[5]);
TL_SetEnd(TL2[6],date22,time22,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
idx = 0;
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
//ZZ[j+1] = ZZ[j];
}
HiVal[0] = h;
HiBar[0] = 0;
//ZZ[0] = h;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
Tx1 = Text_New(date11,time11,Value11, "▲");
#동그라미 색상, 파랑
Text_SetColor(Tx1,red);
Text_SetStyle(Tx1,2,5);
Text_SetSize(tx1,20);
PlaySound("C:예스트레이더dataSound1point.wav");
tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,0));
Text_SetStyle(tx,2,0);
Text_SetSize(tx,0);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
TL3[0] = TL_New(date31,time31,fr[0],date32,time32,fr[0]);
TL_SetColor(TL3[0],white);
TL_SetSize(tl3[0],1);
#TL3[1] = TL_New(date31,time31,fr[1],date32,time32,fr[1]);
#TL_SetColor(TL3[1],BLUE);
#TL_SetStyle(TL3[1], 3);
#TL3[2] = TL_New(date31,time31,fr[2],date32,time32,fr[2]);
#TL_SetColor(TL3[2],BLUE);
#TL_SetSize(TL3[2],1);
#TX3[2] = Text_New(date32,time32,fr[2],NumToStr(fr[2],2));
#Text_SetColor(Tx3[2],BWHITE);
#Text_SetStyle(TX3[2],1,1);
#TL3[3] = TL_New(date31,time31,fr[3],date32,time32,fr[3]);
#TL_SetColor(TL3[3],BLUE);
#TL_SetStyle(TL3[3], 3);
#TL3[4] = TL_New(date31,time31,fr[4],date32,time32,fr[4]);
#TL_SetColor(TL3[4],BLUE);
#TL_SetSize(TL3[4],1);
#TX3[4] = Text_New(date32,time32,fr[4],NumToStr(fr[4],2));
#Text_SetColor(Tx3[4],BWHITE);
#Text_SetStyle(TX3[4],1,0);
TL3[5] = TL_New(date31,time31,fr[5],date32,time32,fr[5]);
TL_SetColor(TL3[5],white);
TL3[6] = TL_New(date31,time31,fr[6],date32,time32,fr[6]);
TL_SetColor(TL3[6],GREEN);
TL_SetSize(tl3[6],파중굵기);
idx = 0;
}
If HiVal[0] < h Then
{
HiVal[0] = h;
HiBar[0] = 0;
//ZZ[0] = h;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
//Tx = Text_New_Self(date12,time12,Value12,NumToStr(abs(value11-value12)/PriceScale,0)+" ");
#동그라미 색상, 빨강
//Text_SetColor(Tx,RED);
//Text_SetStyle(Tx,1,1);
TL_SetEnd(TL3[0],date32,time32,fr[0]);
TL_SetEnd(TL3[1],date32,time32,fr[1]);
TL_SetEnd(TL3[2],date32,time32,fr[2]);
Text_SetLocation(TX3[2],date32,time32,fr[2]);
TL_SetEnd(TL3[3],date32,time32,fr[3]);
TL_SetEnd(TL3[4],date32,time32,fr[4]);
Text_SetLocation(TX3[4],date32,time32,fr[4]);
TL_SetEnd(TL3[5],date32,time32,fr[5]);
TL_SetEnd(TL3[6],date32,time32,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
idx = 0;
}
}
idx = idx+1;
TL_SetSize(tL,선두께);
TL_SetSize(tL1,선두께);
TL_SetColor(tL,예비선색상);
var : VTL(0);
if idx == 봉수 Then
{
TL_Delete(VTL);//최근것만 표시하고자 할경우 이 내용을 삭제하시면 됩니다.
VTL = TL_New(sdate,stime,999999999,sDate,stime,0);
TL_SetColor(VTL,iff(T == -1,상승세로선색상,하락세로선색상));
TL_SetSize(VTL,세로선두께);
}
plot1(fr[0]);
plot2(fr[5]);
plot3(fr[6]);
$$, 고맙습니다.
2020-06-10
2180
글번호 139687
답변완료
문의드립니다.
안녕하세요.
답변이 없어 재 문의드립니다.
브이아이금융투자 해외선물 거래입니다.
동일봉(현재 틱으로 검토 중입니다.)에서 청산과 진입이 동시신호가 발생할때
청산은 되지만 신규진입은 되지 않는 경우가 확인되어 수정 및 문의드립니다.
1. 청산은 되는데 신규진입이 안되는 이유가 무엇인지요?
2. 청산과 신규진입이 순서대로 진행되도록 수정 부탁드립니다.
3. 하기 수식에서 신규진입이 안되었을 경우 SetStopProfittarget은 반대로 신규 진입이 되는지요? (이후 진입, 청산이 반대로 되는건지요?)
수식은 아래와 같습니다.
If MarketPosition == 0 and 매수조건 Then
Buy("매수");
If MarketPosition == 0 and 매도조건 Then
Sell("매도");
SetStopProfittarget(PriceScale*Stop수익틱,PointStop);
2020-06-09
2304
글번호 139686
답변완료
문의
해선에서 밤10시 반에서 ~11시반 사이의 고점 저점을 표현하고 싶습니다
2020-06-09
2348
글번호 139685