커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1688
글번호 230811
답변완료
문의
항상감사합니다.
Text_SetStyle(tx1,0,1);
Text_SetStyle(tx2,0,1);
Text_SetStyle(tx3,0,1);
1]?SetStyle은 ?
2]0자리에 들어갈수 있는 건 뭘까요?
3]1자리에 들어갈수 있는 건 뭘까요?
___________________________________
2021-10-15
1169
글번호 152904
답변완료
부탁 드려요~~
일봉상 5일선이 일목 기준선 돌파 할때
또는
5일선과, 기준선이 8%안으로 이격이 있을때
주가가 5일선를 돌파 할때 종목을
보고 싶습니다.
2021-10-15
1164
글번호 152902
답변완료
호가
총매도호가량-총매수호가량 이 + - 변경될 때의 가격을 이은선 수식을 부탁드립니다
2021-10-15
1239
글번호 152901
답변완료
문의 드립니다.
수고많으십니다~
10시 30분 이후 거래는 익절 50틱으로 되어 있는데, 실제 거래에서는 30틱 수익으로 청산되었습니다.어디에 문제가 있는지 확인 부탁드립니다.
거래내역 올려드립니다.
확인부탁드립니다~~^^
input : StartTime(101500),EndTime(114000);
input : Length(20), D1(2);
input : 익절1(30),손절1(30),청산구분시간(103000),익절2(50),손절2(30),익절연속횟수(3),손절연속횟수(2);
var : Tcond(false),profit(0),loss(0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
profit = 0;
loss = 0;
}
if TotalTrades > TotalTrades[1] Then
{
if IsExitName("bp.",1) or IsExitName("bp1",1) or IsExitName("bp2",21) or
IsExitName("sp.",1) or IsExitName("sp1",1) or IsExitName("sp2",1) Then
profit = profit+1;
Else
profit = 0;
if IsExitName("bl.",1) or IsExitName("bl1",1) or IsExitName("bl2",1) or
IsExitName("sl.",1) or IsExitName("sl1",1) or IsExitName("sl2",1) Then
loss = loss+1;
Else
loss = 0;
}
var1 = BollBandUp(Length,D1);
var2 = BollBandDown(Length,D1);
if Tcond == true Then
{
If CrossUP(H,var1) and c > o and profit < 익절연속횟수 and loss < 손절연속횟수 then
{
Buy("b",OnClose,DEF,1);
ExitLong("bp.",AtLimit,C+PriceScale*익절1,"",1,1);
ExitLong("bl.",AtStop,C-PriceScale*손절1,"",1,1);
}
If CrossDown(L,Var2) and C < O and profit < 익절연속횟수 and loss < 손절연속횟수 then
{
Sell("s",OnClose,DEF,1);
ExitShort("sp.",AtLimit,C-PriceScale*익절1,"",1,1);
ExitShort("sl.",AtStop,C+PriceScale*손절1,"",1,1);
}
}
if MarketPosition == 1 Then
{
if sTime >= StartTime and sTime < 청산구분시간 Then
{
ExitLong("bp1",AtLimit,EntryPrice+PriceScale*익절1,"",1,1);
ExitLong("bl1",AtStop,EntryPrice-PriceScale*손절1,"",1,1);
}
if sTime >= 청산구분시간 and sTime < Endtime Then
{
ExitLong("bp2",AtLimit,EntryPrice+PriceScale*익절2,"",1,1);
ExitLong("bl2",AtStop,EntryPrice-PriceScale*손절2,"",1,1);
}
}
if MarketPosition == -1 Then
{
if sTime >= StartTime and sTime < 103000 Then
{
ExitShort("sp1",AtLimit,EntryPrice-PriceScale*익절1,"",1,1);
ExitShort("sl1",AtStop,EntryPrice+PriceScale*손절1,"",1,1);
}
if sTime >= 103000 and sTime < Endtime Then
{
ExitShort("sp2",AtLimit,EntryPrice-PriceScale*익절2,"",1,1);
ExitShort("sl2",AtStop,EntryPrice+PriceScale*손절2,"",1,1);
}
}
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-10-15
1253
글번호 152900
답변완료
문의드립니다.
안녕하세요.
언제나 감사합니다.
매수:
무포지션애서
음봉뒤에 양봉이 연속 2번 발생하면 매수합니다.
이 때 양봉이 2번 발생할 때의 첫번째 양봉의 시가를 손절가라고 정의합니다.
청산
매수후에 양봉이 먼저 발생하면 청산합니다.
그리고
매수후에 음봉이 먼저 발생하면 바로 청산하지 않고
다음봉 까지 기다려서 다음 봉 종가에 청산합니다.
즉 매수후 첫 봉이 음봉이면 다음 봉 종가에 청산하는 것입니다.
손절
위의 손절가를 종가가 하향 이탈시 손절청산합니다.
매도: 반대 논리로 부탁드립니다.
2021-10-15
1384
글번호 152899
답변완료
이평선 돌파종목 검색
안녕하세요..
그림과 같은 수식을 만들려고 하는데요..
어제날짜에 분봉차트에서...
시가 또는 저가가 5일선 밑에서 5일선을 돌파한 양봉 종목을 검색하는
수식을 만들고 싶습니다.
2021-10-15
1556
글번호 152898
답변완료
수식좀 요청 드립니다.
* 좋은 주말 되십시요.
* 아래 수식 좁 부탁 드립니다.
var : SEH(0),SEL(0);
SEH = highest(H,BarsSinceEntry);
SEL = Lowest(L,BarsSinceEntry);
if MarketPosition == 1 ## 매수일 경우
and IsEntryName("SS2") == true
and 최대수익(20틱) 발생이후 20봉 경과하도록 최대 수익이 갱신 안되고
수익이 5틱 이상이면 청산
and 최대수익(20틱) 발생후 20틱 하락했다가 최대 수익 갱산 되면수익 청산
Then
{
if highest(H,BarsSinceEntry) >= EntryPrice + PriceScale*1 Then
{ Sell("SS2CUTSW1";}
}
## 매도일 경우도 부탁 드립니다.
* 고맙습니다. 좋은 주말 되십시요.
2021-10-15
835
글번호 152897
답변완료
수식점검
본 수식 점검해 주세요!
input: 익절틱수(27),손절틱수(25),진입횟수(1);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0);
var:처리구분(""),TL_Val1(0),TL_Val2(0),color(0),T(0);
Array:고점[10,2](0),저점[10,2](0);
var:entry(0);
if Bdate !=Bdate[1] Then
entry=0;
if (MarketPosition !=0 and MarketPosition !=MarketPosition[1])or
(MarketPosition==MarketPosition[1] and TotalTrades>TotalTrades[1])Then
entry=entry+1;
처리구분="";
If Highest(H,length)== H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal<> L Then
{
If 저점[1,1]>L Then 처리구분="저점처리";
If 고점[1,1]<H Then 처리구분="고점처리";
}
Else If Highest(H,length)== H and lastHiVal <> H Then 처리구분 ="고점처리";
Else If Lowest(L,length)== L and lastLoVal <> L Then 처리구분 ="저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2]<저점[1,2]Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] <H Then
{
고점[1,1]=H;
고점[1,2] =Index;
sBar=Index-저점[1,2];
eBar =0;
If TL_GetBeginDate(TL1)==sDate[sBar] and TL_GetBeginTime(TL1)==sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1]< 고점[2,1][1] and 고점[2,1][1]> 고점[1,1][1]and 저점[2,1][1]< 저점[1,1][1] Then
TL_Delete(TL2);
}
if 고점[1,1]> 고점[2,1] or 고점[2,1] == 0 Then{
color= RED;
//buy("b");
}
TL1= TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,color);
Text1= Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2));
Text_SetStyle(Text1,2,1);
If 고점[3,1]< 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar=Index-저점[2,2];
eBar=Index-저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T=-1;
lastLoVal=L;
If 저점[1,2]< 고점[1,2] Then
{
For j=10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1]> 고점[1,1][1] Then
TL_Delete(TL3);
}
if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{
color = blue;
//sell("s");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
if T == 1 and CrossUp(C,고점[2,1]) Then
{
if entry < 진입횟수 Then
Buy("b");
Else
ExitShort("sx");
}
if T == -1 and CrossUp(C,저점[2,1]) Then
{
if entry < 진입횟수 Then
Sell("s");
Else
ExitLong("bx");
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
줄수 16과 21~22에 선언되지 않은 이름 'length'가 사용되었다고 하네요
도통 모르겠네요
미리 수고에 감사드려요!
2021-10-15
897
글번호 152891
답변완료
지수갭2
시뮬레이션을 해보니 값이 나오지 않습니다.
살펴주십시요.
input: 지수갭1(5.50),지수갭2(2.50),시가대비(1.00);
var : month(0,Data2),nday(0,Data2),week(0,data2);
var : X(False,Data2),cond(False,Data2);
var : DD(0,Data2),C2(0,Data2);
month = data2(int(date/100)-int(date/10000)*100);
nday = data2(date - int(date/100)*100);
Week = data2(DayOfWeek(date));
#옵션만기일
if (nday >= 8 and nday <= 14 and week == 4) then
X = true;
Else
X = False;
if data2(bdate != Bdate) Then
{
if X == false and X[1] == true Then
{
C2 = 0;
cond = true;
dd = 0;
}
if cond ==true Then
dd = dd+1;
}
#만기다음날 Data2 종가
if cond == true and dd == 1 Then
C2 = data2(C);
if C2 > 0 and 지수갭1 > Data2(Opend(0)-C2) and Data2(Opend(0)-C2) > 지수갭2 and c > dayopen + 시가대비 then
buy();
**********************************************************************************
안녕하세요
예스스탁입니다.
var : month(0,Data2),nday(0,Data2),week(0,data2);
var : X(False,Data2),cond(False,Data2);
var : DD(0,Data2),C2(0,Data2);
month = data2(int(date/100)-int(date/10000)*100);
nday = data2(date - int(date/100)*100);
Week = data2(DayOfWeek(date));
#옵션만기일
if (nday >= 8 and nday <= 14 and week == 4) then
X = true;
Else
X = False;
if data2(bdate != Bdate) Then
{
if X == false and X[1] == true Then
{
C2 = 0;
cond = true;
dd = 0;
}
if cond ==true Then
dd = dd+1;
}
#만기다음날 Data2 종가
if cond == true and dd == 1 Then
C2 = data2(C);
if C2 > 0 and 5.50 > Data2(Opend(0)-C2) and Data2(Opend(0)-C2) > 2.50 and c > dayopen + 1.00 then
buy();
if C2 > 0 and -2.50 > Data2(OpenD(0)-C2) and Data2(Opend(0)-C2) > -5.50 and c > dayopen + 1.00 then
buy();
즐거운 하루되세요
> 목마와숙녀 님이 쓴 글입니다.
> 제목 : 문의
> data1 kospi200 선물
data2 kospi200 지수
kospi200갭 플러스(당일 kospi200 시가 - 월물옵션 첫날 kospi200지수 종가의 결과가 플러스)
kospi200갭 마이너스(당일 kospi200 시가 - 월물옵션 첫날 kospi200지수 종가의 결과가 마이너스)
아래 수식을 완성해주십시요.
*************************************************************************
if 5.50 > kospi200갭 플러스 > 2.50 and c > dayopen + 1.00 then
buy();
if -2.50 > kospi200갭 마이너스 > -5.50 and c > dayopen + 1.00 then
buy();
2021-12-16
790
글번호 152888