커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8125
글번호 230811
아톰 님에 의해서 삭제되었습니다.
2017-05-12
9
글번호 109501
답변완료
수식변경 부탁드립니다. 감사합니다.
안녕하세요 처음으로 수식변경 부탁드립니다.
기존에 키움으로 수식을 쓰다보니 여기서는 적용이 어렵네요.
아래 수식명은 개인적인 수식명입니다.
아래 수식은 기본 수평마디를 만드는 수식입니다
색상은 아무렇게나 해주시면 되세요
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
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
245
글번호 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
220
글번호 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
173
글번호 109494
답변완료
시스템질문입니다
특정일에는 진입안하는방법을 알고싶습니다
매주 월요일은 진입안하게하고싶습니다
Dayofweek(date)=1 //저것이 월요일로알고있는데 어떤식으로 작성해야하는지모르겠습니다
그리고 7번째감각 공부중인데요
5장에나오는 MFE MAE 그래프들 삼각형 나오는애들
예스트레이더에서도 지원을 하나요?
답변부탁드립니다
2017-05-12
160
글번호 109493
답변완료
ask
아래 건 2개의 수식 부탁드립니다.
1.특정시간에 buy
ㅡ시간입력:00시00분00초
ㅡ거래횟수입력: n회
2.특정시간에 sell
ㅡ시간입력:00시00분00초
ㅡ거래횟수입력:n회
2024-09-02
200
글번호 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
195
글번호 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
177
글번호 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
189
글번호 109488