커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3189
글번호 230811
답변완료
문의드립니다
(v*c)+(v[1]*c[1])+(v[2]*c[2])+(v[3]*c[3])+(v[4]*c[4])+(v[5]*c[5])+ ...
와 같이
50봉 까지 또는 100봉까지
합을 표현하는 지표식
감사합니다
2022-12-15
803
글번호 164617
답변완료
최저가 대비 100프로 이상 상승한 종목 검색
제목처럼 240일 동안 최저가 대비 100% 이상 상승한 종목을 검색하는 수식을 작성해 봤는데 잘 안되네요.
살펴봐 주세요
Input : Period1(240),Criteon(100);
Variables: Value2(100), Value4(100), HH(0), LL(0), cnt(0);
For cnt = 0 to Period1 {
if c[cnt+1]>c[cnt] && c[cnt+1] > Value2 Then{
Value1 = Date;
Value2 = c[cnt+1];
}
if c[cnt+1]<c[cnt] && c[cnt+1] < Value4 Then{
Value3 = Date;
Value4 = c[cnt+1];
}
}
Value1 = DateToJulian(Value1);
Value3 = DateToJulian(Value3);
Value5 = (Value2-Value4)/Value4*100;
Condition1 = Value5> Criteon;
Condition2 = Value3<Value1;
If Condition1 && Condition2 Then
{
Value6 = Value5;
}
Else
value6 = 0;
Find(value6);
2022-12-15
1075
글번호 164616
답변완료
분봉에서 월요일 첫봉 세로선과 시가 일주일 수평선 작성
안녕하세요.
캡처이미지처럼 분봉주기에서
매주 월요일에 첫봉의 세로선과 시가 수평선 일주일치를 작성하고 싶습니다.
각 선들은 색과 두께를 조정할수있으면 합니다.
IF dayofweek(sDate) == 1 THEN
이 조건을 사용해서 해보는데 잘 안되네요.. 특히 일주일간 수평선을 모르겠네요..
미리 감사드립니다.
2022-12-15
1126
글번호 164615
답변완료
시스템식 부탁드립니다.
항상 도움 주셔서 감사합니다.
트레일링 스탑에 대해 문의 드립니다.
아래와 같은 시스템이 있다고 가정할 경우
매수
if marketposition == 0 and crossup(이평100,이평200) then {
buy();
}
매수청산
if marketposition == 1 and crossdown(이평100,이평200) then {
exitlong();
}
매도
if marketposition == 0 and crossdown(이평100,이평200) then {
sell();
}
매도청산
if marketposition == -1 and crossdown(이평100,이평200) then {
sell();
}
손절 및 트레일링 스탑
SetStopLoss(50,PointStop);
SetStopProfittarget(100,PointStop);
SetStopEndofday(060000);
SetStopTrailing(10,50,PointStop);
SetStopTrailing(10,40,PointStop);
SetStopTrailing(10,30,PointStop);
SetStopTrailing(10,20,PointStop);
SetStopTrailing(10,10,PointStop);
트레일링 스탑은 이익이 발생한 후 이익이 감소시 청산으로 알고 있습니다.
손실에 대해서는 아래와 같이 트레일링 작성해 보았는데 잘 안됩니다.
문의1)
포지션 진입 후 수익이 1point라도 발생후 바로 하락하는 경우
손절하지 않고 트레일링스탑으로 -10point에서 청산하고 싶습니다.
SetStopTrailing(10,1,PointStop);
문의2)
포지션 진입 후 수익없이 바로 하락하는 경우
손절하지 않고 -10point에서 트레일링 스탑을 해서 -20ponit에서 청산하고 싶습니다.
SetStopTrailing(10,-10,PointStop);
SetStopTrailing(10,-20,PointStop);
SetStopTrailing(10,-30,PointStop);
SetStopTrailing(10,-40,PointStop);
문의3)
포지션 진입 후 손실이 나다가 이익으로 전환 되는 경우
익절하지 않고 중간 청산하고 싶습니다.
* 손실이 -20point까지 났다가 손실이 -10point로 줄어들면(10point 상승)
손실이 -10point에서 청산하고 싶습니다.
SetStopTrailing(-10,-20,PointStop);
도움 부탁드립니다.
감사합니다.
2022-12-15
1275
글번호 164610
답변완료
파라볼릭 전환시
input : af(0.02), maxAF(0.2),폭(0.25);
Var : Sarv(0),tl(0),T(0),tx(0),txx(0);
var:cSar(0);
var7 = cSAR(af,maxAF);
if var7 > C Then
Plot1(var7, "cSAR",BLUE);
Else
Plot1(var7, "cSAR",RED);
plot2(c,"c");
Sarv = csar(af,maxAF);
If crossup(c,Sarv) Then
{
T = 1;
var1 = Sarv;
Var2 = var1[1];
Var3 = var2[1];
Condition1 = False;
if max(var1,var2,Var3) <= min(var1,Var2,Var3)+폭 and var3>0 and var1 >= Var2-PriceScale*2 Then
{
Condition1 = true;
Tx = Text_New(sDate,sTime,var1-PriceScale*2,"●");
Text_SetColor(Tx,Cyan);
Text_SetStyle(Tx,2,2);
Text_SetSize(Tx,25);
}
}
If crossup(c,Sarv) Then
{
T = 1;
var1 = Sarv;
Var2 = var1[1];
Var3 = var2[1];
Var4 = Var3[1];
Condition1 = False;
if max(var1,var2,Var3, Var4) <= min(var1,Var2,Var3, Var4)+폭 and var4>0 and var1 >= Var2-PriceScale*2 Then
{
Condition1 = true;
Tx = Text_New(sDate,sTime,var1-PriceScale*2,"●");
Text_SetColor(Tx,Red);
Text_SetStyle(Tx,2,2);
Text_SetSize(Tx,20);
}
}
1.파라볼릭 양전환시 하단 시작 꼭지점에 빨간 동그라미 표시.
2.상승하다 음전환되면 하단 빨간 동그라미 삭제하고,
상단 꼭지점에 파란 동그라미 표시. 삭제와 생성 계속 반복. 감사합니다.
2022-12-15
1027
글번호 164608
답변완료
지표겹치기
지표겹치기는 어떻게 해야되나요
adx 두개를 겹치고싶습니다
2022-12-15
1027
글번호 164606
사냥꾼 님에 의해서 삭제되었습니다.
2022-12-15
15
글번호 164603
답변완료
문의드립니다
시스템식 문의드립니다
9시부터 15시 까지
당일매매횟수 10회 이하
A지표가 0 부터 200 까지 1간격으로 된 선들중에 크로스업
B지표가 0 부터 2.00 까지 0.02 간격으로 된 선들중에 크로스업
2% 익절
2% 손절
A,B 지표가 다른간격의 선들이 있고
두개의 크로스업이 동시만족
감사합니다
2022-12-15
686
글번호 164602
답변완료
수식부탁합니다
계속 같은 질문인거 같아 죄송스럽네요
너그럽게.....^^
TL13 이 신규로 발생하는 시점에 의도치 않은 상황이 발생해서 그렇습니다
1.A 와 B 사이에 캔들중 최고가를 pinkline 으로 리턴
이 방식으로 가능하면 정말 좋겠습니다...
감사합니다!
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0),고점변곡(""),저점변곡("");
var : clr1(0),clr2(0),BE(0),SE(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==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 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,Red);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
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 == 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 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, -1);
Text_SetColor(Text1,Blue);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
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 == 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
{
TL12 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],Sdate,Stime,고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL13,2);
TL_SetColor(TL12,clr1);
TL_SetSize(TL12,2);
clr1 = Pink;
TL_SetColor(TL13,Pink);
}
if T == 1 and T[1] != 1 Then
{
TL14= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetColor(TL14,clr2);
TL_SetSize(TL14,2);
clr2 = LightBlue;
TL_SetColor(TL15,clr2);
TL_SetSize(TL15,2);
}
if min(C,ma(c,5)) > TL_GetValue(TL13,sDate,sTime) Then
{
clr1 = Red;
TL_SetColor(TL13,clr1);
}
if max(C,ma(c,5)) < TL_GetValue(TL15,sDate,sTime) Then
{
clr2 = Blue;
TL_SetColor(TL15,clr2);
}
if T == 1 Then Pinkline = 고[2,1];
Else Pinkline = 고[1,1];
if T == -1 Then liblueline = 저[2,1];
Else liblueline = 저[1,1];
2022-12-15
941
글번호 164601