커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1702
글번호 230811
사공 님에 의해서 삭제되었습니다.
2022-01-14
0
글번호 155433
답변완료
시스템 진입시점 지표 추가
항상 감사드립니다
아래시스템에서 시스템 작동시간을 추가하고 싶습니다.
추가항목 : 현재 08:00에 시스템이 시작되는데 시스템작동조건을
1. 08:00 에 시작
2. var90 이 08:00이후에 움직였을때( var90 > var90[1] 또는 var90 < var90[1] )
그시간이후로 시스템 진입/청산 시작
if V == highest(V,10) Then
var10 = (C+H+L)/3;
if V == highest(V,60) Then
var20 = (C+H+L)/3;
if V == highest(V,480) Then
var90 = (C+H+L)/3;
### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ###
var : entrycnt(0);
if stime == 080000 or (stime > 080000 and stime[1] < 080000) Then # 08:00 장시작 #
Entrycnt = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
Entrycnt = Entrycnt+1;
##### 1_ Rsi 매매식 #####
if stime >= 080000 or stime < 080000 Then{
if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and #동일방향 재진입금지#
Var10>Var20 Then
BUY("B_1");
if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)) and #동일방향 재진입금지#
Var10<Var20 Then
sell("S_1");
}
2022-01-13
1051
글번호 155432
답변완료
해외선물
해외선물(예스글로벌) 기본 시스템을 알고싶어 이렇게 문의 드립니다
9시 30분 시작 16시 마감
5분봉
종가가 5이평선 위에일때 매수
종가가 5이평선 아래일때 매도
시스템 식 부탁드립니다
2022-01-13
898
글번호 155431
답변완료
매매시간 관련
안녕하세요 항상 고맙습니다.
날도 추운데 건강에 유의하시면 좋겠습니다.
종목 검색을 위한 아래의 식 작성이 필요한데 도움 부탁드립니다.
지금이 xxxxxx시부터 yyyyyy시사이라면 x = true
위의 식을 어떻게 만들 수 있나요?
2022-01-13
910
글번호 155430
답변완료
10봉이내 반대방향 교차시 진입
이평선 5,20선이 상향교차 후 10봉이내 하향교차시에만 매도
이평선 5,20선이 하향교차 후 10봉이내 상향교차시에만 매수
수식 부탁합니다.
2022-01-13
1030
글번호 155428
답변완료
문의 드립니다.~~~~
계시판을 보며 나름 열심히 공부하고 있습니다.
아래식의 자세한 주석을 부탁드립니다.
Input:length(12);
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),color(0);
var:T(0),B(0),Bx(0),S(0),Sx(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
{
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 Color == RED Then
{
var1 = 저점[2,1];
}
#하락구간의 마지막 고점 저장
if Color == BLUE Then
{
var2 = 고점[2,1];
}
if MarketPosition <= 0 Then
{
if color == BLUE and var1 > 0 and L > var1-PriceScale*50 Then
Buy("b",AtLimit,var1-PriceScale*50,1);
}
if MarketPosition == 1 Then
{
value1 = Floor(MaxEntries/2)+1;
Buy("bb",AtLimit,(var1[BarsSinceEntry]-PriceScale*50)-(PriceScale*50)*MaxEntries,value1);
if T == -1 and 고점[1,1] > 0 Then
ExitLong("bx1",AtLimit,고점[1,1]+PriceScale*1);
if T == 1 and 고점[2,1] > 0 Then
ExitLong("bx2",AtLimit,고점[2,1]+PriceScale*1);
}
if MarketPosition >= 0 Then
{
if Color == RED and Var2 > 0 and H < var2+PriceScale*50 Then
Sell("s",AtLimit,Var2+PriceScale*50,1);
}
if MarketPosition == -1 Then
{
value1 = Floor(MaxEntries/2)+1;
Sell("ss",AtLimit,(var2[BarsSinceEntry]+PriceScale*50)+(PriceScale*50)*MaxEntries,value1);
if T == 1 and 저점[1,1] > 0 Then
ExitShort("sx1",AtLimit,저점[1,1]-PriceScale*1);
if T == -1 and 저점[2,1] > 0 Then
ExitShort("sx2",AtLimit,저점[2,1]-PriceScale*1);
}
2022-01-13
794
글번호 155427
크라켄 님에 의해서 삭제되었습니다.
2022-01-14
8
글번호 155426
답변완료
문의드립니다
1)input : ntime1(5),P1(5),P2(20),P3(60);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),mav1(0),sum11(0),mav11(0);
var : sum2(0),mav2(0),sum21(0),mav21(0);
var : sum3(0),mav3(0),sum31(0),mav31(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P1] > 0 then
{
sum1 = 0;
sum11 = 0;
for cnt = 0 to P1-1
{
sum1 = sum1+C1[cnt];
sum11 = sum11+C1[cnt+1];
}
mav1 = sum1/P1;
mav11 = sum11/P1;
plot1(mav1,"이평1",IFf(mav1 > mav11,GREEN,GREEN));
}
if C1[P2] > 0 then
{
sum2 = 0;
sum21 = 0;
for cnt = 0 to P2-1
{
sum2 = sum1+C1[cnt];
sum21 = sum21+C1[cnt+1];
}
mav2 = sum2/P2;
mav21 = sum21/P2;
plot2(mav2,"이평2",IFf(mav2 > mav21,GREEN,GREEN));
}
if C1[P3] > 0 then
{
sum3 = 0;
sum31 = 0;
for cnt = 0 to P3-1
{
sum3 = sum3+C1[cnt];
sum31 = sum31+C1[cnt+1];
}
mav3 = sum3/P3;
mav31 = sum31/P3;
plot3(mav3,"이평3",IFf(mav3 > mav31,GREEN,GREEN));
}
}
2)INPUTS: LENGTH1(13);
VARS : DEMA1(0);
var1= EMA(C,LENGTH1);
value1= EMA(EMa(C,LENGTH1),LENGTH1);
DEMA1 = var1 * 2 - value1;
if C >DEMA1 Then
PLOT1(DEMA1, "DEMA1",GREEN);
Else
PLOT1(DEMA1, "DEMA1",GREEN);
1번과2번수식으로 5이평선이 60이평선을상승 크로스하면 오른쪽으로 일자수평선이 나오게(트리로)색은노랑색 색상크기조정하게끔,
반대로 5이평선이 60이평선을 하락크로스하면 오른쪽으로 일자수평선이 나오게 (트리로)색상은 레드색으로 색상크기조정하게,그리고 상승이나하락크로스하면 압전것은 사라지고일자수평선1개만유지하도록 1번과2번동일하게 2개 수정부탁드립니다~~미리감사드립니다
2022-01-13
964
글번호 155424
답변완료
문의
"b2" 거래가 먼저 발생하여 1패 했을 때 "b1" 거래는 진입금지를 아래 수식에 추가해 주십시요.
*********************************************************************************
input : n(50);
input : 진입횟수(1);
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 C[1] == O[1] Then
{
var1 = n/100;
var2 = Floor(C[1]);
var3 = FracPortion(C[1]);
Var4 = floor(Var3/(n/100));
value1 = var2+(Var4+1)*var1;
value2 = var2+Var4*var1;
if C[1] != Value2 Then
{
if C > O and C >= Value1 and entry < 진입횟수 Then
Buy("b1");
}
Else
{
if C > O and C >= Value2 and entry < 진입횟수 Then
Buy("b2");
}
}
2022-01-14
1026
글번호 155422