커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6054
글번호 230811
답변완료
RSI 매매방식 프로그램부탁합니다.
RSI를 사용하여 트레이딩 하려합니다.
RSI지수가 상단인 90%를 넘었으나 100%를 넘지 못하고 92%를 뚫고 하락할 때 매도하거나
80%를 넘었으나 90%를 넘지못하고 82%를 뚫고 하락할 때 매도하거나
70%를 넘었으나 80%를 넘지못하고 72%를 뚫고 하락할 때 매도하고
10%를 뚫고 하락했으나 8%를 뚫고 상승할 때 매수하거나
20%를 뚫고 하락 했으나 10%를 뚫고 더하락 하지 못하고 12%를 뚫고 상승할 때 매수하거나
30%를 뚫고 하락했으나 20%를 뚫지 못하고 22%를 뚫고 상승할 때 매수하는 프로그램 부탁합니다.
감사합니다
2018-12-17
285
글번호 124545
답변완료
일봉차트의 이평선 값
input : p(10);
var1 = ma(c,p); 일때
일봉차트에서의 var1[1]의 값을
분봉 또는 틱차트에 표시 할 수 있도록 지표식을 부탁 합니다.
2018-12-18
267
글번호 124544
답변완료
수식 요청 드립니다.
안녕하세요.
진입수식(예제)을 항생 차트적용시 그림1 신호가 발생합니다. 작성해주신 수식적용시
그림2 신호가 발생합니다,
1일 2회 신호만 발생 하내요. 진입회수 제한없이 진입시마다 손절틱수, 익절틱수가 적용되고 합산 당일목표수익 틱수, 당일목표손실 틱수가 달성될때까지 오전 오후 매매가 계속되고 당일매매가 종료 될수 있도록 차트에 적용 수정
요청 드립니다.
감사합니다.
//-------------------------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
Input : 익절(15),손절(10),당일목표수익(90),당일목표손실(50);
Input : Period(12), sigPeriod(9);
var : Tcond(false);
Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false);
당일수익 = PriceScale*당일목표수익;
당일손실 = PriceScale*당일목표손실;
daypl = NetProfit-N1;
if (sdate != sdate[1] and stime >= 101500) or
(sdate == sdate[1] and stime >= 101500 and stime[1] < 101500) Then
{
Tcond = true;
Xcond = false;
N1 = NetProfit;
}
if (sdate != sdate[1] and stime >= 125500) or
(sdate == sdate[1] and stime >= 125500 and stime[1] < 125500) Then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 140000) or
(sdate == sdate[1] and stime >= 140000 and stime[1] < 140000) Then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= 151500) or
(sdate == sdate[1] and stime >= 151500 and stime[1] < 151500) Then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] then
{
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
if daypl >= 당일수익 or daypl <= -당일손실 Then
Xcond = true;
}
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
if Tcond == true and Xcond == false then
{
If CrossUP(value1, value2) Then{
Buy();
}
If CrossDown(value1, value2) Then{
Sell();
}
}
if MarketPosition == 1 then
{
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
ExitLong("bp",Atlimit,EntryPrice+PriceScale*익절);
ExitLong("bl",Atlimit,EntryPrice-PriceScale*손절);
}
if MarketPosition == -1 then
{
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
ExitShort("sp",Atlimit,EntryPrice-PriceScale*익절);
ExitShort("sl",Atlimit,EntryPrice+PriceScale*손절);
}
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식요청 드립이다.
> 안녕하세요.
항생 분봉 틱봉 당일청산 스윙 시스템에서 아래 진입수식(예제) 기준으로
1. 당일 매매 시간
10:15(매매시작) ~ 12:55(진입된 포지션이 있으면 전량 청산)
14:00(매매시작) ~ 15:15(진입된 포지션이 있으면 전량 청산 당일 매매종료)
2. 진입수식 진입 익절 손절 회수 제한 없음, 당일목표수익 또는 당일목표손실 달성시까지 매매
3. 진입수식 매수 매도 진입할 경우 익절 15틱, 손절 10틱 진입한 포지션 청산
4. 당일목표수익 90틱 - 익절 + 손절 합산, 당일목표수익 달성시 포지션 전량 청산 당일 매매종료
5. 당일목표손실 50틱 - 익절 + 손절 합산, 당일목표손실 달성시 포지션 전량 청산 당일 매매종료
6. 당일목표수익 과 당일목표손실 중 어느 쪽이든 먼저 달덩하는경우 당일 매매 종료
수식요청 드립이다.
감사합니다.
//-------------------------------------------------------------------------------------------------------
#진입수식(예제)
Input : 익절(15),손절(10),당일목표수익(90),당일목표손실(50); (외부변수로 지정)
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
If CrossUP(value1, value2) Then{
Buy();
}
If CrossDown(value1, value2) Then{
Sell();
}
//-------------------------------------------------------------------------------------------------------
2018-12-18
261
글번호 124543
원칙대응 님에 의해서 삭제되었습니다.
2018-12-17
43
글번호 124542
답변완료
수식부탁드립니다
#,60477 답변에서 추가질문입니다,
1,추세선이 잠시 그려졌다가 텍스트호가 변동도 없는데 추세선연결봉 이후 3~4봉지나면 그냥
삭제됩니다?(#그림1참조:오일51.39~51.40이 추세선으로 연결돼있다가 없어진상태입니다)
파동이 완성되기전에 텍스트 호가갱신으로 인한 추세선 소멸를 제외하고 장종료후에도
추세선이 삭제되지 않고 계속 남아있게(#,그림2,3참조)부탁드립니다.
2,추세선긋기 기간을 당일에서 전일까지 포함해서 당일과 전일의 동일호가또는 + - 한틱까지
포함해서 오른쪽 추세선으로 그리기로 하고싶습니다 식을 어찌 수정해야할까요
도움 부탁드립니다.
$.언제나 늘 고맙습니다.
2018-12-19
221
글번호 124541
답변완료
문의드립니다
수식 변환 부탁드립니다
수식1
highest( h(1), 기간 )
수식2
( highest( h(1), 기간 ) + lowest( l(1), 기간 ) )/2
수식3
lowest( l(1), 기간 )
지표조건설정
기간 10
2018-12-17
166
글번호 124540
답변완료
수식요청 부탁 드립니다...
안녕하세요.. 바쁘신데 미안하지만 염치없이 다음의 수식을 요청합니다.
즉 외부변수 메모장에 1칸에 1 2칸에 2 3칸에 3이라는 숫자를 이용하여 예스로직을 사용할수 있나요...즉 메모장의 1열을 읽어서// 1이면 매수 //2면 매매정지// 3이면 매도//
c:₩예스트레이더₩data₩read1.txt 에서
read1.txt 의 1칸에 있는 숫자를 읽어서 매매신호를 제어하는 방법을 알고 싶습니다.
수고하세요...
2018-12-17
167
글번호 124539
답변완료
당일 9시30분 지표 시작
* 항상 많은 도움에 고맙 습니다.
* 요청 사항: 아래수식 지그 재그선을 시작을 09시30분부터 시작 하게 요청드립니다.
즉 그 이전 데이타는 무시하고 09시 30분봉 을 시작으로 지그재그선을 그리고 싶습니다.
하루하루만 지그 재그선을 그리고 싶습니다.
15봉 이후에 첫 선이 그어지는것 입니다. 당일추세만 보게요...
### 지그지그선
Input:length(15);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),T(0),Text1(0),처리구분("");
Var:tl2(0),TL3(0),TL4(0),TL5(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); }
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
}
}
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);}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
}
}
TL_SetSize(TL1,1);
* 고맙 습니다. 수고하십시요.
2018-12-18
156
글번호 124538
답변완료
수정 의뢰드립니다!
안녕하세요!
다음은 제가 사용하는 고점과 고점, 저점과 저점을 연결하는 자동추세선 수식입니다!
고점과 저점을 연결하는 검정색선을 삭제하고 고점과 고점 , 저점 과 저점을 연결하는 파란선과 빨강선만 표시되게끔 수정 부탁 드립니다!
감사합니다!
Input:length(10);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
k = 0;
For j = 2 To 10 {
If 저[1,1] > 저[j,1] and 저[j,1] > 0 Then { // 전저점보다 낮은 이전 전저점 찾는다
k = j;
j = 10; // exit loop
}
}
If k > 1 Then { // 낮은 전저점이 찾아졌다면
TL2 = TL_New(저[k,3],저[k,4],저[k,1],sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
TL_SetColor(TL2,BLUE);
}
q = q + 1; // 고점이 새로 추가되었으므로 1 증가
If q > 2 and q <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열 크기가 10이므로 10 이내
TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
} Else { // 신규 고점이 아니면 기존 추세선만 연장
If k > 1 Then {
TL_SetEnd(TL2,sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
If q > 2 and q <= 10 Then {
TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
If TL_NewBit == 2 Then {
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
} Else If Value1 == -1 Then { // 저점
If TL_NewBit == 1 Then { // 신규 저점
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
k = k + 1; // 저점이 새로 추가되었으므로 1 증가
If k > 2 and k <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열의 크기가 10이므로 10 이내
TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
q = 0;
For j = 2 To 10 {
If 고[1,1] < 고[j,1] Then { // 전고점보다 높은 이전 전고점을 찾는다
q = j;
j = 10; // exit loop
}
}
If q > 1 Then { // 높은 전고점이 찾아졌다면
TL3 = TL_New(고[q,3],고[q,4],고[q,1],sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
TL_SetColor(TL3,RED);
}
} Else { // 신규 저점이 아니면 기존 추세선만 연장
If k > 2 and k <= 10 Then {
TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
If q > 1 Then {
TL_SetEnd(TL3,sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
If TL_NewBit == 2 Then {
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
}
2018-12-17
178
글번호 124530