커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3760
글번호 230811
답변완료
죄송합니다 하나만 더 부탁드립니다.
분할매수 처음매수가 b11이랑 b1둘중 하나로 지정되어있는거 같은데 첫매수는 b11으로만 시작하게 하고 싶구요. +로 시작일때는 그날 매수에 전혀 참여하지 않는걸로 하고 싶은데 제대로 되어있는건지 모르겠습니다 ㅠㅠ 지금 상태는 +시작인데도 b1을 매수하고 있거든요.
그리고 평단가 계산할때 시스템트레이딩 매수매도 수수료도 감안해서 계산 가능한가요?
------------------
Input : 투자금액(10000000),Period(20), MultiD(2), N(1),시작일(20190503),시작시간(090000),청산시간(151500);
Input : loss(5);
var : e(0),x(0),count(0),Tcond(false),BBup(0),BBdn(0);
var : HH(0),Bxcond1(false),Bxcond2(false),Bxcond3(false);
var : LL(0),Sxcond1(false),Sxcond2(false),Sxcond3(false);
Array : VV[5](0),XX[5](0);
BBup = BollBandUp(Period,MultiD);
BBdn = BollBandDown(Period,MultiD);
vv[0] = floor((투자금액*0.1)/NextBarOpen);
vv[1] = floor((투자금액*0.2)/NextBarOpen);
vv[2] = floor((투자금액*0.3)/NextBarOpen);
vv[3] = floor((투자금액*0.4)/NextBarOpen);
if sdate >= 시작일 and stime >= 시작시간 Then
Tcond = true;
if bdate != bdate[1] Then
count = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
if Tcond == true then
{
if (TotalTrades == 0 or MarketPosition == 0 and BarsSinceExit(1) > 2) then
{
if MarketPosition == 0 and count < N and CrossDown(c,bbdn) and C < DayClose(1) Then
{
buy("b1",atmarket,def,vv[MaxEntries]);
}
if MarketPosition == 0 and NextBarSdate != sdate and NextBarOpen <= C Then
{
buy("b11",atmarket,def,vv[MaxEntries]);
}
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
e = e +1;
if e == 1 then
XX[e] = CurrentContracts;
Else
XX[e] = CurrentContracts-CurrentContracts[1];
}
#두번째 매수
if MarketPosition == 1 and e == 1 and count < N and CrossDown(c,bbdn) and C < DayClose(1) Then
{
buy("b2",atmarket,def,vv[MaxEntries]);
}
#세번재매수
if MarketPosition == 1 and e == 2 and count < N and CrossDown(c,bbdn) and C < DayClose(1) Then
{
buy("b3",atmarket,def,vv[MaxEntries]);
}
#네번재매수
if MarketPosition == 1 and e == 3 and count < N and CrossDown(c,bbdn) and C < DayClose(1) Then
{
buy("b4",atmarket,def,vv[MaxEntries]);
}
HH = highest(H,BarsSinceEntry);
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "Bx1" Then
Bxcond1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "Bx2" Then
Bxcond2 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "Bx3" Then
Bxcond3 = true;
if Bxcond1 == false and HH >= EntryPrice*1.02 and HH < EntryPrice*1.05 Then
ExitLong("Bx1",AtStop,HH-(HH-EntryPrice)*0.1,"",Floor(MaxContracts*(1/5)),1);
if Bxcond2 == false and HH >= EntryPrice*1.06 and HH < EntryPrice*1.10 Then
ExitLong("Bx2",AtStop,HH-(HH-EntryPrice)*0.1,"",Floor(MaxContracts*(2/5)),1);
if Bxcond3 == false and HH >= EntryPrice*1.12 Then
ExitLong("Bx3",AtStop,HH-(HH-EntryPrice)*0.1);
if (stime >= 청산시간 and stime[1] < 청산시간) and C > AvgEntryPrice then
{
ExitLong("bx");
}
}}
2019-05-03
186
글번호 128372
우리상향 님에 의해서 삭제되었습니다.
2019-05-03
29
글번호 128365
답변완료
수고하십니다
수고하십니다...
SL=SwingLow(1,L,4,4,9) 라고 할 때
해당봉이 음봉이면 종가에, 양봉이면 시가에 점 표시[크기 조절 가능하게]를 하는 지표식 부탁합니다.
수고하세요..
2019-05-03
175
글번호 128364
답변완료
지표식 문의
수고하십니다.
SL=SwingLow(1,L,3,3,7) 라고 할 때
1.해당 봉의 저점에 동그라미 표시[크기 조절 가능하게] 하는 지표식 부탁합니다.
2.현재시점기준, 전전 SwingLow[SL2] 저점과 이전 SwingLow[SL1]저점을 연결하는 선을 그리는 지표식 부탁합니다.
수고하세요...
2019-05-03
180
글번호 128363
답변완료
62349관련 재문의..
2개의 조건 만족 관련한 문의를 드려서 답변을 받았습니다.
답변 받은 시스템식이 잘 이해가 안가는데..
설명좀 부탁드립니다.
질문은 아래와 같았습니다.
첨부된 그림과 같은 신호검색식을 만들고 싶습니다.
2개의 조건이 시간차를 갖고 만족할때 입니다.
1. 볼밴15,2 상단을 돌파한후 시간이 지나서
2. 종가가 15이동평균선을 이탈할때 매수신호가 나오게 하고 싶습니다.
받은 답변은 아래와 같고요..
Input : Period(15), MultiD(2);
var : BBmd(0),BBup(0),BBdn(0),t(0);
BBmd = ma(C,Period);
BBup = BollBandUp(Period,MultiD);
BBdn = BollBandDown(Period,MultiD);
if crossup(c,bbup) Then
t = 2;
if crossup(c,bbmd) Then
{
t = 1;
}
if CrossDown(c,bbmd) Then
{
t = -1;
if t[1] == 2 and C < O Then
find(1);
}
if CrossDown(c,bbmd) Then
t = -2;
한가지 질문을 더 하면...
이 식에서..
if crossup(c,bbup) Then
t = 2;
볼밴상단을 돌파할때 t=2로 설정해주는건데..
지금봉에서 상단을 돌파했을때 t=2를 선언하는데.. 시간이 지나서 볼밴상단에서 다시 내려오게되면.. 그때 t변수는 어떻게 되는건가요?
t값은 다른값이 되는건가요?
2019-05-03
190
글번호 128362
답변완료
60840 관련 문의입니다.
친절한 답변에 늘 감사드립니다.
60840 에 써주신 수식대로 해보았는데요, (첨부화일 1.png 를 보아주세요)
1) 종목선택버튼(돋보기모양)을 눌러 A종목의 가격차트를 띄우고, 다시 종목추가버튼(빨간리본 돋보기)를 클릭하여 B종목의 가격차트를 띄우고,
지표적용 항목에서 등락율을 클릭하고, 지표속성에서 A종목을 선택하면, 첨부화일에서 보여지듯이 A종목의 가격차트에 표시되는 등락율값과 지표적용으로 만든 차트의 등락율값이 -0.18로 일치합니다.
마찬가지로 지표적용을 한번 더 하여 다시 등락율을 클릭하고 지표속성에서 B종목을 선택하면, B종목의 가격차트에 표시되는 등락율값과 지표적용으로 만든 차트의 등락율값이 -0.31로 일치합니다.
2) 그런데, 그리고 나서 다시 지표적용 항목에서 등락율합을 클릭하면 두 종목의 등락율을 합한 값을 출력하는 것인데 왜 지표속성에서 적용기본종목으로 어느 한 종목을 선택해야 하는지요?
그리고 두종목의 등락율의 합이니까 (-0.18) + (-0.31) = -0.49가 표시되어야 하는데, 지표속성에서 적용기본종목을 A,B 종목중 어느것을 선택하느냐에 따라 값이 달라질 뿐더러 각각 -0.15 , -0.27로 표시됩니다. 어떻게 해야 실시간 합한 값인 -0.49로 표시되는지요?
3) 실시간 등락율 합의 값인 -0.49로 잘 표시되어 차트가 그려지게 되면, 그 차트에 이평,RSI를
적용하여 그려지게 하려면 각각의 수식을 어떻게 써야 하는지요? (가격차트에 보조지표를 넣듯이, 등락율합의 차트에 보조지표를 구현해보려 한다는 의미입니다.)
4) 자세한 답변 부탁드립니다, 감사합니다.
2019-05-03
246
글번호 128361
답변완료
문의드립니다.
안녕하세요. 벌써 5월 이네요.
아래와 같은 조건의 수식 부탁드립니다.
1.조건
매수 : 20일선 우상향 할때 캔들 저점이 내려가서 20일선과의 이격거리가 1틱이하로
근접하거나 또는 저점이 20일선 아래로 돌파하면 그다음 캔들의 종가에 매수진입
이때 매수진입 신호봉의 이전 봉(20일선 근접 또는 돌파봉)에 수직선을 긋고
a.wav 음성파일을 실행시킴.
(매도는 반대)
청산및손절 : 10틱 수익시 청산, -10틱에 손절
즐거운 주말 되세요 ^^
2019-05-03
180
글번호 128360
답변완료
문의
var : HH(0),LL(0);
if (sdate != sdate[1] and stime >= 101500) or
(sdate == sdate[1] and stime >= 101500) Then
{
HH = H;
LL = L;
}
if var1 > 0 and var2 > 0 then
{
if H > HH Then
HH = H;
if L < LL Then
LL = L;
if crossup(c,LL+PriceScale*100) Then
Text_New(sdate,stime,h,"+100");
if crossup(c,LL+PriceScale*200) Then
Text_New(sdate,stime,h,"+200");
if crossup(c,LL+PriceScale*300) Then
Text_New(sdate,stime,h,"+300");
if CrossDown(c,HH-PriceScale*100) Then
Text_New(sdate,stime,h,"-100");
if CrossDown(c,HH-PriceScale*200) Then
Text_New(sdate,stime,h,"-200");
if CrossDown(c,HH-PriceScale*300) Then
Text_New(sdate,stime,h,"-300");
전혀 글자가 안뜹니다,수정부탁드립니다
2019-05-03
178
글번호 128359
답변완료
문의드립니다
if C[1] > O[1] and L > L[1]-PriceScale*1 Then
PlotPaintBar(h,l,"강조",MAGENTA);
if C[1] < O[1] and h < H[1]+PriceScale* 1 Then
PlotPaintBar(h,l,"강조",BLUE);
위수식에서 봉이 안나오는것이 있는데 봉이다나오게 수정할수있으면부탁드립니다~~
2019-05-03
177
글번호 128358