커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8146
글번호 230811
답변완료
문의드립니다.
안녕하세요.
전에 만들어주신 지표 인데요.
=================
input:length(4),종가사용여부(0),파동선두께(5),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),tl2(0),tl3(0),tl4(0),tl5(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
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],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 2, 1);
Text_SetColor(Text1,BLACK);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,red);
}
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]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,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
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
Text_SetColor(Text1,BLACK);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,blue);
}
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]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then{
TL2 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL3);
TL3 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL3,true);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,WHITE);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,WHITE);
}
if T == 1 and T[1] != 1 Then{
TL4= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL5);
TL5= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL5,true);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,YELLOW);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,YELLOW);
}
====================================
지그재그 하면서 고점 저점에서 나오는 그 수평선들의 색깔과 두께를 조절할 수 있도록 부탁드립니다.
옵션에서 설정 안해도 수식에서 직접 수정은 할 수 있으니까 어떻게 하면 수평선들의 색깔과 두께를 조절할 수 있는지 도움 부탁드립니다.
즐거운 주말 되세요
감사합니다.
2018-12-21
383
글번호 124669
답변완료
문의드립니다.2
매매시간은 오후 3시부터 그다음낭 새벽 6시까지 매매를 하고 6시이후에는 신규 매수매도 를 안들어갑니다. 6시에 매수나 매도 포지션이 남아 있으면 모두 반대청산합니다
input : Left(20),Right(20),Period(50):
var1 = SwingLow(1,L,Left,Righ,Period); ##최근 저점
var2 = SwingLow(2,L,Left,Righ,Period); ##직전 저점
var3 = SwingLowBar(1,L,Left,Righ,Period); ## 최근 저점 발생시점
var4 = SwingLowBar(2,L,Left,Righ,Period); ## 직전 저점 발생시점
var5 = SwingHigh(1,H,Left,Righ,Period); ##최근 고점
var6 = SwingHigh(2,H,Left,Righ,period); ##직전 고점
var7 = SwingHighBar(1,H,Left,Righ,Period); ## 최근 고점 발생시점
var8 = SwingHighBar(2,H,Left,Righ,Period); ## 직전 고점 발생시점점
매수진입
무포지션에서
최근저점이 var1>var[1] 처럼 상승하자마자 카운트해서
연속 양봉이
C >= O +PriceScale*1
C[1] >= O[1]+PriceScale*1
C > C[1]
처럼 발생하면 매수진입합니다.
매수청산
매수진입후 음봉이 연속발생이든 연속과 관계없이 2개가 발생하면 그즉시 매수청산합니다.
또는 20틱 수익이 발생하면 청산합니다.
매도진입
무포지션에서
최근고점이 var5 < var5[1] 처럼 하락하자마자 카운트해서
연속 음봉이
C <= O -PriceScale*1
C[1] <= O[1]-PriceScale*1
C<C[1]
처럼 발생하면 매도진입합니다.
매도청산
매도진입후 양봉이 연속발생이든 연속과 관계없이 2개가 발생하면 그즉시 매도청산합니다.
또는 20틱 수익이 발생하면 청산합니다
2018-12-21
369
글번호 124668
답변완료
문의드립니다
아래 전략 손절이 작동이 잘 안되는거 같은데 검토 부탁드립니다
INPUT : LENGTH(10);
VAR : TCHAN(0), BCHAN(0);
TCHAN = HIGHEST(HIGH, LENGTH)[1];
BCHAN = LOWEST(LOW, LENGTH)[1];
if ema(C,20) > ema(C, 60) Then
buy("buy", atlimit, BCHAN);
if MarketPosition == 1 Then {
exitlong("EL_상단터치", atlimit, TCHAN);
exitlong("EL_목표",atlimit, EntryPrice + PriceScale*30);
}
if ema(C,20) < ema(C, 60) Then
sell("sell", atlimit, TCHAN);
if MarketPosition == -1 Then {
exitshort("ES_상단터치", atlimit, BCHAN);
exitshort("ES_목표",atlimit, EntryPrice - PriceScale*30);
}
2018-12-21
331
글번호 124667
답변완료
문의합니다.1
매매시간은 오후 3시부터 그다음낭 새벽 6시까지 매매를 하고 6시이후에는 신규 매수매도 를 안들어갑니다. 6시에 매수나 매도 포지션이 남아 있으면 모두 반대청산합니다.
기준 3연속 양봉
C >= O +PriceScale*1
C[1] >= O[1]+PriceScale*1
C[2] >= O[2]+PriceScale*1
C[3] <= O[3]
C>C[1]>C[2]
기준 3연속 음봉
C <= O -PriceScale*1
C[1] <= O[1]-PriceScale*1
C[2] <= O[2]-PriceScale*1
C[3] >= O[3]
C<C[1]<C[2]
매수진입
기준 3연속 양봉
C >= O +PriceScale*1
C[1] >= O[1]+PriceScale*1
C[2] >= O[2]+PriceScale*1
C[3] <= O[3]
C>C[2]>C[3]
처럼 3봉전에 도지나 음봉이 발생후에 종가가 시가보다 1틱이상인 3양봉이 발생하면
3양봉을 하니의 양봉처럼 생각합니다.
기준 3양봉의 시가 = O[2]
기준 3양봉의 종가 = C
무포지션상상태에서 최근의 위와같은 조건의 기준 3연속 양봉이 발생하여
최근의 3양봉의마지막 종가=C 가
바로직전의 기준 3양봉의 종가 =C 를 상방으로 돌파하면 매수진입합니다.
매수청산
매수진입후 음봉이 연속발생이든 연속과 관계없이 2개가 발생하면 그즉시 매수청산합니다.
또는 20틱 수익이 발생하면 청산합니다.
매도진입
기준 3연속 음봉
C <= O -PriceScale*1
C[1] <= O[1]-PriceScale*1
C[2] <= O[2]-PriceScale*1
C[3] >= O[3]
C<C[2]<C[3]
처럼 3봉전에 도지나 양봉이 발생후에 종가가 시가보다 1틱이하인 3음봉이 발생하면
3음봉을 하니의 음봉처럼 생각합니다.
기준 3음봉의 시가 = O[2]
기준 3양봉의 종가 = C
무포지션상상태에서 최근의 위와같은 조건의 기준 3연속 음봉이 발생하여
최근의 3음봉의 마지막 종가=C 가
기준 3음봉의 종가 =C 를 하방으로 돌파하면 매도진입합니다.
매도청산
매도진입후 양봉이 연속발생이든 연속과 관계없이 2개가 발생하면 그즉시 매수청산합니다.
또는 20틱 수익이 발생하면 청산합니다.
2018-12-21
337
글번호 124666
종호 님에 의해서 삭제되었습니다.
2018-12-21
1
글번호 124665
답변완료
문의드립니다
늘감사합니다.
현물이구요
매수 : 봉의 몸통이 5일 이평선에 걸처있는 봉의 몸통길이(시가와 종가 길이) 3% 이상인 양봉발생시 매수
손절 : 종가가 5이평선을 이탈시 청산
수익 청산: 최고가격 대비 5%하락시.
검색식 : 봉의 몸통의 길이가 2% 범위 이내이고. 봉의 저가가 볼밴 하단보다 낮고 ,아래 꼬리가 몸통보다 3배 긴 꼬리발생한 종목검색.
2018-12-21
359
글번호 124660
종호 님에 의해서 삭제되었습니다.
2018-12-21
2
글번호 124654
답변완료
안녕하세요
반갑습니다
*아래식을
1.3분 15분
2.2분 8분
3.1분 5분
가능하면 부탁합니다.
**아래1.2.3항
1.1분 3분
2.2분 6분
3.3분 9분 3배수식으로 좀 해주세요
***어느분봉으로 고정시키지말고 변수변경으로 수정해가며 사용할수없을까요.
input : 타주기분(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : tx1(0),tx2(0),tx3(0);
Array : OO[100](0),HH[100](0),LL[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%타주기분;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
OO[0] = O;
HH[0] = H;
LL[0] = L;
for cnt = 1 to 99
{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
plot1(OO[0],"시가");
plot2(HH[0],"고가");
plot3(LL[0],"저가");
Text_Delete(tx1);
Text_Delete(tx2);
tx1 = Text_New(sdate,stime,HH[0],NumToStr(HH[0],2));
tx2 = Text_New(sdate,stime,LL[0],NumToStr(LL[0],2));
Text_SetStyle(tx1,0,1);
Text_SetStyle(tx2,0,0);
}
감사합니다
2018-12-21
366
글번호 124653
답변완료
문의드립니다
늘 감사합니다
한가지 여쭤볼것이 있습니다
10이평선과 20이평선이 골드시 선물 2개 매수하고
10이평선과 20이평선이 데드시 청산해라를 식으로 부탁드립니다
감사합니다
2018-12-21
330
글번호 124652