커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1581
글번호 230811
답변완료
함수요청
안녕하세요?
종목선택 참조에서 ATM연결 콜옵션과 ATM연결 풋옵션이 있습니다.
[1]
이를 한개의 캔들로 그리고 싶습니다.
가령 data2 : ATM연결 콜옵션 일봉, data3 : ATM연결 풋옵션 일봉이면 data1이나 data4에
콜옵션 시가 + 풋옵션 시가 = 새로 생성할려는 봉 시가
콜옵션 고가 + 풋옵션 고가 = 새로 생성할려는 봉 고가
콜옵션 저가 + 풋옵션 저가 = 새로 생성할려는 봉 저가
콜옵션 종가 + 풋옵션 종가 = 새로 생성할려는 봉 종가
[2]
콜옵션 종가 + 풋옵션 종가 = 새로 생성하려는 종가선 그래프
1번과 2번 가능하면 모두 해보고 싶습니다.
2023-02-07
704
글번호 166079
답변완료
문의드립니다.
안녕하세요.
아래수식은 피라미딩 수식입니다
10단계까지 1계약씩 진입예정이고요.
4단계와 7단계에서 1계약을 팔아주고 다시 사서 중간 이악을 취하도록
수정을 부탁드립니다.
4단계 진입이 되면 1걔약을 우선 팔고 다시 1계약을 매수하고 싶습니다.
즉 4단계와 7단계 에서는 2계약이 매수 되고 1계약이 매도 됩니다,
이렇게 되면
AvgEntryPrice 가격도 원래 보다 높은 가격으로 수정이 되는 것이 맞는 것인지요?
높은 가격으로 수정되어야 이런 과정이 의미가 있기 때문입니다.
매도도 반대논리로 수정을 부탁드립니다.
if MarketPosition == 1 Then
{
buy("bb",AtStop,LatestEntryPrice(0)+PriceScale*매수간격);
if MaxEntries == 1 Then
ExitLong("매수1손절",AtStop,EntryPrice-PriceScale*손절변수);
if MaxEntries >= 2 Then
ExitLong("bx",AtStop,AvgEntryPrice);
ExitLong("매수이익x",AtLimit,AvgEntryPrice+PriceScale*이익변수 );
}
if MarketPosition == -1 Then
{
Sell("ss",AtStop,LatestEntryPrice(0)-PriceScale*매도간격);
if MaxEntries == 1 Then
ExitShort("매도1손절",AtStop,EntryPrice+PriceScale*손절변수 );
if MaxEntries >= 2 Then
ExitShort("sx",AtStop,AvgEntryPrice);
ExitShort("매도이익",AtLimit,AvgEntryPrice-PriceScale*이익변수);
}
2023-02-07
814
글번호 166076
돈을잃자 님에 의해서 삭제되었습니다.
2023-02-07
4
글번호 166073
답변완료
80653 지표좀...
재작성 요청드리겠습니다.
당일시가 출발 값도달시 박스생성 그다음은 박스값이 기준값되어 변수값도달시 다음 박스 생성. 생성된 박스값이 기준값되어 변수값도달시 또 박스생성
이과정이 반복되면 그림과 같습니다. 결국 일정변동폭 사각박스가 또다른 가격그래프가 되는 셈입니다.
2023-02-07
976
글번호 166059
답변완료
수식 관련 문의드립니다.
안녕하세요.
진입서식에 대해 궁금증이 있어서 문의드립니다.
아래서식 시스템 진입조건을 검색서식으로도 작성하여, 신호가 실시간으로 보이도록 하고 시스템을 시험운영중입니다.
시스템 매매시 계약진입할때 신호(검색)가 나오고있는 봉이 완성되면 신호봉이 아니라 꼭 다음봉에서 진입하는데,
장대 음봉이나 양봉이 형성될때 현재봉에서 신호(조건이 만족됨)가 나오면, 꼭대기나 맨아래 에서 다음봉에 진입하게 되어,
애로 사항이 있는데,
신호(조건이 만족됨)가 나오면 바로 신호나오고있는 봉이 완성되지 않아도,
다음봉까지 기다리지 않고 바로 진입하는 수식은 없는지요 ? 현재 시스템 매매상 구현이 안되는지요 ? ~
ex) 예를 들면, 5일선과 20일선 위에 가격이 도달하면 진입 이라는 조건이, 두 이평선위에 가격이 도달 한 현재봉이 완성되고 다음봉에
진입이 아니라, 그냥 가격이 두 이평선위에 도달하면 바로 진입 되는 수식 이라고 예를 들어 봅니다.
정~ 신호가 나온 다음봉에 진입할 수가 없다면,
혹시 3분봉 차트상 해당 시스템이 구현중이라면, 가상1분봉을 대입하여, 3분봉을 1분으로 3등분하여,
바로 진입할 수있는 방법은 없는지요 ? ^^
개발자님께서 예전에 Atstop 을 쓰셔서 만들어 주신 수식을 참고로 아래에 첨부합니다.
===============
{
if MarketPosition == 0 and
O > var1 and var1 < var1[1] and var2 < var2[1] Then
{
Sell("B1", AtStop, C-(PriceScale*0));
}
}
===============
항상 감사드리며,
늘 건강하시고, 좋은일 가득 일어나시길 바랍니다. ~
2023-02-07
839
글번호 166058
답변완료
문의드립니다.
차트내 분홍색 사각형 발생시 사각형고점을 돌파하는 수식 요청합니다.
input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),process(0),T(0);
Array:HH[10,2](0),LL[10,2](0);
process=0;
If Highest(H,length)==H and lastHiVal <> H and Lowest(L,length)==L and lastLoVal<>L Then
{
If LL[1,1]>L Then process=-1;
If HH[1,1]<H Then process=1;
}
Else If Highest(H,length)==H and lastHiVal <> H Then process=1;
Else If Lowest(L,length)==L and lastLoVal <> L Then process=-1;
If process==1 Then
{
T=1;
lastHiVal=H;
If HH[1,2]<LL[1,2] Then
{
For j=10 DownTo 2
{
HH[j,1]=HH[j-1,1];
HH[j,2]=HH[j-1,2];
}
}
If HH[1,2]<LL[1,2] or HH[1,1]<H Then
{
HH[1,1]=H;
HH[1,2]=Index;
sBar=Index-LL[1,2];
eBar=0;
If TL_GetBeginDate(TL1)==sDate[sBar]and TL_GetBeginTime(TL1)==sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if LL[1,1]>0 Then
{
TL1=TL_New(sDate[sBar],sTime[sBar],LL[1,1],sDate[eBar],sTime[eBar],HH[1,1]);
Text1=Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1,2,1);
}
Else
{
Text_Delete(text1);
Text1=Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1,2,1);
}
Text_SetStyle(Text1,2,1);
}
}
If process==-1 Then
{
T=-1;
lastLoVal=L;
If LL[1,2]<HH[1,2] Then
{
For j=10 DownTo 2
{
LL[j,1]=LL[j-1,1];
LL[j,2]=LL[j-1,2];
}
}
If LL[1,2]<HH[1,2] or LL[1,1]> L Then
{
LL[1,1]=L;
LL[1,2]=Index;
sBar=Index-HH[1,2];
eBar=0;
If TL_GetBeginDate(TL1)==sDate[sBar] and TL_GetBeginTime(TL1)==sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if HH[1,1]> 0 Then
{
TL1=TL_New(sDate[sBar],sTime[sBar],HH[1,1],sDate[eBar],sTime[eBar],LL[1,1]);
Text1=Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1,2,0);
}
Else
{
Text_Delete(text1);
Text1=Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1,2,0);
}
}
}
2023-02-07
1390
글번호 166053
답변완료
함수요청
안녕하세요?
아래 글번호 80621번 재질문입니다.
답변주신 스크랩트에 하루 n번 진입 제어를 하고 싶습니다.
스크립트 수정 부탁드립니다.
아래와 같이 변경해보았는데 신호가 생성안되네요
1
input : 최대진입횟수(5);
Var : Entry(0);
Var : mav(0);
mav = ma(c,100);
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition <= 0 and
NextBarSdate == sDate and
((Bdate != Bdate[2] and CountIF(C>DayOpen,2) == 2) or
(Bdate == Bdate[2] and CountIF(C>DayOpen,2) == 2 and C[2] < DayOpen)) and entry < 최대진입횟수 Then
Buy("b",AtMarket);
if MarketPosition == 1 Then
{
if CountIf(C<DayOpen,2) == 2 and BarsSinceEntry >= 2 Then
ExitLong("bx1",AtMarket);
if CountIf(C>DayOpen,4) == 4 and BarsSinceEntry >= 4 Then
ExitLong("bx2",AtMarket);
if CrossUp(c,mav) or CrossDown(c,mav) then
ExitLong("bx3",AtMarket);
}
SetStopEndofday(152000);
---------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
1
Var : mav(0);
mav = ma(c,100);
if MarketPosition <= 0 and
NextBarSdate == sDate and
((Bdate != Bdate[2] and CountIF(C>DayOpen,2) == 2) or
(Bdate == Bdate[2] and CountIF(C>DayOpen,2) == 2 and C[2] < DayOpen)) Then
Buy("b",AtMarket);
if MarketPosition == 1 Then
{
if CountIf(C<DayOpen,2) == 2 and BarsSinceEntry >= 2 Then
ExitLong("bx1",AtMarket);
if CountIf(C>DayOpen,4) == 4 and BarsSinceEntry >= 4 Then
ExitLong("bx2",AtMarket);
if CrossUp(c,mav) or CrossDown(c,mav) then
ExitLong("bx3",AtMarket);
}
SetStopEndofday(152000);
2
Var : mav(0);
mav = ma(c,100);
if MarketPosition >= 0 and
NextBarSdate == sDate and
((Bdate != Bdate[2] and CountIF(C<DayOpen,2) == 2) or
(Bdate == Bdate[2] and CountIF(C<DayOpen,2) == 2 and C[2] > DayOpen)) Then
Sell("s",AtMarket);
if MarketPosition == -1 Then
{
if CountIf(C>DayOpen,2) == 2 and BarsSinceEntry >= 2 Then
ExitShort("sx1",AtMarket);
if CountIf(C<DayOpen,4) == 4 and BarsSinceEntry >= 4 Then
ExitShort("sx2",AtMarket);
if CrossUp(c,mav) or CrossDown(c,mav) then
ExitLong("bx3",AtMarket);
}
SetStopEndofday(152000);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 글번호 80612번 연장선상에서 질문드립니다.
(답변주신 스크립트는 첫봉에서 부터 신호가 생성됩니다.)
국내선물 1분봉으로 일중거래를 하고자 합니다.
[1]
당일 시가선 기준으로 2번 연속 돌파되면 익봉 시가 매수
당일 시가선 기준으로 2번 연속 이탈되면 익봉 시가 매수청산
당일 시가선 기준으로 4번 연속 돌파되면 익봉 시가 매수청산
100ma 돌파 및 이탈시 익봉 시가 매수청산
[2]
당일 시가선 기준으로 2번 연속 이탈되면 익봉 시가 매도
당일 시가선 기준으로 2번 연속 돌파되면 익봉 시가 매도청산
당일 시가선 기준으로 4번 연속 이탈되면 익봉 시가 매도청산
100ma 돌파 및 이탈시 익봉 시가 매도청산
청산조건은 or이며 15:20에는 강제청산입니다.
1번과 2번 각각의 스크립트 작성을 부탁드립니다.
2023-02-07
1075
글번호 166052
답변완료
추세선 반등
input : Period(35);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),tl9(0),
date21(0),date22(0),time21(0),time22(0),txx(0), vTL(0), vTL9(0),txxx(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
For j = 0 To 19
Plot1(0);
{
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];
}
LoVal[0] = L;
LoBar[0] = 0;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[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]);
}
Condition1 = False;
}
Else
{
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
Text_Delete(tx);
Condition1 = False;
}
Else
{
if Condition1 == False and Value12 <= value11-0.3 and Value12 >= value11-0.45 and
C >= value12+PriceScale*2 Then
{
Condition1 = true;
Text_Delete(txx-2);
txx = Text_New(sdate,sTime,H-PriceScale*4,"●");
Text_SetStyle(txx,2,2);
Text_SetColor(txx,Green);
Text_SetSize(txx,15);
}
}
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
}
HiVal[0] = H;
HiBar[0] = 0;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date32 = date[0];
time32 = stime[0];
}
}
반등의 저점이(종가도 무관) 당일 고점에서 -1.2p 아래일 때만 동그라미 표시되게 부탁드립니다.
2023-02-07
1107
글번호 166051
답변완료
문의드립니다
장시작9시부터 9시10분까지 거래량이50만주 넘어간 종목을 찾고싶습니다
2023-02-07
774
글번호 166050