커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3640
글번호 230811
답변완료
재문의드립니다
63510 2번 수식이 전전봉에 안 나오는데 다시한번 검토부탁드립니다
2019-07-29
279
글번호 130760
답변완료
수식부탁드립니다
안녕하세요
아래수식은 고저점발생파동수식입니다
이수식에서 각각의 고점이 새로이 발생될때마다 각 고점 저점이 기준선이되어 첨부그림과 같이
고점기준으로 이평선이 그려지고 반대로 저점기준으로 이평선이 그려지게 할수없을까요
부탁드립니다
Input:length(2),종가사용여부(0),파동선두께(5),파동선두께고저선(5),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),tl2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL2 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 2, 2);
Text_SetColor(Text1,RED);
Text_SetSize(Text1, 15);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,RED);
TL_SetSize(TL2,파동선두께고저선);
TL_SetColor(TL2,RGB(129,129,129));
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL2 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
Text_SetColor(Text1,BLUE);
Text_SetSize(Text1, 15);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUE);
TL_SetSize(TL2,파동선두께고저선);
TL_SetColor(TL2,RGB(129,129,129));
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2019-07-29
449
글번호 130740
답변완료
식 문의 드립니다
크루드오일에 적용할때 쓰려고 합니다.
1. 재고발표날이 있는 수요일 23시20분까지 포지션이 들어가 있으면 모두 청산하고 23시35분까지 모든 포지션 진입을 막아놓는 수식을 구하고자 합니다.
2. 위 수식을 썸머타임 여부에 따라 자동조절하는 기능은 없겠지요?
2019-07-29
278
글번호 130736
답변완료
문의 드립니다.
볼린져 밴드 20.2
상단선을 돌파시 매수 집입/ 상단선 아래로 내려오면 매도 청산완료
하단선을 아래로 돌파시 매도 진입/ 하단선 위로 돌파하면 매수 청산완료
부탁드립니다.
2019-07-29
240
글번호 130735
답변완료
수식 부탁드립니다.
# 10분봉에서 현재봉 거래량 합이
이전 3개봉의 거래량 합의 1.5배 이상인 종목 검색 수식 원합니다.#
게시판 내용중 하나를 적용해 보았는데
당일 적용이라 당연히 9 시 30 분 이후로 검색되어져야 하는데...
결과가 생각한 내용대로 안나와서
제가 잘못 적용한 부분이 있는것 같아 부탁 드립니다.
감사합니다. 수고하세요.
2019-07-29
311
글번호 130734
답변완료
함수요청
안녕하세요?
아래 스크립트 전략을 추가하고자 하여 스크립트를 수정요청드립니다.
세부내용은,
아래의 전략에 진입신호가 발생되었을 때 그 위치가 data1의 볼린저밴드 상하단 내에서로 진입신호를 필터링하고자 합니다.
즉, 매수신호는 기본종목이 볼린저밴드 상단 아래에서
매도신호는 기본종목이 볼린저밴드 하단 위에서
신호가 생성되게 하고자 합니다.
Vars : SP(0,data1), TickSize(0,data1);
Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2);
var : v1(0,data2),v2(0,data2);
SP = MarketPosition;
TickSize = PriceScale;
v1 = data2(H);
v2 = data2(L);
IF v1[10] > 0 Then
Begin
fstHH = data1(Highest(H, 5));
fstLL = data1(Lowest(L, 3));
sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]);
sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]);
End;
IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize);
IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL + TickSize);
2019-07-29
256
글번호 130721
답변완료
부탁드립니다.
손절 청산식 하나만 더 추가 부탁드립니다.
input: 손절틱(100)
매수 개수가 5개 이상이고 진입된 전체 손익이 손절틱 이상이면 매수 전체 손절
매도 개수가 5개 이상이고 진입된 전체 손익이 손절틱 이상이면 매도 전체 손절
var : ll(0),hh(0);
if index == 0 Then
buy();
if index == 100 Then
buy();
if index == 200 Then
buy();
if index == 300 Then
buy();
if index == 400 Then
buy();
if MarketPosition == -1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
hh = h;
ll = L;
}
if h > hh Then
hh = h;
if l < ll Then
ll = l;
if ll <= AvgEntryPrice-(PriceScale*500)/CurrentContracts Then
ExitShort("sp2",AtStop,LL+(AvgEntryPrice-LL)*0.01);
//매도 진입 수가 5개 이상이고 전체 수익이 +100틱 이상이었다가 다시 0이 되면 청산
if CurrentContracts >= 5 and MaxPositionProfit >= PriceScale*100 Then
ExitShort("sl2",AtStop,AvgEntryPrice);
}
if MarketPosition == 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
hh = h;
ll = l;
}
if h > hh Then
hh = h;
if l < ll Then
ll = l;
#if hh >= AvgEntryPrice+(PriceScale*500)/CurrentContracts Then
# ExitLong("bp2",AtStop,hh-(hh-AvgEntryPrice)*0.01);
//매수 진입 수가 5개 이상이고 전체 수익이 +100틱 이상이었다가 다시 0이 되면 청산
if CurrentContracts >= 5 and MaxPositionProfit >= PriceScale*100 Then
ExitLong("bl2",AtStop,AvgEntryPrice);
}
2019-07-29
248
글번호 130719
답변완료
함수 부탁드립니다
Easy Language입니다.예스함수와 지표식 부탁드립니다.
// Function
inputs:
Price (NumericSeries),
Length (NumericSimple);
vars:
TR(0),
DI_Diff(0),
DI_Sum(0),
ma(0),
pdm(0),
mdm(0),
pdi(0),
mdi(0),
DI_Factor(0),
VI(0),
diff(0),
HHV(0),
LLV(0),
WeightDM(Length),
WeightDI(Length),
WeightDX(Length),
ChandeEMA(Length),
output(0);
once ma=Price;
if(Price>Price[1]) then begin
pdm=Price-Price[1];
mdm=0;
end else begin
mdm=Price[1]-Price;
pdm=0;
end;
pdm=((WeightDM-1)*pdm[1] + pdm)/WeightDM;//ema.
mdm=((WeightDM-1)*mdm[1] + mdm)/WeightDM;//ema.
TR=pdm+mdm;
if (TR>0) then begin
pdi=pdm/TR;
mdi=mdm/TR;
end else begin
pdi=0;
mdi=0;
end;
pdi=((WeightDI-1)*pdi[1] + pdi)/WeightDI;//ema.
mdi=((WeightDI-1)*mdi[1] + mdi)/WeightDI;//ema.
DI_Diff=pdi-mdi;
if (DI_Diff<0) then DI_Diff= -DI_Diff;//Only positive momentum signals are used.
DI_Sum=pdi+mdi;
DI_Factor=0;//Zero case, DI_Diff will also be zero when DI_Sum is zero.
if (DI_Sum>0) then output=DI_Diff/DI_Sum else output=0;
output=((WeightDX-1)*output[1] + output)/WeightDX;
HHV = HighestFC(output,Length+1);
LLV = LowestFC(output,Length+1);
diff = HHV - LLV;
VI=0;
if (diff>0) then VI=(output-LLV)/diff;
ma=((ChandeEMA-VI)*ma[1]+VI*Price)/ChandeEMA;//Chande VMA formula with ema built in.
ADXVMA = ma;
끝부분의 ChandeEMA 확인가능하시면 그대로 해주시고 아니라면,
var : ADXVMAPeriod(Length);
ma=((ADXVMAPeriod-VI)*ma[1]+VI*Price)/ADXVMAPeriod;
ADXVMA = ma;
로 대체해 주십시요.
2019-07-29
348
글번호 130718
답변완료
(주식) 기초적인것 몇가지 문의드립니다.
1. 고점을 돌파할 때 매수한다는 조건 수식이 H <= DayHigh(0) 이게 맞는지 궁금합니다. 이 수식은 당일고가가 같거나(돌파를하진않았음) 뛰어넘었다는 의미같아서요.. 당일 고가를 뛰어넘었을때 사고싶으면 H < DayHigh(0) 이렇게 바꾸면 되나요?
2. buy("b",AtStop,DayHigh(0)+PriceScale*1); 여기서 조건에 부합할 때 현재가가 아닌 한틱 위 호가에 주문을 내려면 어떻게 변경하면 될까요?
3. 현금이 아닌 신용으로 매수가능금액의 99%로 매수하려면 수식을 어떻게 바꾸면 될까요?
4. 일봉상 3일전 고점과 저점폭보다 1일전 고저폭이 같거나 적을때 그리고, 2일전 고저폭보다 1일전 고저폭이 같거나 적을 때 당일 기준으로 전일고가 돌파시 매수한다. 라는 수식 부탁드리겠습니다.(쉽게말해서 1일전 일봉상 고저폭이 2일전,3일전 캔들보다 같거나 최저치인날을 조건으로 만들고 싶습니다.) --> 인사이드 데이처럼 전일 캔들의 고점과 저점 안에 있어야하는건 아닙니다.
5. 하루에 한번만 매수한다는 조건을 추가하려면 어떤 수식을 추가해야하는지 부탁드리겠습니다. (매수 후 스탑로스로 매도체결 뒤 다시 매수되는것 방지)
무더운 여름인데 더위조심하시고 감사합니다.
2019-07-29
291
글번호 130717