커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7171
글번호 230811
답변완료
함수 추가 부탁드립니다.
안녕하세요.
아래 수식에 진입시작시간을 오전10:30 부터로 설정 부탁드립니다.
감사합니다.
input : dix(1), stopper(5.0);
var : EDT(0);
setstoploss(stopper);
var : T1(0),entry(0);
Vars : SP(0), TickValue(0);
Vars : TT(0), dTT(0), v99(0);
if Bdate != bdate[1] Then
T1 = TotalTrades[1];
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = TotalTrades-T1+1;
if dayindex <= dix then {
if C > O then
if entry < 5 Then
buy();
if C < O then
if entry < 5 Then
sell();
}
SetStopProfittarget(100,PointStop);
SetStopLoss(5.0,PointStop);
2020-02-11
400
글번호 135859
답변완료
가중이평 수식관련
연일 고생이 많읍니다.
가중이평과 관련하여 질문드립니다.
가중이평이 밀집하는 구간을 검색하고자 하는데 짧은 수식에도 가중이평을 넣으면
서버 과부하가 예상되어 ~ ~ 로 나오면서 검색이 되지 않습니다.
아래 수식
input:p3(27),p4(39),p5(52),p6(64),p7(76),p8(90),p9(104),p10(120),p11(150);
var:k1(0),k2(0),k3(0),k4(0),k5(0),k6(0),k7(0),k8(0),k9(0),k10(0),k11(0);
k3=wma(c,p3);
k4=wma(c,p4);k5=wma(c,p5);k6=wma(c,p6);
k7=wma(c,p7);k8=wma(c,p8);k9=wma(c,p9);
k10=wma(c,p10);k11=wma(c,p11);
if
max(K3,K4,K5,K6,K7,K8,K9,K10,K11)<min(K3,K4,K5,K6,K7,K8,K9,K10,K11)*(1+6/100)
then
find(1);
이런 종류의 수식은 위의설명과 같은 현상이 발생 합니다 .
단 한가지 돌파수식의 경우만 검색이 되는데
위와 수식과 같이 여러개의 이평이 혼재되어 있을때 계산법이 더 어려워서
서버의 영향이 받는지 궁금합니다 .
아니면 다른 이유가 있는지 궁금 합니다. 감사 합니다 ~
2020-02-11
487
글번호 135858
답변완료
문의 드립니다
수고하십니다.
첨부 그림은 신한금융의 HTS입니다.
그림에서처럼...
1]조건 만족시 매도 신호가 계속 표시되게 하는 Aroon데드크로스 신호식 부탁합니다.
[포지션 청산 신호 무시하고 안나오게...]
2]또, 2개의 신호식을 하나의 차트 패드에 중첩해서 띄우고 같이 보는 방법은 없는지요?
[기간이 다른 2개의 별도 매도식을 같이 한 차트에 적용하여 사용하는 방법이 없는지...]
수고하세요.
2020-02-11
432
글번호 135857
삼족오 님에 의해서 삭제되었습니다.
2020-02-11
0
글번호 135856
답변완료
문의드립니다
Inputs : vProfit(41), vLoss(40), vTrailTick(12), vBaseTick(17) ;
SetStopLoss(vLoss * TickSize * CurrentContracts ,PointStop);
SetStopProfitTarget(vProfit * TickSize * CurrentContracts ,PointStop);
SetStopTrailing(MaxPositionProfit - (vTrailTick * TickSize * CurrentContracts),
vBaseTick * TickSize * CurrentContracts ,PointStop);
위와같이 익절,손절,트레일링스탑을 설정하고
Inputs : vDayProfit(110); //당일 목표수익달성시 거래중단
Vars : PreNetProfit(0), vENTRYCOND(False);
If condition1 Then preNetProfit = NetProfit;
If (NetProfit - PreNetProfit) >= (TickSize * vDayProfit) Then vENTRYCOND = False;
Else vENTRYCOND = true;
당일목표수익을 위와 같이 설정하였습니다.
시스템변수설정 화면의 비용/수량탭에서 1계약에서 2계약으로 변경하고 당일목표치를 110에서 220으로 변경을 하면 모든결과가 1계약의 2배로 계산되어지는줄 알았는데 전혀 엉뚱한 결과가
나옵니다.
답변부탁드립니다
2020-02-11
438
글번호 135855
답변완료
강조
하다보니
1.옵션만기도 캔들색칠 가능할까요
2.첫달은첫날은 30+1 이면
월말은 30-1인가요
하나씩해보니 좀헷갈려서요
원하는 캔들칠하기(수식주셨고)
1.월초(수식해주셨고)
2.분봉 (수식해주셨고)
칠해보고싶은캔들
1.월말
2.옵션만기
수식도 부탁드립니다
2020-02-11
401
글번호 135854
답변완료
문의드립니다
지그재그 파동식인데요
스토캐스틱을 기준으로 하여
50선 위로 스코K가 상승하여... 50선 아래로 떨어지는 구간까지를 최고가격을 고점으로
50선 아래로 스토K나 하락하여 ... 50선 위로 올라오는 구간까지를 최저가격을 저점으로
하며.
또한.. 과열권<80> 하락 이후.. 51선을 이탈하지 않고 다시 과열권 진입시
직전 하락한 51에서 79사이의 최저가격을 저점으로 하고
다시 진입한 과열권에서 최고가격을 고점으로 표현
침체권<20> 돌파 이후 49선을 돌파하지 않고 다시 침체권 진입시
직전 상승한 21에서 49 사이의 최고가격을 고점으로 하고
다시 진입한 침체권에서 최저가각을 저점으로 표현이 되게 부탁드립니다
즉. 고점의 기준이 2개이며 .. 저점의 기준도 2개입니다
위 내용에 맞게 수식을 작성 하여 주셔도 되구요
아니면 아래 수식을 변경하여 주셔도 됩니다
Input:Period(12),Period1(5),레벨(4),선색깔(MAGENTA),선두께(3),수치표시여부(1),수치표시위치(10),폰트크기(13),두껍게(1);
Var:StokValue(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4);
Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태[5](0),처리구분[5](0),TL[3](0),Text[3](0);
//=========================================================//
If 레벨 <= 4 Then {
Var1 = 레벨 * 10;
StokValue = StochasticsK(Period,Period1);
Value1 = IndicatorZigZag302(H,L,StokValue,50,고,저,최종상태,처리구분);
If 최종상태[레벨] == 고점 Then {
If 처리구분[레벨] == 신규 Then {
TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[2], 2, 1);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[2],RED);
}
}
If 처리구분[레벨] == 연장 Then {
TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text_SetLocation(Text[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale));
Text_SetString(Text[2],NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
}
}
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[1] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[1,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[1], 2, 0);
Text_SetStyle(Text[2], 2, 1);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[1],BLUE);
Text_SetColor(Text[2],RED);
}
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]);
TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[0] = Text_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[2,Var1 + 1],2) + "(+" + NumToStr(고[2,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)");
Text[1] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[1,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[0], 2, 1);
Text_SetStyle(Text[1], 2, 0);
Text_SetStyle(Text[2], 2, 1);
Text_SetSize(Text[0],폰트크기);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[0],두껍게);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[0],RED);
Text_SetColor(Text[1],BLUE);
Text_SetColor(Text[2],RED);
}
}
}
If 최종상태[레벨] == 저점 Then {
If 처리구분[레벨] == 신규 Then {
TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[2], 2, 0);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[2],BLUE);
}
}
If 처리구분[레벨] == 연장 Then {
TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text_SetLocation(Text[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale));
Text_SetString(Text[2],NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
}
}
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[1] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[1], 2, 1);
Text_SetStyle(Text[2], 2, 0);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[1],RED);
Text_SetColor(Text[2],BLUE);
}
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]);
TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[0] = Text_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[2,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[2,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)");
Text[1] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[0], 2, 0);
Text_SetStyle(Text[1], 2, 1);
Text_SetStyle(Text[2], 2, 0);
Text_SetSize(Text[0],폰트크기);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[0],두껍게);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[0],BLUE);
Text_SetColor(Text[1],RED);
Text_SetColor(Text[2],BLUE);
}
}
}
TL_SetColor(TL[0],선색깔); TL_SetSize(TL[0],선두께);
TL_SetColor(TL[1],선색깔); TL_SetSize(TL[1],선두께);
TL_SetColor(TL[2],선색깔); TL_SetSize(TL[2],선두께);
} Else {
Alert("4레벨까지만 가능합니다!!");
}
으로
2020-02-11
456
글번호 135850
답변완료
문의드립니다
N봉 전의 고가를 돌파하지 않고... n봉 전의 저가를 이탈하는 봉 매도 진입
N봉전의 저가를 이탈하지 않고... n봉 전의 고가를 돌파하는 봉 매수 진입
위 질문입니다..
대문자N 소문자n에서 숫자가 다릅니다..
예를 들어서
10봉전의 고가를 돌파하지 않고... 3봉전의 저가를 이탈하는 봉에서 매도 진입
10봉전의 저가를 이탈하지 않고 .... 3봉전의 고가를 돒파하는 봉에서 매수 진입
각각의 봉에서 위 3틱.. 아래 3탁에 표시되게 부탁드립니다
매수청산 매도청산은 표시 안되게 해주세요 ^..^
2020-02-11
381
글번호 135848
해피오 님에 의해서 삭제되었습니다.
2020-02-11
107
글번호 135847