커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6316
글번호 230811
답변완료
항셍에도 적용되게 지표 수정좀 부탁드립니다.
Var : value1(0) , value2(0), value3(0) ;
value1 = DayHigh(1);
value2 = DayLow(1);
value3 = (value1+value2)/2;
Plot1(value1, "상한");
Plot2(value2, "하한");
Plot3(Value3, "중간");
전일 고점 저점 중간점을 선으로 표시되게 했는데
항셍은 3부타임으로 나뉘어있어서 적용이 잘 안되네요
두가지 버전으로 부탁드릴수있을까요?
1. 10시15분 장시작~ 00시45분 장 종료까지를 하루로 표현한것
2. 1부(10시15분~13시) 2부(14시~17시30분) 3부(18시15분~00시45분)를 각각 하루로
보고 즉 하루에 3번의 저점 고점이 표시되게 표현됐으면 좋겠습니다.
2017-04-19
224
글번호 108940
답변완료
수식 문의 드립니다.^^
항상 감사드립니다. ^^ 수식 부탁 문의 드립니다.
=========
당일 중심값 = (Dayhigh()+Daylow())/2
당일 중심값 위에서만, 특정이평선 (ex,5평선,20평선)의 기울기가 양에서 음으로 기울어지는 순간 소리가 울리고 봉위에 표시가 되었으면 합니다.
물론, 당일 중심값 아래에서만 특정 이평선의 기울기가 음에서 양으로 기울어지는 순간에도 소리가 울리고 봉위에 표시가 되는 수식을 부탁드립니다.
=========
봉위에 표시가 어려우면, 소리라도 나는 수식이라면 감사드립니다. ^^
2017-04-19
201
글번호 108933
답변완료
수식 의뢰드립니다
키움수식을 에스로 변환부탁드립니다 (참조그림 올려요)
국선
타임프레임 ; 5분
매수: 스토캐스틱(5,3,3)이 50아래에서 시그날 골든크로스하고
지수이평 4와 6이평이 골든크로스시 매수 시그널이 나오게 부탁드립니다
매도: 두 이평이 데드크로스하거나 스토가 80아래로 떨어질 때 매도 시그널이 나오도록 해주세요
<키움용 밴드 수식>
수식1
스토변수값 5, 3, 3
cond=Stochasticsslow(sto1,sto2)<50 and
crossup(Stochasticsslow(sto1,sto2),eavg(Stochasticsslow(sto1,sto2),sto3));
valuewhen(1,cond,eavg(c,6))
부탁드려요!
2017-04-19
301
글번호 108932
답변완료
안녕하세요
아래 고점저점 처리 식에서 고점 과 저점을 결정짖는 자리가 어디입니까?
주석좀 부탁드립니다.
배열 대로 진행해서 여기가 저점이다 고점이다를 인식해서 그값을 가지개 되는
부분(확정되어지는) 확정되어서 그때의 주가를 가지게 되는부분
Input:length(50);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),T(0),
Text1(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
{
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
{
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,2);
TL_SetColor(TL1,red);
2017-04-19
201
글번호 108931
답변완료
수식문의
첨부와 같은 지표수식을 부탁드립니다
1. 고점선: MACD-sig 데드크로스(b)면 직전 골든크로스(a) 부터 데드크로스(b) 사이의 고점표시(Hv1)를 다음 데드크로스(d) 까지
2. 저점선: MACD-sig 골든크로스(c)면 직전 데드크로스(b) 부터 골든크로스(c) 사이의 저점표시(Lv1)를 다음 골든크로스(e) 까지
첨부는 120틱 차트, MACD short(12), long(26),sig(9) 입니다.
감사합니다
2017-04-18
289
글번호 108930
답변완료
수정부탁드립니다
수고많으십니다
아래식으로 구현되는 파동선이 메인차트300틱차트에서 120틱(data2)파동선이 나타나도록 수정부탁드립니다
감사합니다
Input:length(10),종가사용여부(0),파동선두께(2),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(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
{
최종고가 = 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);
}
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
{
최종저가 = 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);
}
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));
}
}
최종꼭지점 = "저점";
}
2017-04-18
217
글번호 108929
답변완료
청산한 프로그램의 수익여부
안녕하세요?
프로그램에서 오늘 청산했는지 , 했으면 수익 이 있었는지를 확인 가능한가요?
2017-04-18
191
글번호 108928
답변완료
수정 부탁합니다
아래수식에서
#, per1과 per2 진입횟수를 각기 달리 적용하고자 진입횟수 수식추가(변수)해봤는데
per2의 신호발생이 안되거나 시작시간 적용도 불규칙합니다, 잘못된점 수정해주시면
좋겠습니다.(per1의 진입횟수 조절기능과 같이 per2도 별도조절 가능하길 원합니다)
#, 또한 per2의 매매시간 적용도 조절가능하면 좋겠습니다,수정부탁합니다.
$, 언제나 늘 감사합니다.
input : Per1(18.2),시작시간(103000),종료시간(230000),당일최대진입횟수(7),x(5),x1(5);
input : Per2(38.2),시작시간1(103000),종료시간1(30000),당일최대진입횟수1(3);
Var : S1(0),S2(1),S3(1),S4(1),Tcond(false),T1(0),entry(0),Tcond1(false);
if 시작시간 == 0 and sdate != sdate[1] Then{
Tcond = true;
T1 = TotalTrades;
}
if 시작시간 > 0 and (stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간)) Then{
Tcond = true;
T1 = TotalTrades;
}
if 종료시간 == 0 and sdate != sdate[1] Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if 종료시간 > 0 and (stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간)) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if 시작시간1 == 0 and sdate != sdate[1] Then{
Tcond1 = true;
}
if 시작시간1 > 0 and (stime == 시작시간1 or (stime > 시작시간1 and stime[1] < 시작시간1)) Then{
Tcond1 = true;
}
if 종료시간1 == 0 and sdate != sdate[1] Then{
Tcond1 = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if 종료시간1 > 0 and (stime == 종료시간1 or (stime > 종료시간1 and stime[1] < 종료시간1)) Then{
Tcond1 = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if MarketPosition == 0 Then
entry = TotalTrades -T1;
Else
entry = (TotalTrades -T1)+1;
S1 = (dayhigh(0)+daylow(0))/2;
S2 = (dayhigh(1)+daylow(1))/2;
S3 = dayhigh(1);
S4 = daylow(1);
var1 = dayclose(1)+abs(S3-S4)*(Per1/100);
var2 = dayclose(1)-abs(S3-S4)*(Per1/100);
var3 = dayclose(1)+abs(S3-S4)*(Per2/100);
var4 = dayclose(1)-abs(S3-S4)*(Per2/100);
if MarketPosition == 0 and Tcond == true and entry < 당일최대진입횟수 Then{
if NextBarOpen <= var2 Then
buy("b1",AtStop,var2,2);
Else
buy("b2",Atlimit,var2,2);
if NextBarOpen >= var1 Then
sell("s1",AtStop,var1,2);
Else
sell("s2",Atlimit,var1,2);
}
if MarketPosition == 0 and Tcond == true and entry >= 1 and entry < 3 and (IsExitName("bx",1) or IsExitName("sx",1)) Then{
if NextBarOpen <= var2 Then
buy("b11",AtStop,var2,2);
Else
buy("b22",Atlimit,var2,2);
if NextBarOpen >= var1 Then
sell("s11",AtStop,var1,2);
Else
sell("s22",Atlimit,var1,2);
}
if MarketPosition == 0 and Tcond1 == true and entry < 당일최대진입횟수1 Then{
if NextBarOpen <= var4 Then
buy("b3",AtStop,var4,2);
Else
buy("b4",Atlimit,var4,2);
if NextBarOpen >= var3 Then
sell("s3",AtStop,var3,2);
Else
sell("s4",Atlimit,var3,2);
}
if MarketPosition == 0 and Tcond1 == true and entry >= 1 and entry < 3 and (IsExitName("bx",1) or IsExitName("sx",1)) Then{
if NextBarOpen <= var4 Then
buy("b33",AtStop,var4,2);
Else
buy("b44",Atlimit,var4,2);
if NextBarOpen >= var3 Then
sell("s33",AtStop,var3,2);
Else
sell("s44",Atlimit,var3,2);
}
if MarketPosition == 1 Then{
if CurrentContracts == MaxContracts and highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*5 Then
exitlong("bx",AtStop,EntryPrice+x*PriceScale);
exitlong("bx1",atlimit,EntryPrice+PriceScale*27,"",1,1);
exitlong("bx2",atlimit,var1,"",1,1);
if CurrentContracts < MaxContracts Then
exitlong("bx3",AtStop,EntryPrice+x1*PriceScale,"",1,1);
}
if MarketPosition == -1 Then{
if CurrentContracts == MaxContracts and Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*5 Then
ExitShort("sx",AtStop,EntryPrice-x*PriceScale);
ExitShort("sx1",atlimit,EntryPrice-PriceScale*27,"",1,1);
ExitShort("sx2",atlimit,var2,"",1,1);
if CurrentContracts < MaxContracts Then
ExitShort("sx3",AtStop,EntryPrice-x1*PriceScale,"",1,1);
}
SetStopLoss(PriceScale*15,PointStop);
2017-04-18
196
글번호 108927
답변완료
상한가 종목검색식이 어떻게되나요?
당일 상한가 검색식은 어떻게 짜면 좋을까요?
2017-04-18
218
글번호 108926