커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7304
글번호 230811
렉쳐 님에 의해서 삭제되었습니다.
2017-07-21
31
글번호 111506
답변완료
문의 드립니다.
질문1) 아래 식처럼 강조색깔이 나타나는 녹색봉 밑에 data2(C)의 수치를 표현하려면 수식을 어떻게 작성해야 하는지 부탁드립니다. 아래처럼 하니까 Value1 자리에 문자열이나 문자열표현식이 와야 한다고 에러 메시지가 뜨네요. 수치를 문자로 바꿔서 해야 할 것같은데......
if data6(Bdate == Bdate[1] and H > HighD(0)[1]) Then
{ PlotPaintBar(H,l,"강조",BLUE);
Value1 =data2(C) ;
var1 = sdate;
var2 = stime;
var3 = H+0.1;
Text1 = Text_New(var1,var2, var3, Value1 );
}
질문2) 개인주식 data2, 외인주식 data3 일 때 기관주식의 이전 5봉중 최고치를 H4의 수식으로 나타내려면 어떻게 해야 하는지 ........ 변수선언부터 잘 안되고 방법 좀 부탁드립니다. 추가로 기관주식의 현재봉 주식순매수 수량 - 3봉전 주식순매수 수량도 H5의 수식으로 부탁드립니다.
var : H2(0,data2), H3(0,data3) , SUM(0,data? ;
SUM = -( data2(c)+data3(c) ) ;
H2 = data2(highest(C,5)[1]);
H3 = data3(highest(C,5)[1]);
H4 =
H5 =
2017-07-24
155
글번호 111504
답변완료
수식문의
여러번 진입을 해서 한개가 아닌 여러개의 진입물량을 한거번에 청산하려고 합니다.
if 조건문 then begin
ExitLong("매수청산",atmarket);
end ;
처럼 ExitLong("매수청산",atmarket);
을 쓰면 여러개의 매수진입물량을 한꺼 번에 청산할 수 있습니까?
또
아침에 7시 이후에 기존의 진입수량이 있는 상태에서 작동이 꺼진 시스템을 재가동하면
시스템 모니터의 진입수량과
실제 진입수량이 차이(미결제 잔고 수량)가 있습니다.
그래서
실제 진입수량만큼 청산되는 것이 아니고
시스템 모니터의 진입수량만큼만 청산되고 있습니다.
어떻게 해결해야 할 지 알려 주시기를 부탁드립니다.
위에서처럼
if 조건문 then begin
ExitLong("매수청산",atmarket);
end ;
하면 되는지요?
2017-07-21
153
글번호 111502
답변완료
질문드립니다
시가선 기준으로 매매하는 식을 만들고있습니다
시가선 돌파나 위에서 완성봉이되었을때 진입조건이 완성되는데
그 완성봉의 길이를 지정해주고싶습니다
그 기준을 잡는 방법이 뭐가있을까요?
예를들어 완성된 양봉 틱수가 10틱이상 이런식으로요
매매식은 어제답변받아서 안적어주셔도됩니다
그리고 추가로 질문부탁드립니다
고저점을 잡고싶습니다
예를 들어서
1, 영업일이지나서 생긴 고저점 볼밴상단을 돌파한고점
하단을 돌파해서 생긴 저점
2, 영업일과 상관없이 볼밴기준으로 생기는 고저점을 지정해주고싶습니다
감사합니다
2017-07-21
157
글번호 111497
답변완료
수식 부탁드립니다
1.
오전 9시부터 9시 30분까지 당일 저가(daylow)를 표시한다
오전 9시부터 9시 30분까지 당일 고가(dayhigh)를 표시한다
오전 9시부터 9시 30분까지 당일 저가(daylow)와 당일 고가(dayhigh)의 상방 대칭을 표시한다
오전 9시부터 9시 30분까지 당일 저가(daylow)와 당일 고가(dayhigh)의 하방 대칭을 표시한다
2.
오전 9시부터 9시 30분까지 당일 고가를 돌파하는 가격에 매수하여
오전 9시부터 9시 30분까지 당일 저가(daylow)와 당일 고가(dayhigh)의 상방 대칭 가격에 청산
오전 9시부터 9시 30분까지 당일 저가를 붕괴하는 가격에 매도하여
오전 9시부터 9시 30분까지 당일 저가(daylow)와 당일 고가(dayhigh)의 하방 대칭 가격에 청산
3.
오전 9시부터 9시 30분까지 당일 고가를 돌파하는 양봉에 매수하여
오전 9시부터 9시 30분까지 당일 저가(daylow)와 당일 고가(dayhigh)의 상방 대칭 가격에 청산
오전 9시부터 9시 30분까지 당일 저가를 붕괴하는 음봉에 매도하여
오전 9시부터 9시 30분까지 당일 저가(daylow)와 당일 고가(dayhigh)의 하방 대칭 가격에 청산
감사합니다
2017-07-21
186
글번호 111492
회원 님에 의해서 삭제되었습니다.
2017-07-21
0
글번호 111491
답변완료
수식요청
1. 전주의 중심선이 필요합니다
2.
아랫식 변형 부탁드립니다
아랫식은 당일기준인데
해당주기준으로 바꾸었으면 합니다
input : 텍스트소수점자리수(5);
var : TL1(0),TL2(0),TL3(0),TL4(0);
var : TL5(0),TL6(0),TL7(0),TL8(0);
var : Tx1(0),Tx2(0),Tx3(0),Tx4(0);
var : Tx5(0),Tx6(0),Tx7(0),Tx8(0);
var : Tx11(0),Tx12(0),Tx13(0),Tx14(0);
var : Tx15(0),Tx16(0),Tx17(0),Tx18(0);
if L == DayLow Then{
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL2 = TL_New(sdate[1],stime[1],DayLow+PriceScale*65,sdate,stime,DayLow+PriceScale*65);
TL3 = TL_New(sdate[1],stime[1],DayLow+PriceScale*135,sdate,stime,DayLow+PriceScale*135);
TL4 = TL_New(sdate[1],stime[1],DayLow+PriceScale*120,sdate,stime,DayLow+PriceScale*120);
TL_SetExtRight(TL2,true);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL3,true);
TL_SetExtLeft(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtLeft(TL4,true);
TL_SetColor(TL2,RED);
TL_SetColor(TL3,RED);
TL_SetColor(TL4,RED);
TL_SetSize(TL2,2);
TL_SetSize(TL3,2);
TL_SetSize(TL4,2);
}
if H == DayHigh Then{
TL_Delete(TL6);
TL_Delete(TL7);
TL_Delete(TL8);
TL6 = TL_New(sdate[1],stime[1],DayHigh-PriceScale*65,sdate,stime,DayHigh-PriceScale*65);
TL7 = TL_New(sdate[1],stime[1],DayHigh-PriceScale*135,sdate,stime,DayHigh-PriceScale*135);
TL8 = TL_New(sdate[1],stime[1],DayHigh-PriceScale*120,sdate,stime,DayHigh-PriceScale*120);
TL_SetExtRight(TL6,true);
TL_SetExtLeft(TL6,true);
TL_SetExtRight(TL7,true);
TL_SetExtLeft(TL7,true);
TL_SetExtRight(TL8,true);
TL_SetExtLeft(TL8,true);
TL_SetColor(TL6,BLUE);
TL_SetColor(TL7,BLUE);
TL_SetColor(TL8,BLUE);
TL_SetSize(TL6,2);
TL_SetSize(TL7,2);
TL_SetSize(TL8,2);
}
Text_Delete(Tx2);
Text_Delete(Tx3);
Text_Delete(Tx4);
tx2 = Text_New(sdate,stime,DayLow+PriceScale*65,"당일저점+65틱("+NumToStr(DayLow+PriceScale*65,텍스트소수점자리수)+")");
tx3 = Text_New(sdate,stime,DayLow+PriceScale*135,"당일저점+135틱("+NumToStr(DayLow+PriceScale*135,텍스트소수점자리수)+")");
tx4 = Text_New(sdate,stime,DayLow+PriceScale*120,"당일저점+120틱("+NumToStr(DayLow+PriceScale*120,텍스트소수점자리수)+")");
Text_SetColor(tx2,red);
Text_SetColor(tx3,red);
Text_SetColor(tx4,red);
text_setStyle(tx2,2,1);
text_setStyle(tx3,2,1);
text_setStyle(tx4,2,1);
Text_Delete(Tx12);
Text_Delete(Tx13);
Text_Delete(Tx14);
tx12 = Text_New(sdate,stime,DayHigh-PriceScale*65,"당일고점-65틱("+NumToStr(DayHigh-PriceScale*65,텍스트소수점자리수)+")");
tx13 = Text_New(sdate,stime,DayHigh-PriceScale*135,"당일고점-135틱("+NumToStr(DayHigh-PriceScale*135,텍스트소수점자리수)+")");
tx14 = Text_New(sdate,stime,DayHigh-PriceScale*120,"당일고점-120틱("+NumToStr(DayHigh-PriceScale*120,텍스트소수점자리수)+")");
Text_SetColor(tx12,blue);
Text_SetColor(tx13,blue);
Text_SetColor(tx14,blue);
text_setStyle(tx12,2,1);
text_setStyle(tx13,2,1);
text_setStyle(tx14,2,1);
2017-07-21
172
글번호 111489
답변완료
질문드립니다.
그림처럼 2차매도진입을 할 때 동시에 1차계약만 청산되어서 문제가 발생하는것같습니다.
청산할 때 1,2차 모두 같은 값에 청산인데 늦게 2차가 들어가 꼬이는 것 같습니다.
어떻게 하면 될까요?
수식
Input : Period4(120), shortPeriod(12), longPeriod(26);
var : Lma(0), Sma(0), MACDv(0);
Input : Period(20), D(2) ;
Var : value1(0),value2(0);
var : Benefit(0), Loss(0), addPrice(0);
var : 날짜(20170501),진입시간(70000), 종료시간(190000),진입시간2(200000),종료시간2(213000);//16 17 ,12 16
var : Tcond1(false),Tcond2(false),S(0);
var : Flag1(0),Flag11(0),Flag2(0),Flag22(0);
Lma = ma(C, Period4); // 120일 선
value1 = BollBandUp(Period,D); //볼린져 상단밴드
value2 = BollBandDown(Period,D); //볼린져 하단밴드
if sdate >= 날짜 and ((stime >= 진입시간 and stime <= 종료시간))/* or (sTIme>=진입시간2 and sTime<=종료시간2)) */ Then
Tcond1 = true;
Else
{Flag1=0;
Flag11=0;
Flag2=0;
Flag22=0;
Tcond1 = false;}
if sdate >= 날짜 and ((stime >= 진입시간2 and stime <= 종료시간2))/* or (sTIme>=진입시간2 and sTime<=종료시간2)) */ Then
Tcond2 = true;
Else
{Flag1=0;
Flag11=0;
Flag2=0;
Flag22=0;
Tcond2 = false;}
addPrice = 50/100;
Benefit = 70/100;
Loss = 450/100;
if (V>=2000 and H >= value1 and Tcond1 == true and MarketPosition == 0) or (V>=4000 and H >= value1 and Tcond2 == true and MarketPosition == 0) /*and Flag2==0 and Flag22==0*/ Then
sell("매도진입1",OnClose);
else if (V>=2000 and L <= value2 and Tcond1 == true and MarketPosition == 0) or (V>=4000 and L <= value2 and Tcond2 == true and MarketPosition == 0) /*and Flag1==0 and Flag11==0*/ Then
buy("매수진입1",OnClose);
if (LatestEntryName=="매수진입1") Then{
Flag1=1;Flag11=1;
}
if (LatestEntryName=="매도진입1") Then{
Flag2=1;Flag22=1;
}
//추가진입
if MarketPosition == -1 and CurrentEntries == 1 then{
Sell("매도진입2",AtLimit,LatestEntryPrice + addPrice);
}
if MarketPosition == -1 and CurrentEntries == 2 then{
Sell("매도진입3",AtLimit,LatestEntryPrice + addPrice);
}
if MarketPosition == -1 and CurrentEntries == 3 then{
Sell("매도진입4",AtLimit,LatestEntryPrice + addPrice);
}
if MarketPosition == -1 and CurrentEntries == 4 then{
Sell("매도진입5",AtLimit,LatestEntryPrice + addPrice);
}
if MarketPosition == -1 and CurrentEntries == 5 then{
Sell("매도진입6",AtLimit,LatestEntryPrice + addPrice);
}
if MarketPosition == -1 and CurrentEntries == 6 then{
Sell("매도진입7",AtLimit,LatestEntryPrice + addPrice);
}
if MarketPosition == -1 and CurrentEntries == 7 then{
Sell("매도진입8",AtLimit,LatestEntryPrice + addPrice);
}
//==============================매수 추가진입===================================//
if MarketPosition == 1 and CurrentEntries == 1 then{
Buy("매수진입2",AtLimit,LatestEntryPrice - addPrice);
}
if MarketPosition == 1 and CurrentEntries == 2 then{
Buy("매수진입3",AtLimit,LatestEntryPrice - addPrice);
}
if MarketPosition == 1 and CurrentEntries == 3 then{
Buy("매수진입4",AtLimit,LatestEntryPrice - addPrice);
}
if MarketPosition == 1 and CurrentEntries == 4 then{
Buy("매수진입5",AtLimit,LatestEntryPrice - addPrice);
}
if MarketPosition == 1 and CurrentEntries == 5 then{
Buy("매수진입6",AtLimit,LatestEntryPrice - addPrice);
}
if MarketPosition == 1 and CurrentEntries == 6 then{
Buy("매수진입7",AtLimit,LatestEntryPrice - addPrice);
}
if MarketPosition == 1 and CurrentEntries == 7 then{
Buy("매수진입8",AtLimit,LatestEntryPrice - addPrice);
}
////청산
//매도
//1,2차
if MarketPosition==-1 and CurrentEntries < 3 Then{
ExitShort("매도익절1",AtLimit,EntryPrice-Benefit,"매도진입1");
ExitShort("매도익절2",AtLimit,EntryPrice-Benefit,"매도진입2");
}
if MarketPosition==-1 and CurrentEntries ==3 Then{
ExitShort("매도익절1.",AtLimit,EntryPrice,"매도진입1");
ExitShort("매도익절2.",AtLimit,EntryPrice,"매도진입2");
ExitShort("매도익절3",AtLimit,EntryPrice,"매도진입3");
}
if MarketPosition==-1 and CurrentEntries ==4 Then{
ExitShort("매도익절1..",AtLimit,EntryPrice+addPrice,"매도진입1");
ExitShort("매도익절2..",AtLimit,EntryPrice+addPrice,"매도진입2");
ExitShort("매도익절3.",AtLimit,EntryPrice+addPrice,"매도진입3");
ExitShort("매도익절4",AtLimit,EntryPrice+addPrice,"매도진입4");
}
if MarketPosition == -1 and CurrentEntries >= 5 then{
ExitShort("매도평균1",AtLimit,AvgEntryPrice,"매도진입1");
ExitShort("매도평균2",AtLimit,AvgEntryPrice,"매도진입2");
ExitShort("매도평균3",AtLimit,AvgEntryPrice,"매도진입3");
ExitShort("매도평균4",AtLimit,AvgEntryPrice,"매도진입4");
ExitShort("매도평균5",AtLimit,AvgEntryPrice,"매도진입5");
ExitShort("매도평균6",AtLimit,AvgEntryPrice,"매도진입6");
ExitShort("매도평균7",AtLimit,AvgEntryPrice,"매도진입7");
ExitShort("매도평균8",AtLimit,AvgEntryPrice,"매도진입8");
ExitShort("매도손절1",AtStop,EntryPrice+Loss,"매도진입1");
ExitShort("매도손절2",AtStop,EntryPrice+Loss,"매도진입2");
ExitShort("매도손절3",AtStop,EntryPrice+Loss,"매도진입3");
ExitShort("매도손절4",AtStop,EntryPrice+Loss,"매도진입4");
ExitShort("매도손절5",AtStop,EntryPrice+Loss,"매도진입5");
ExitShort("매도손절6",AtStop,EntryPrice+Loss,"매도진입6");
ExitShort("매도손절7",AtStop,EntryPrice+Loss,"매도진입7");
ExitShort("매도손절8",AtStop,EntryPrice+Loss,"매도진입8");
}
//매수
if MarketPosition==1 and CurrentEntries <3 Then{
ExitLong("매수익절1",AtLimit,EntryPrice+Benefit,"매수진입1");
ExitLong("매수익절2",AtLimit,EntryPrice+Benefit,"매수진입2");
}
if MarketPosition== 1 and CurrentEntries==3 Then{
ExitLong("매수익절1.",AtLimit,EntryPrice,"매수진입1");
ExitLong("매수익절2.",AtLimit,EntryPrice,"매수진입2");
ExitLong("매수익절3",AtLimit,EntryPrice,"매수진입3");
}
if MarketPosition== 1 and CurrentEntries==4 Then{
ExitLong("매수익절1..",AtLimit,EntryPrice-addPrice,"매수진입1");
ExitLong("매수익절2..",AtLimit,EntryPrice-addPrice,"매수진입2");
ExitLong("매수익절3.",AtLimit,EntryPrice-addPrice,"매수진입3");
ExitLong("매수익절4",AtLimit,EntryPrice-addPrice,"매수진입4");
}
if MarketPosition == 1 and CurrentEntries >= 5 then{
ExitLong("매수평균1",AtLimit,AvgEntryPrice,"매수진입1");
ExitLong("매수평균2",AtLimit,AvgEntryPrice,"매수진입2");
ExitLong("매수평균3",AtLimit,AvgEntryPrice,"매수진입3");
ExitLong("매수평균4",AtLimit,AvgEntryPrice,"매수진입4");
ExitLong("매수평균5",AtLimit,AvgEntryPrice,"매수진입5");
ExitLong("매수평균6",AtLimit,AvgEntryPrice,"매수진입6");
ExitLong("매수평균7",AtLimit,AvgEntryPrice,"매수진입7");
ExitLong("매수평균8",AtLimit,AvgEntryPrice,"매수진입8");
ExitLong("매수손절1",AtStop,EntryPrice-Loss,"매수진입1");
ExitLong("매수손절2",AtStop,EntryPrice-Loss,"매수진입2");
ExitLong("매수손절3",AtStop,EntryPrice-Loss,"매수진입3");
ExitLong("매수손절4",AtStop,EntryPrice-Loss,"매수진입4");
ExitLong("매수손절5",AtStop,EntryPrice-Loss,"매수진입5");
ExitLong("매수손절6",AtStop,EntryPrice-Loss,"매수진입6");
ExitLong("매수손절7",AtStop,EntryPrice-Loss,"매수진입7");
ExitLong("매수손절8",AtStop,EntryPrice-Loss,"매수진입8");
}
2017-07-21
197
글번호 111488
몽고메리 님에 의해서 삭제되었습니다.
2017-07-21
1
글번호 111487