커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3594
글번호 230811
답변완료
69949 수식 수정 부탁합니다.
안녕하세요~ 수식 감사합니다.
그런데, 시스템 적용해보니 첨부 그림과 같이 매수진입 후 위 간격식에 닿을 때 청산이 되어야 하는데, 청산이 안됩니다.
매도로 진입한 경우에도 아래 간격식에 닿으면 청산이 되어야합니다.
차트는 나스닥 1분봉 차트입니다.
수식 수정 부탁드립니다.
감사합니다.
================================================================
안녕하세요
예스스탁입니다.
input : tick(20);
var : sngMx(12000.00), sngDx(125.00);
var : v1(0),v2(0),v3(0),v4(0),v5(0);
var : v6(0),v7(0),v8(0),v9(0),v10(0);
var : v11(0),v12(0),v13(0),v14(0),v15(0);
var : v16(0),v17(0),v18(0),v19(0),v20(0);
v1 = sngMx;
v2 = sngMx - 1 * sngDx;
v3 = sngMx - 2 * sngDx;
v4 = sngMx - 3 * sngDx;
v5 = sngMx - 4 * sngDx;
v6 = sngMx - 5 * sngDx;
v7 = sngMx - 6 * sngDx;
v8 = sngMx - 7 * sngDx;
v9 = sngMx - 8 * sngDx;
v10 = sngMx - 9 * sngDx;
v11 = sngMx - 10 * sngDx;
v12 = sngMx - 11 * sngDx;
v13 = sngMx - 12 * sngDx;
v14 = sngMx - 13 * sngDx;
v15 = sngMx - 14 * sngDx;
v16 = sngMx - 15 * sngDx;
v17 = sngMx - 16 * sngDx;
v18 = sngMx - 17 * sngDx;
v19 = sngMx - 18 * sngDx;
v20 = sngMx - 19 * sngDx;
var1 = 0;
if h < v1+PriceScale*tick Then var1 = v1;
if h < v2+PriceScale*tick Then var1 = v2;
if h < v3+PriceScale*tick Then var1 = v3;
if h < v4+PriceScale*tick Then var1 = v4;
if h < v5+PriceScale*tick Then var1 = v5;
if h < v6+PriceScale*tick Then var1 = v6;
if h < v7+PriceScale*tick Then var1 = v7;
if h < v8+PriceScale*tick Then var1 = v8;
if h < v9+PriceScale*tick Then var1 = v9;
if h < v10+PriceScale*tick Then var1 = v10;
if h < v11+PriceScale*tick Then var1 = v11;
if h < v12+PriceScale*tick Then var1 = v12;
if h < v13+PriceScale*tick Then var1 = v13;
if h < v14+PriceScale*tick Then var1 = v14;
if h < v15+PriceScale*tick Then var1 = v15;
if h < v16+PriceScale*tick Then var1 = v16;
if h < v17+PriceScale*tick Then var1 = v17;
if h < v18+PriceScale*tick Then var1 = v18;
if h < v19+PriceScale*tick Then var1 = v19;
if h < v20+PriceScale*tick Then var1 = v20;
var2 = 0;
if L > v20-PriceScale*Tick Then var2 = v20;
if L > v19-PriceScale*Tick Then var2 = v19;
if L > v18-PriceScale*Tick Then var2 = v18;
if L > v17-PriceScale*Tick Then var2 = v17;
if L > v16-PriceScale*Tick Then var2 = v16;
if L > v15-PriceScale*Tick Then var2 = v15;
if L > v14-PriceScale*Tick Then var2 = v14;
if L > v13-PriceScale*Tick Then var2 = v13;
if L > v12-PriceScale*Tick Then var2 = v12;
if L > v11-PriceScale*Tick Then var2 = v11;
if L > v10-PriceScale*Tick Then var2 = v10;
if L > v9-PriceScale*Tick Then var2 = v9;
if L > v8-PriceScale*Tick Then var2 = v8;
if L > v7-PriceScale*Tick Then var2 = v7;
if L > v6-PriceScale*Tick Then var2 = v6;
if L > v5-PriceScale*Tick Then var2 = v5;
if L > v4-PriceScale*Tick Then var2 = v4;
if L > v3-PriceScale*Tick Then var2 = v3;
if L > v2-PriceScale*Tick Then var2 = v2;
if L > v1-PriceScale*Tick Then var2 = v1;
if MarketPosition <= 0 and var1 > 0 Then
{
Buy("b",AtStop,var1+PriceScale*tick);
}
if MarketPosition >= 0 and Var2 > 0 Then
{
Sell("s",AtStop,Var2-PriceScale*tick);
}
if MarketPosition == 1 Then
{
ExitLong("bp",AtLimit,var1[BarsSinceEntry+1]+sngDx);
ExitLong("bl",AtStop,var1[BarsSinceEntry+1]);
}
if MarketPosition == -1 Then
{
ExitShort("sp",AtLimit,var2[BarsSinceEntry+1]-sngDx);
ExitShort("sl",AtStop,var2[BarsSinceEntry+1]);
}
즐거운 하루되세요
========================================================================
> 모센 님이 쓴 글입니다.
> 제목 : 시스템 수식 문의드립니다.
> 안녕하세요, 수고 많으십니다. 항상 감사드리며 수식 문의드립니다.
아래 간격선 수식에서 매수, 매도조건을 설정하고 싶습니다.
매수진입 : 간격선 + 20틱에 닿을때 실시간 매수진입
매수청산 : 간격선에 닿을 때 실시간 매수청산
매도진입 : 간격선 - 20틱에 닿을때 실시간 매도진입
매도청산 : 간격선에 닿을 때 실시간 매도청산
input : cnt(20) // 20틱을 외부변수로 조정할 수 있도록 부탁합니다.
var : sngMx(12000.00), sngDx(125.00); // 500틱 간격선 중 고점 / sngDx: 500틱 간격(125pt)
v1 = sngMx;
v2 = sngMx - sngDx;
v3 = sngMx - 2 * sngDx;
v4 = sngMx - 3 * sngDx;
v5 = sngMx - 4 * sngDx;
v6 = sngMx - 5 * sngDx;
v7 = sngMx - 6 * sngDx;
v8 = sngMx - 7 * sngDx;
v9 = sngMx - 8 * sngDx;
v10 = sngMx - 9 * sngDx;
v11 = sngMx - 10 * sngDx;
v12 = sngMx - 11 * sngDx;
v13 = sngMx - 12 * sngDx;
v14 = sngMx - 13 * sngDx;
v15 = sngMx - 14 * sngDx;
v16 = sngMx - 15 * sngDx;
v17 = sngMx - 16 * sngDx;
v18 = sngMx - 17 * sngDx;
v19 = sngMx - 18 * sngDx;
v20 = sngMx - 19 * sngDx;
2020-11-17
692
글번호 143974
답변완료
문의드립니다.
안녕하세요. 아래와 같이 베이시스를 만들어 사용하고 있습니다.
기본차트 연결선물지수, 참조데이터 KP200지수로 하여
plot1(C-data2(c));
를 출력해 사용하고 있습니다.
그런데 분봉상 이 수치는 해당봉이 완성될 때 까지 계속해서 바뀌죠.
가령, 5분봉 차트에서 C-data2(c) 값은 각C값에 따라 5분동안 실시간으로 바뀌는데
5분동안 C-data2(c) 값의 고점과 저점을 고정하여 나타내고 싶습니다.
수식이 어떻게 될까요..??
2020-11-17
727
글번호 143969
답변완료
문의 드립니다.
안녕하세요
항상 빠른 답변 갑사드립니다.
아래 답변중에 수정 보완을 요청 드립니다.
2-b
5일 평균 거래량을 100% 돌파한 양봉들의 중심선을 수평선으로 차트 오른쪽까지 주욱 표시 할수 있는 식을 요청 드립니다.
input : P(5),Per(100);
var : TL(0);
var1 = ma(V,P);
if CrossUp(V,var1*(1+per/100)) Then
{
var2 = (H+L)/2;
TL = TL_New(sDate,sTime,var2,NextBarSdate,NextBarStime,var2);
TL_SetExtRight(TL,true);
}
위 사항을 적용하니 전일 라인이 오른쪽을 방향으로 침범하여 당일차트 보기가 불편합니다.
분봉상 당일만 라인이 표기 희망합니다.
혹시 인풋값으로 기간값을 넣을수 있다면
일봉에서도 신호가 발행하고 10일정도까지만 오른쪽 수평선이 표시된다면 좋을듯 합니다.
그럼 좋은 하루 되세요^^
감사합니다
2020-11-17
800
글번호 143968
답변완료
수식부탁드립니다
오늘도 수고해 주셔서 감사드립니다.
아래와 같은 과정으로 수식부탁을 드립니다.
(1)매수식(분봉에 적용)
1.거래시간
한국시간 기준 19시부터 익일 02시 00분까지
2.거래회수 : 주어진시간 기준 총 12회까지
3.매매기준
1)첫번째 양봉에 매수(손절15틱 익절 30틱)진입
2)먼저 진입된 매수포지션이 손절일 경우
다음 진입은 손절가 기준으로 +-15틱(외부변수) 이상에서 양봉에 매수진입( 손절 15틱
익절 30틱)
3)먼저 진입된 매수포지션이 익절 청산일 경우
다음봉 양봉에 매수진입(손절 15틱 익절 30틱)
4)이런 방법으로 먼저 진입되어진 것이 손절되거나 익절되어 청산되면(무포지션 상태)
주어진 조건(손절청산 또는 익절청산) 기준에 따라 양봉에만 계속 매수진입과 청산을
연속적으로 반복합니다.
5)매수진입 하루 총한도 12회까지 가능
외부변수 원함
1.거래시간
2.진입횟수
3.손절
4.익절
5.손절가기준
수고해 주셔서 다시 한 번 감사드립니다.
2020-11-17
718
글번호 143963
답변완료
분봉에서..
안녕하세요? 항상 어려운 질문드려도 답변 주셔서 감사합니다.
분봉에서 일봉, 주봉의 Linear Regression Line 계산해보고 싶은데,
방법 가이드 부탁드립니다!!
감사합니다.
2020-11-17
684
글번호 143960
답변완료
지표식 문의 드립니다.
안녕하세요,,,
해외선물에서 data2 차트의 당일의 최고가와 최저가 차이를 구하는 식좀 알려주세요,,
해외선물의 개장은 한국시간으로 아침 8시인데, 장마감이 다음날 아침7시라서,
어떻게 해야하는지를 모르겠어요,,
부탁드립니다...
감사합니다...
2020-11-17
748
글번호 143959
답변완료
문의
아래는 max 2개 까지 피라미딩하는 수식입니다.
피라미딩으로 2개 진입이 완성된 후
첫번째 진입한 것은 진입가격에서 2포인트 상승하면 익절
두번째 진입한 것은 진입가격에서 4포인트 상승하면 익절
수식을 요청합니다.
********************************************************************************
input : 시간1(090000),시간2(143000),상승(1.70);
input : uppyra검증(1.30),상승pyra(0.00),상승N(2);
var : C2(0,data2),entry(false,data2);
C2 = data2(C);
if data2(Bdate != Bdate[1]) Then
entry = false;
if data2(stime >= 시간1 and stime < 시간2) then{
if entry == false and data2(Bdate == Bdate[1] and HighD(0) > HighD(0)[1] and HighD(0)-LowD(0) >= 상승) Then{
entry = true;
buy("b");
}
}
if C >= EntryPrice+uppyra검증 and MaxContracts < 상승N Then
buy("bb1",AtStop,LatestEntryPrice(0)+상승Pyra);
2020-11-17
677
글번호 143958
답변완료
지표 질문입니다
1.
당일 고가에서 당일 저가를 뺀 차이값을 당일 고가 위에 글자로 표시
당일 고가와 당일 저가의 차이를 당일 고가에 더한 값을 당일 고가 위에 글자로 표시
당일 고가와 당일 저가의 차이를 당일 저가에 뺀 값을 당일 저가 아래에 글자로 표시
2.
오전9시부터 오전 10시까지 당일 고가에서 1.0 하락한 위치를 표시한다
감사합니다
2020-11-17
658
글번호 143957
답변완료
문의드립니다
1)틱수를 가지고 피보나치처럼 표현을 해볼까 하는데가능할지 .. 전일종가기준으로해서 + 500틱을고점으로잡고-500틱을저점으로 잡고해서 +250틱이중심선이되고-250틱이중심선이되고
+중심선으로표현 -중심선으로표현 해서 50프로만 수평선으로위.아래두개선이 나오게 하고십습니다 ,
var1 = dayhigh;
var2 = daylow;
var3 = var1-var2;
plot1(var1-var3*0.236);
plot2(var1-var3*0.50);
plot3(var1-var3*0.764);
위수식을 응용하여 가능하다면 부탁드리겠습니다~항상감사드립니다
2)if C >= dayopen+PriceScale*1 Then
PlotPaintBar(H,L,"강조",RED);
if C <= dayopen-PriceScale*1 Then
PlotPaintBar(H,L,"강조",LMAGENTA);
시가기준강조를 지표식으로 수정부탁합니다~~
3)Input:length(5);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),
TL_Val1(0),TL_Val2(0);
Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0);
Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(0);
Array:고점[10,2](0),저점[10,2](0);
처리구분 = "";
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
{
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;
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
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);
TL_Delete(TL3);
}
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],고점[1,1]+ PriceScale*1,sDate[eBar],sTime[eBar],고점[1,1]+PriceScale*1);
TL3 = TL_New(sDate[eBar+1],sTime[eBar+1],고점[1,1]+ PriceScale*40,sDate[eBar],sTime[eBar],고점[1,1]+PriceScale*40);
TL_SetExtRight(Tl2,true);
TL_SetColor(Tl2,CYAN);
TL_SetSize(TL2,2);
TL_SetExtRight(Tl3,true);
TL_SetColor(Tl3,CYAN);
TL_SetSize(TL3,2);
TL_SetColor(TL1,BLACK);
TL_SetSize(TL1,0);
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
{
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;
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
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(TL2);
TL_Delete(TL3);
}
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],저점[1,1]- PriceScale*1,sDate[eBar],sTime[eBar],저점[1,1]-PriceScale*1);
TL3 = TL_New(sDate[eBar+1],sTime[eBar+1],저점[1,1]- PriceScale*40,sDate[eBar],sTime[eBar],저점[1,1]-PriceScale*40);
TL_SetExtRight(Tl2,true);
TL_SetColor(Tl2,RED);
TL_SetSize(TL2,2);
TL_SetExtRight(Tl3,true);
TL_SetColor(Tl3,RED);
TL_SetSize(TL3,2);
TL_SetColor(TL1,BLACK);
TL_SetSize(TL1,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];
}
}
}
mav = ma(C,20);
지그재그고점과저점을찍을때+40틱씩위아래로 나타나는데 문재는 고점과저점을 조금이라도 돌파하면 거기서추가한만큼 다시+-40틱씩이추가되니까 어려움이 있습니다~~(예를들어 가격이계속상승하여서 40틱수평선을 1틱2틱10틱30틱 즉돌파한틱수가40틱미만이라면 첫번째 수평선은변하지않고계속유지되게끔 그러니까첫번째수평선으로부터 80틱이상이되어야 변하게끔~~80틱미만이라면 첫번쨰수평선은 계속유지되는거죠, 수정부탁드립니다~`항상감사드립니다
2020-11-17
647
글번호 143956