커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3211
글번호 230811
답변완료
수식문의 드립니다(갭보정)
Inputs: FastLen(5), MedLen(20), SlowLen(60);
Variables: FastAvg(0), MedAvg(0), SlowAvg(0);
FastAvg = MA(Close, FastLen);
MedAvg = MA(Close, MedLen);
SlowAvg = MA(Close, SlowLen);
If (FastAvg[1] < MedAvg[1] OR MedAvg[1] < SlowAvg[1]) AND (FastAvg > MedAvg AND MedAvg > SlowAvg) Then
Buy ("MAC3_LE");
If (FastAvg[1] > MedAvg[1] OR MedAvg[1] > SlowAvg[1]) AND (FastAvg < MedAvg AND MedAvg < SlowAvg) Then
Sell ("MAC3_SE");
평범한 MA3 정배열 역배열 함수입니다
이식을 갭보정하고 싶습니다
참고로 3분봉에서 사용하려 합니다
추가로 Macd 베이스라인도 갭보정 부탁드립니다
2020-08-25
1114
글번호 141756
답변완료
부탁좀 드리겠습니다.
TRIXv = TRIX(period);
emav = ema(c,Period);
if crossup(TRIXv,0) Then
{
value1 = emav;
value3 = emav;
}
if CrossDown(TRIXv,0) Then
value2 = emav;
if value1 > 0 and emav > value1 Then
value1 = emav;
if value2 > 0 and emav < value2 Then
value2 = emav;
if value3 > 0 and emav < value3 Then
value3 = emav;
plot1(value1);
plot2(value2);
plot3(max(value1,emav));
plot4(max(value3,emav));
2) 변환부탁드립니다
highest(high,기간)
lowest(low,기간)
((highest(high,기간))+(lowest(low,기간)))/2
3)
highest(h,period)
HIL=valuewhen(1,(highest(h(1),period)<highest(h,period)),((highest(high,Period)+lowest(low,Period))/2));
highest(H, period)-(((highest(H, period)-HIL)/3)*1)
HIL=valuewhen(1,(highest(h(1),period)<highest(h,period)),((highest(high,Period)+lowest(low,Period))/2));
highest(H, period)-(((highest(H, period)-HIL)/4)*3)
HIL=valuewhen(1,(highest(h(1),period)<highest(h,period)),((highest(high,Period)+lowest(low,Period))/2));
highest(H, period)-(((highest(H, period)-HIL)/5)*3)
HIL=valuewhen(1,(highest(h(1),period)<highest(h,period)),((highest(high,Period)+lowest(low,Period))/2));
highest(H, period)-(((highest(H, period)-HIL)/6)*4)
period = 300
4)
수식1>
highest(h, period)
수식2>
A = (highest(h, period) + lowest(l, period))/2;
B = highest(h, period);
A + (B-A)*4/6
수식3>
A = (highest(h, period) + lowest(l, period))/2;
B = highest(h, period);
A + (B-A)*3/4
수식4>
A = (highest(h, period) + lowest(l, period))/3;
B = highest(h, period);
A + (B-A)*2/5
수식5>
(highest(h, period) + lowest(l, period))/4
period=2000
2020-08-25
1045
글번호 141755
답변완료
문의 드립니다.
수식 문의드립니다.
*최고가 대비 지정한 틱 수까지 하락(상승)할 때마다
해당 틱수 캔들에 수평선이 그어질 수 있도록 수식이 가능한지요.
가능하다면 부탁드립니다.
*캔들에 선이 그어지는 가격에 대한 수치는 외부변수로 조정 가능하게 부탁드립니다.
*예를 들어 크루드오일의 경우 최고점이 42.60이고 지정 틱수가 30틱이면
고점 대비 30틱 하락(상승)한 지점에 수평선이 그려지고
다시 30틱 하락할 때 캔들에 계속 수평선이 그려지게 부탁드립니다.
항상 감사드립니다.
2020-08-24
1076
글번호 141754
답변완료
buy 함수를 for 문과 함께 사용하는 방법이 있을까요?
Input : base_price(1000);
Arrays : b_price[4](0), b_qty[4](0);
Vars: cnt(1);
For cnt = 1 to 3
{
b_price[cnt] = base_price * (1 - cnt * 0.02); //가격 배열 만들기
b_qty[cnt] = cnt; //수량 배열 만들기
}
If sdate == 20200824 && sTime == 100000 Then //한줄씩 buy 사용
/* {
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[1], b_qty[1], Close);
Buy("Buy1", AtLimit, b_price[1], b_qty[1]);
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[2], b_qty[2], Close);
Buy("Buy2", AtLimit, b_price[2], b_qty[2]);
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[3], b_qty[3], Close);
Buy("Buy3", AtLimit, b_price[3], b_qty[3]);
}
*/
{ //For문 사용
For cnt = 1 to 3
{
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[cnt], b_qty[cnt], Close);
Buy("Buy", AtLimit, b_price[cnt], b_qty[cnt]);
}
}
For 문 없이 사용하면 작동하는데
For 문을 쓰면 매수 이름이 같아져 작동이 안되는듯 합니다.
For 문을 사용해서 buy 함수를 쓰는 방법이 있을까요?
항상 감사합니다. ^^!
2020-08-24
1031
글번호 141753
답변완료
부탁 드립니다.
도움에 깊이 감사 드립니다.
ADX지표에 사용되는 DIPLUS함수의
타주기 즉
1)분봉 차트에서 예를 들어 10분봉에서 60분봉지표
2)60분봉 차트에서 일봉 지표
장시간 번거로우시겠지만 부탁드리오며
미리 경배로 깊이 감사 드립니다.
Inputs: Length(NumericSimple) ;
Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0);
If CurrentBar == 1 Then Begin
MyRange = Length;
DIPlus = 0;
PlusDM14 = 0;
TRange = 0;
For Counter = 0 To MyRange - 1 Begin
If High[Counter] - High[Counter+1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[Counter] - High[Counter+1];
If Low[Counter+1] - Low[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[Counter+1] - Low[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
TRange = TRange + TrueRange[Counter];
PlusDM14 = PlusDM14 + PlusDM;
End;
If TRange <> 0 Then
DIPlus = 100 * PlusDM14 / TRange;
Else
DIPlus = 0 ;
End
Else
If CurrentBar > 1 Then Begin
If High[0] - High[1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[0] - High[1];
If Low [1] - Low [0] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[1] - Low[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If MyRange > 0 Then Begin
TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
End;
If TRange <> 0 Then
DIPlus = 100 * PlusDM14 / TRange;
Else
DIPlus = 0 ;
End ;
참조1)
TrueRange = TrueHigh - TrueLow;
참조2)
If C[1] > H then
TrueHigh = C[1];
else
TrueHigh = H;
참조3)
If C[1] < L then
TrueLow = C[1];
else
TrueLow = L;
2020-08-24
917
글번호 141751
답변완료
외인 누적 선물평균가를 표시
90틱 챠트에 외국인 선물 누적 평균가를 수평선으로 표시하고 싶습니다.
2020-08-24
844
글번호 141748
답변완료
문의드립니다
data2 차트에서
60 봉 기간내
첫번째로 가장 낮은값
두번째로 가장 낮은값
세번째로 가장 낮은값
각각 지표식을 얻고 싶습니다
감사합니다
2020-08-24
815
글번호 141743
답변완료
수정 부탁드립니다.
안녕하세요?
아래 수식에 하루매매횟수를 외부변수로 넣고싶습니다.
감사합니다.
Input : 단기(5), 장기(20), profit_pt(0.5), loss_pt(0.5), 장종료청산(151000);
Variable : ent_position(0);
if MarketPosition == 0 Then
{
var1 = 0;
ent_position = 0;
}
If ma(C,단기)>ma(C,장기) and ( C>O and L==O ) and ent_position == 0 Then
{
Buy("매수",AtMarket);
Var1 = NextBarOpen;
ent_position = 1;
}
If ma(C,단기)<ma(C,장기) and ( C<O and H==O ) and ent_position == 0 Then
{
Sell("매도",AtMarket);
Var1 = NextBarOpen;
ent_position = -1;
}
SetStopProfittarget(profit_pt,PointStop);
SetStopLoss(loss_pt,PointStop);
SetStopEndofday(장종료청산);
2020-08-24
735
글번호 141738
답변완료
주석요청
안녕하세요?
아래 전략이 의미하는 바가 무엇인지요?
countif(C > mav1,5)[1] == 5
2020-08-24
783
글번호 141734