커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6307
글번호 230811
답변완료
수식변경 부탁드립니다. 감사합니다.
안녕하세요 처음으로 수식변경 부탁드립니다.
기존에 키움으로 수식을 쓰다보니 여기서는 적용이 어렵네요.
아래 수식명은 개인적인 수식명입니다.
아래 수식은 기본 수평마디를 만드는 수식입니다
색상은 아무렇게나 해주시면 되세요
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1.전고전시
수식1
a=(predayhigh()+dayopen())/2;
b=(predaylow()+dayopen())/2;
d=(a+b)/2;
a
수식2
b
수식3
d
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
2.갭마디
수식1
가=dayopen()-predayclose();
나=predayhigh()+가;
수식2
가=dayopen()-predayclose();
나=predayhigh()+가;
다=predaylow()+가;
라=(나+다)/2;
마=(라+나)/2;
수식3
가=dayopen()-predayclose();
나=predayhigh()+가;
다=predaylow()+가;
라=(나+다)/2;
수식4
가=dayopen()-predayclose();
나=predayhigh()+가;
다=predaylow()+가;
라=(나+다)/2;
마=(라+다)/2;
수식5
가=dayopen()-predayclose();
다=predaylow()+가;
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
3.피보나치비율 실시간
수식1
(dayhigh()-daylow())*0.764+daylow()
수식2
(dayhigh()-daylow())*0.618+daylow()
수식3
(dayhigh()-daylow())*0.5+daylow()
수식4
(dayhigh()-daylow())*0.382+daylow()
수식5
(dayhigh()-daylow())*0.236+daylow()
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이상 3가지 수식 변경 부탁드립니다.
위 수식은 키움증권 기준입니다.
감사합니다.
2017-05-12
176
글번호 109500
답변완료
행복; 지표식 작성 바랍니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
지표식 관련입니다
보내주신 << 아래 >>의 답변 잘 받았습니다
일봉ADX, 일봉DPlus, 일봉DMinus 의 경우
5월 11일 주가 변동성이 매우 큰 성창오토텍을 1분봉 차트에 띄워놓고 적용하여 보았습니다
13시25분 6,150원에서 14시35분 5,630원으로 8.4% 하락하는데
일봉ADX, 일봉DPlus, 일봉DMinus 의 수치가 변하지 않습니다
혹시 봉의 개수에서 착오가 있는 것은 아닌가 하여
수식을 요리조리 살펴 보았는데
원인을 찾을 수가 없었습니다
확인 바랍니다
수고하십시요^^
============<< 아래 >>==================================================
input : Length(14);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0);
Var : CummDMI(0), Return(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0);
if bdate != bdate[1] Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[1];
for cnt = 1 to 60{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
TR[cnt] = TR[cnt-1][1];
DMIv[cnt] = DMIv[cnt-1][1];
ADXv[cnt] = ADXv[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if CC[1] > 0 Then{
If CC[1] > HH[0] then
TH = CC[1];
else
TH = HH[0];
If CC[1] < LL[0] then
TL = CC[1];
else
TL = LL[0];
TR[0] = TH-TL;
}
If Dcnt == Length+1 Then {
MyRange = Length;
DPlus = 0;
PlusDM14 = 0;
TRange = 0;
DMinus = 0;
MinusDM14 = 0;
TRange1 = 0;
For Counter = 0 To MyRange - 1 {
If HH[Counter] - HH[Counter+1] < 0 Then
PlusDM = 0 ;
Else
PlusDM = HH[Counter] - HH[Counter+1];
If LL[Counter+1] - LL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[Counter+1] - LL[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
If Dplus + Dminus == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
Else If Dcnt > Length+1 Then {
If HH[0] - HH[1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[0] - HH[1];
If LL[1] - LL[0] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[1] - LL[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0 ;
If MyRange > 0 Then {
TRange = preTRange - (preTRange / MyRange) + TR[0];
PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM;
MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
If Dplus + Dminus == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
If DMIV[Length] == 0 Then{
CummDMI = 0;
for Counter = 0 To Length-1 Begin
if DMiV[counter] > 0 Then
CummDMI = CummDMI + DMIV[Counter];
End;
ADXv[0] = CummDMI / CurrentBar;
}
Else
ADXv[0] = (ADXv[1] * (Length - 1) + DMIv[0]) / Length;
plot1(ADXv[0]);
plot2(DPlus);
plot3(DMinus);
2017-05-12
162
글번호 109495
답변완료
수식 수정 부탁드립니다.
안녕하세요.
아래 수식에 진입방식이 n 번의 손절이 된 후 실제로 진입되도록 가능할까요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 변경 요청드립니다.
>
안녕하세요
예스스탁입니다.
input : 시작시간(180000), 끝시간(055000), 손절틱수 (10);
Input : TurnLen1(5), StdLen1(26);
Input : TurnLen2(9), StdLen2(26);
Var : 기준선1(0), 전환선1(0);
Var : 기준선2(0), 전환선2(0);
Var : HH(0), LL(0), vol(0),Tcond(false),T(0);
전환선1 = (Highest(High, TurnLen1) + Lowest(Low, TurnLen1)) / 2;
기준선1 = (Highest(High, StdLen1) + Lowest(Low, StdLen1)) / 2;
전환선2 = (Highest(High, TurnLen2) + Lowest(Low, TurnLen2)) / 2;
기준선2 = (Highest(High, StdLen2) + Lowest(Low, StdLen2)) / 2;
Condition1 = 전환선1 > C and C > 기준선2;
Condition2 = 전환선1 < C and C < 기준선2;
if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간 ) Then{
T = 0;
Tcond = true;
}
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간 ) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if Tcond == true then{
if T <= 0 and Condition1 == true and Condition1[1] == false Then{
T = 1;
if MarketPosition == 0 Then{
if PositionProfit(1) >= 0 Then
vol = 1;
Else
vol = Vol+2;
}
Else{
if PositionProfit(0) >= 0 Then
vol = 1;
Else
vol = Vol*2;
}
buy("b",OnClose,def,vol);
}
if T >= 0 and Condition2 == true and Condition2[1] == false Then{
T = -1;
if MarketPosition == 0 Then{
if PositionProfit(1) >= 0 Then
vol = 1;
Else
vol = Vol+2;
}
Else{
if PositionProfit(0) >= 0 Then
vol = 1;
Else
vol = Vol*2;
}
sell("s",OnClose,def,vol);
}
}
if MarketPosition == 1 Then{
LL = Floor((highest(H,BarsSinceEntry) - EntryPrice)/(PriceScale*손절틱수 ));
ExitLong("bx",AtStop,(EntryPrice-(PriceScale*손절틱수 ))+(PriceScale*손절틱수 )*LL);
}
if MarketPosition == -1 Then{
HH = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*손절틱수 ));
ExitShort("sx",AtStop,(EntryPrice+(PriceScale*손절틱수))-(PriceScale*손절틱수 )*HH);
}
SetStopLoss(PriceScale*손절틱수,PointStop);
2017-05-12
127
글번호 109494
답변완료
시스템질문입니다
특정일에는 진입안하는방법을 알고싶습니다
매주 월요일은 진입안하게하고싶습니다
Dayofweek(date)=1 //저것이 월요일로알고있는데 어떤식으로 작성해야하는지모르겠습니다
그리고 7번째감각 공부중인데요
5장에나오는 MFE MAE 그래프들 삼각형 나오는애들
예스트레이더에서도 지원을 하나요?
답변부탁드립니다
2017-05-12
118
글번호 109493
답변완료
ask
아래 건 2개의 수식 부탁드립니다.
1.특정시간에 buy
ㅡ시간입력:00시00분00초
ㅡ거래횟수입력: n회
2.특정시간에 sell
ㅡ시간입력:00시00분00초
ㅡ거래횟수입력:n회
2024-09-02
161
글번호 109492
답변완료
수식 변형 부탁 합니다
A=Highest(V,p1);
ValueWhen(1,V==A,h);
UP=IF(a>a(1),1,0); // 상승한 일수 표시
TT=SUM(UP,PERIOD2); // 상승한 일수 합산
TT/PERIOD2*100 // 백분율
p1 20
종목 검색으로 부탁 합니다
2017-05-12
154
글번호 109491
답변완료
조건 식에 대해 문의드립니다.
해외선물 200틱 차트상에서 다음 조건에 매수와 매도 및 청산을 위한 식을 부탁드립니다.
1) 200틱 차트의 볼린저벤드의 하단을 하행하면 무포지션에서 3계약까지 피라미딩 매수한다.
2) 볼란저 밴드의 상단을 상행하면 무포지션에서 3계약을 피라미딩 매도한다.
조건1) 매수 매도 모든 경우에 첫계약 혹은 잔여 계약이 존재하는 경우에 매매조건:
a. 매수시, 그 계약건수의 평균값이 종가보다 매수시에는 1pt 이상 (평균값 -1 >= c) 차이가 날 때 매수
b, 매도시에는 평균값+1pt 이상일 때 매도한다.
조건2) 청산조건
a. 손절, 각 포지션이 4pt이상 손실발생시에 손절한다.
b. 익절(기대청산 수익률), 각 포지션이 10pt이상 이익발생시에 시행한다.
c, 하루 동안 3회 손절시에 모든 계약을 청산하고 자동매매를 중단한다
조건3) 매매시 슬리피지
1틱의 슬리피지를 허용하거나 합리적인 슬리피지가 어느 정도인지 알고싶습니다.
감사합니다.
추신) 시스템을 작동시키면 기존에 매매와 관계없이 경우에 따라 포지션을 가지고 있다고 화면상에 나타나는데 그렇다면 실재 포지션이 없는 상태의 매수된 경우에는 청산시에 신규 매도 포지션이 실재상에 만들어지는지 알고싶습니다. 아니면 그런 경우에는 매도 포지션이 화면상으로만 존재하는지요?
2017-05-12
135
글번호 109490
답변완료
종목 검색에 대해서 궁금합니다.
질문 1.
저는 종목 검색 뿐만아니라
종목검색을 통해 결과값을 출력하는 것을 원하는데요
find함수의 인자부분이 결과값에 출력되는 것으로 이해하고있습니다
그렇다면 실제로 find(value1)을 했을 때 value1 의 값이 음수나 0 혹은 소수이하의 값을 가지는 결과 값이라도 검색되어 출력이 가능한지 궁금합니다.
질문 2.
예를들어
if ~~~~ then
value1 = a;
else
value1 = b;
find(value1);
처럼 작성한 경우
종목이 if문의 참인 경우의 종목(a결과값을 가지는 종목)만 검색이 되는 것인지 아님 else인경우(b)도 검색이 되는지 궁금합니다.
질문3.
if ~~~~ then{
if ~~~~ then
value1 = a;
else
value1 = b;
}else
value1 = c;
find(value1);
과 같은 식으로 종목 검색식을 작성한 경우
실제 검색되는 종목이 a 종목(검색시 a결과 값을 가지는 종목)만 검색이 되는지 아님 a,b,c 모두 검색이 되는 것인지 궁금합니다
(즉, 검색되는 기준이 궁금합니다 그져 if문의 참인 경우에만검색이 되는지 혹은 이중 삼중 if 문일 때는 어떻게되는지....)
2017-05-12
145
글번호 109488
답변완료
체결에 대해서 궁금합니다
예스 랭귀지를 통해서는 차트상 신호가 발생하지만 실제 체결에 대해서는 확실히 시스템적으로 알수가없다는 점은 충분히 이해하였습니다
그렇다면
체결 수량이나 실제 매수가 이뤄진지에대해서 알기 위한 방법이 전혀없는것인가요
온라인 강의 도중에 예스스팟을 통해 가능한것처럼 말씀하신 부분이있는데요
예스스팟은 제가 원하는 기능이 가능한지 궁금하고
또 예스스팟을 통해서 가능하다면 위의 기능에 대한 예시 전략이 있으면 작성 부탁드립니다
2017-05-12
181
글번호 109487