커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1710
글번호 230811
답변완료
궁금한점이 있어 요청드립니다.
항상 수고가 많으십니다.
예전에 시스템식을 요청드린적이 있는데
아래 시스템식에서 추가되어야 할 부분이 있어 요청을 드리게 되었습니다.
아래의 식에서 매수 진입해서 익절청산하고 11시 50분 되기전까지
재진입하는걸로 되어있는데.. 진입 횟수를 제안할수 있을까요??
예를 들면 2번까지만 진입하구 3번째는 진입 안하기.. 이렇게요??
매번 요청을 드려 항상 감사드립니다.
----------------------------------------------------------------------------
var : entry(0),AP(0),TT(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 MarketPosition == 0 and Dayopen(0) >= DayClose(1)*1.005 Then
{
if entry == 0 or
(entry >= 1 and (sTime < 115000 or Highest(H,BarsSinceExit(1)) < AP*1.06) and IsExitName("Bp1",1) == true) Then
Buy("b1",AtLimit,DayOpen*0.97);
}
if Dayopen(0) >= DayClose(1)*1.005 and
( (MarketPosition == 1 and MaxEntries == 1 and IsEntryName("b1") == true) or
(MarketPosition == 0 and entry >= 1 and IsExitName("Bp2",1) == true and (sTime < 115000 or Highest(H,BarsSinceExit(1)) < AP*1.06))) Then
Buy("b2",AtLimit,DayOpen*0.94);
if Dayopen(0) >= DayClose(1)*1.005 and
((MarketPosition == 1 and MaxEntries == 2 and IsEntryName("b1") == true) or
(MarketPosition == 1 and MaxEntries == 1 and IsEntryName("b2") == true)) Then
Buy("b3",AtLimit,DayOpen*0.91);
if MarketPosition == 1 Then
{
AP = AvgEntryPrice;
if CurrentContracts > CurrentContracts[1] Then
TT = TimeToMinutes(stime);
if MaxEntries == 1 and IsEntryName("b1") == true Then
{
ExitLong("bp1",AtLimit,AP*1.02);
if TimeToMinutes(sTime) >= TimeToMinutes(TT)+60 Then
ExitLong("bx1");
}
if (MaxEntries == 2 and IsEntryName("b1") == true) or
(MaxEntries == 1 and IsEntryName("b2") == true) Then
{
ExitLong("bp2",AtLimit,AP*1.01);
if TimeToMinutes(sTime) >= TimeToMinutes(TT)+60 Then
ExitLong("bx2");
}
if (MaxEntries == 3 and IsEntryName("b1") == true) or
(MaxEntries == 2 and IsEntryName("b2") == true) Then
{
ExitLong("bp3",AtLimit,AP*1.005);
if TimeToMinutes(sTime) >= TimeToMinutes(TT)+60 Then
ExitLong("bx3");
}
ExitLong("bl",AtStop,DayOpen*0.88);
}
SetStopEndofday(151800);
2021-04-08
818
글번호 147806
답변완료
수식 문의드립니다.
첨부파일 1, 2 처럼,
매수호가 잔량보다 매도호가 잔량이 많으면 매수신호,
매도호가 잔량보다 매수호가 잔량이 많으면 매도신호를 시스템식으로 부탁합니다.
아래 수식으로는 첨부3처럼 한 봉에서 매수, 매도 신호가 동시에 나옵니다(30초봉이나 1분봉)
if crossup(Bids,Asks) then
buy();
if CrossDown(Asks,Bids) then
sell();
/*
if Bids > Asks Then
buy();
if Asks < Bids Then
sell();
2021-04-08
938
글번호 147805
답변완료
문의 드립니다.
늘감사합니다
1백만원 분할매수
매수 : 3일연속 음봉시 3일차에 1차매수
4일차도 음봉시 2차 매수
5일차도 음봉시 3차매수
청산 : 5프로 수익시 전량청산(3차 매수분이 5프로 수익시에도 1,2차분까지 청산 )
양봉 발생시 전량 청산( 1,2,3차분)
2021-04-08
704
글번호 147804
2wnwn 님에 의해서 삭제되었습니다.
2021-04-08
5
글번호 147803
답변완료
수식관련 다시 질문드립니다.
수식관련 다시 질문드립니다.
수식관련질문을 좀 구체적으로 해야한다고 말씀하셔서 다시 질문드립니다.
5이평이 20이평 골든크로스낼때 매수신호 발생되고 자동 1개 매수되고
5이평이 20이평 데드크로스낼때 매도신호 발생되고 기존 매수는 청산되고 다시 매도 1개 되게끔 가능한 수식 부탁드립니다.
2021-04-08
680
글번호 147802
답변완료
지표수식부탁드립니다
안녕하세요
아래 수식을 이용해서 호가잔량 상승하락 지표수식을 만들고 싶습니다
즉 아래수식에서 계속해서 만들어지는 각 고저점이 기준이 되어서 그때마다 호가의 상승하락상태를 지표로 나타내고싶습니다(고점에서 매도 저점에서 매수의 시점을 호가의 증가하락움직임으로 파악하기위한용도입니다)
감사합니다
Input :length(2),종가사용여부(0),파동선두께(1),수치표시수(1),수치표시세모(1);
Variables:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분("")
,TL1(0),Text1(0),Text2(0),tl2(0),tl3(0),tl4(0),tl5(0),tl6(0),T(0),sumv(0),sumi(0),mav(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
var5 = bids-asks;#잔량차(매수호가잔량-매도호가잔량)
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
{
T = 1;
최종고가 = 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]);
If 수치표시수 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],"고점");
Text_SetStyle(Text1, 1, 1);
Text_SetColor(Text1,RED);
Text_SetSize(Text1, 16);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
If 수치표시수 == 1 Then
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 0, 1);
Text_SetColor(Text2,RED);
Text_SetSize(Text2, 16);
}
}
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,"고점");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = 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]);
If 수치표시수 == 1 Then
{
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text2, 0, 0);
Text_SetColor(Text2,CYAN);
Text_SetSize(Text2, 16);
}
If 수치표시수 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],"저점");
Text_SetStyle(Text1, 1, 0);
Text_SetColor(Text1,CYAN);
Text_SetSize(Text1, 16);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
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,"저점");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2021-04-08
764
글번호 147801
답변완료
수식어 부탁드립니다
input : StartTime(070000),EndTime(055500);
input : BuyN(50),SellN(60);
var : Tcond(false);
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
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
{
var1 = O;
Tcond = true;
SetStopEndofday(0);
}
if Tcond == true Then
{
if MarketPosition <= 0 and L >= DayOpen-80*PriceScale Then
Buy("b",AtLimit,DayOpen-40*PriceScale);
if MarketPosition <= 0 and L >= DayOpen-80*PriceScale Then
Sell("s",AtLimit,DayOpen+5*PriceScale);
}
if MarketPosition == 1 Then
{
SetStopProfittarget(PriceScale*BuyN,PointStop);
SetStopLoss(PriceScale*BuyN,PointStop);
}
Else if MarketPosition == -1 Then
{
SetStopProfittarget(PriceScale*SellN,PointStop);
SetStopLoss(PriceScale*SellN,PointStop);
}
Else
{
SetStopProfittarget(0);
SetStopLoss(0);
}
-------------------------
100틱에 목표수익시 매매정지를 포함하고자 합니다.
2021-04-08
725
글번호 147800
답변완료
문의 드립니다.
죄송합니다.
다시 문의 드리겠습니다.
총금액 (백만원을 3회 분할매수)
매수 : 일봉에서 10% 이상 상승한 봉 발생이 그봉을 기준봉으로 삼고,
기준봉으로 부터 10봉이내에 기준봉 종가아래에서 끝나는 음봉 발생시
1차 매수
매수후 5% 하락시 2차 매수
기준봉 전 봉의 종가 터치시 3차 매수
청산 : 기준봉의 종가 터치시 전액 청산
매수후 5% 상승시 보유분전량(3차매수후 5%상승해도 1,2차까지 같이청산) 청산
고맙습니다.
2021-04-08
691
글번호 147799
답변완료
시스템 작동 오류
수고 하시네요 !
시스템 을 자동으로 매매 를 하면 시스템 에 따라 실행 이 되어야 하는데 안되어서
금전적 인 피해 가 발생 이 되네요 검토 바랍니다.
1,매매 를 하고 곧바로 청산 이 됨 (1900 매수 1900 청산 )
2,익절 을 6틱 이상 설정 3틱 전환 시 익절 을 설정 했는데 청산 이 안됨 (4월7일 22시29분
1911 에매도 를 했는데 22시40분 에 1900 까지 하락 을 했다가 1913 까지 상승 을 하며
매수 를 하며 청산 을 해서 손해 를 봤네요 )
3,모바일 데이터 하고 pc 데이터 차이 가 나네요 (모바일 1900 매수 표시 가 됐는데
pc 에서는 1901 매수 로 표시 되네요 )
4,매매 체결 이 차트 에 표시 가 되었다 안되었다 하네요
검토 하시고 수정 부탁드립니다.
***** 수고 하세요 *****
2021-04-08
772
글번호 147798