커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3756
글번호 230811
답변완료
수정좀 부탁합니다
아래 식을 만들어 시운전을 해보고 있습니다
TX1 = Text_New(sdate[1],stime[1],var6,NumToStr(var6,2));
Text_SetColor(TX1,blue);
TX2 = Text_New(sdate[1],stime[1],var3,NumToStr(var3,2));
Text_SetColor(TX2,red);
그런데 위에 식을 아래에 적용을 같이 할라고 하면 문제가 발생합니다
무엇이 문제인지 알수가 없네요
손절선에 가격을 나오게 하고 싶어서 입니다
수정좀 부탁합니다
nput : P(20),N(20);
var : mav(0),Direction(0),HH(0),LL(0);
var : tX(0),BH(0),SH(0);//틱수
Var : TL1(0),TL2(0),TX1(0),TX2(0);
mav = ma(c,P);
HH = highest(H,N);
LL = lowest(L,N);
if mav > mav[1] Then{
Direction = 1;
}
if mav < mav[1] Then
Direction = -1;
if Direction == -1 and Direction[1] != -1 Then{
value1 = mav[1];
var1 = HH[1];
var2 = 1;
}
if Direction == 1 and Direction[1] != 1 Then{
value1 = mav[1];
var1 = LL[1];
var2 = -1;
}
if Countif(var2 == -1 and C>O and C>value1,2) == 2 and mav > mav[1] Then
{
buy("매수");
if MarketPosition <= 0 Then
{
var3 = sdate[1];
var4 = sTime[1];
var5 = H;
TL1 = TL_New(var3,var4,var5,sdate,stime,var5);
TL_SetStyle(TL1,3);
TL_SetColor(TL1,RED);
}
}
if Countif(var2 == 1 and C<O and C<value1,2) == 2 and mav < mav[1] Then
{
sell("매도");
if MarketPosition >= 0 then
{
var6 = sdate[1];
var7 = sTime[1];
var8 = L;
TL2 = TL_New(var6,var7,var8,sdate,stime,var8);
TL_SetStyle(TL2,3);
TL_SetColor(TL2,blue);
}
}
if MarketPosition == 1 Then
{
if H > var5 Then
var5 = h;
TL_SetBegin(TL1,var3,var4,var5);
TL_SetEnd(TL1,sdate,stime,var5);
}
if MarketPosition == -1 Then
{
if L < var8 Then
var8 = L;
TL_SetBegin(TL2,var6,var7,var8);
TL_SetEnd(TL2,sdate,stime,var8);
}
2019-05-30
189
글번호 129058
답변완료
수정 좀 부탁드립니다
안녕하세요!
항상 매매에 도움을 주셔서 감사합니다!
아래는 지난번에 만들어 주신 수식입니다!
다름이 아니라 선들의 갯수가 많아서 선을 색으로만 구분하려니 좀 복잡하네요!
아래 12개 선위에 각각 < 전일고가, 전일저가, 전일고가,전일종가> 등으로 나타낼수있도록
수식을 수정해 주세요!
부탁드립니다!
plot1(data1(OpenD(0)),"data1 전일시가");
plot2(data1(highD(1)),"data1 전일고가");
plot3(data1(LowD(1)),"data1 전일저가");
plot4(data1(CloseD(1)),"data1 전일종가");
plot5(data2(OpenD(0)),"data2 전일시가");
plot6(data2(highD(1)),"data2 전일고가");
plot7(data2(LowD(1)),"data2 전일저가");
plot8(data2(CloseD(1)),"data2 전일종가");
plot9(data3(OpenD(0)),"data3 전일시가");
plot10(data3(highD(1)),"data3 전일고가");
plot11(data3(LowD(1)),"data3 전일저가");
plot12(data3(CloseD(1)),"data3 전일종가");
------------------------------------------------------------------
아래 수식에서 파동선과 파동선을 연결하는 추세선만 나타나지 않게 수정 부탁드립니다!
수치표시는 나오도록 부탁드립니다!
Input:length(2),종가사용여부(0),파동선두께(5),파동선두께고저선(5),수치표시수(1),수치표시세모(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),Text2(0),tl2(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]);
TL2 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]);
If 수치표시세모 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],"★--");
Text_SetStyle(Text1, 0, 2);
Text_SetColor(Text1,BLUE);
Text_SetSize(Text1, 20);
}
If 수치표시수 == 1 Then
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 2, 1);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 12);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
TL_SetSize(TL2,파동선두께고저선);
TL_SetColor(TL2,BLACK);
}
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]);
TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시세모 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,"★--");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,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]);
TL2 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]);
If 수치표시세모 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],"★--");
Text_SetStyle(Text1, 0, 2);
Text_SetColor(Text1,RED);
Text_SetSize(Text1, 20);
}
If 수치표시수 == 1 Then
{
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text2, 2, 0);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 12);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
TL_SetSize(TL2,파동선두께고저선);
TL_SetColor(TL2,BLACK);
}
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]);
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
If 수치표시세모 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,"★--");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2019-05-30
200
글번호 129057
답변완료
모바일버젼관련 질문
해외선물 예스글로벌을
HTS가 아니라 모바일로
그대로 연동해서 볼수는
없는지 궁금합니다^^
발생하는 신호라도
모바일로 실시간 확인할수는
없는지도 궁금합니다.
감사합니다.
2019-05-30
203
글번호 129056
답변완료
문의드립니다.
장기분봉(60분 혹은 240분등등) 차트를 열고,
전월(저번달)의 전월시가와 전월종가를 현재월에 표시할려면 어떻게 수식이 되나요?
그리고 전주(저번주)의 전주시가와 전주종가를 현재주에 표시할려면 어떻게 수식이 되나요?
2019-05-30
180
글번호 129055
답변완료
안녕하세요
안녕하세요
수고 많으십니다.
아래 수식은 회원분게서 문의 하여 쓰시고 있는 수식 입니다.
예스스탁 담당자분의 도움으로 저또한 감사한 마음으로 잘 쓰고 있습니다.
다름이 아니라 아래 수식에서
고점 파동이 끝나고 고점과차이 숫자가 표시 됩니다.
예를들어서 고점: 24 차이: 52가 표시되고.
저점 파동이 끝나고 저점차이 숫자가 표시 됩니다.
예를 들어서 저점: 24.차이:52가 표시 됩니다.
고점숫자 고점차이, 저점숫자 저점차이 숫자 사이즈를 조정 할수 있게 해주시고요.
숫자에 색 조정도 가능 한가요.
사이즈와 색 조정을 할수 없으면 지금의 크기보다 2배정도 크게 해 주세요.
감사합니다.
수고 하세요.
Input : length(12), 선굵기(5),소숫점자리(0);
Var : j(0), lastHiVal(0), lastLoVal(0), sBar(0), eBar(0);
var : TL1(0),TL2(0), Text1(0), Text2(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]); //상승츠세선
TL_SetSize(TL1,선굵기);
TL_SetColor(TL1, RED);
Text1 = Text_New(sDate[eBar], sTime[eBar], 고점[1,1]+(pricescale*1),
"고점 : "+NumToStr(고점[1,1], 소숫점자리)+NewLine+"차이 :"+NumToStr((고점[1,1]-저점[1,1])/PriceScale,0));
Text_SetStyle(Text1, 2, 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(TL2) == sDate[sBar] and
TL_GetBeginTime(TL2) == sTime[sBar] Then
{
TL_Delete(TL2);
Text_Delete(Text2);
}
TL2 = TL_New(sDate[sBar], sTime[sBar], 고점[1,1], sDate[eBar], sTime[eBar], 저점[1,1]); //하락추세선
TL_SetSize(TL2, 선굵기);
TL_SetColor(TL2, BLUE);
Text2 = Text_New(sDate[eBar], sTime[eBar], 저점[1,1]-(pricescale*1),
"저점 : "+NumToStr(저점[1,1], 소숫점자리)+NewLine+"차이 : "+NumToStr( (저점[1,1]-고점[1,1])/PriceScale,0) );
Text_SetStyle(Text2, 2, 0); //저점 가격 위치
}
}
2019-05-30
201
글번호 129054
답변완료
문의 드립니다.
var : ndays(50)
var : sum(0),cnt(0),avgv(0);
if DayClose(ndays) > 0 then{
sum = 0;
for cnt = 1 to ndays{
sum = sum + (dayhigh(cnt)-daylow(cnt));
}
avgv = sum/ndays;
plot1(dayopen+avgv);
plot2(dayopen-avgv);
}
.........................................................................
해당 지표를 시스템으로 가공하고 싶습니다.
5이평이 상기지표의 plot1선을 상향 돌파 했다가 다시 하향 돌파 하면 매도
5이평이 상기지표의 plot2선을 하향 돌파 했다가 다시 상향 돌파 하면 매수
감사합니다
2019-05-29
173
글번호 129053
답변완료
data2에 대한 미결제약정 재질문드립니다.
안녕하세요.
항상 수고 많으십니다.
---------------------------------------------------------------------------------
예스 트레이더 화면번호 [3101] 에서 연결선물지수를 선택했습니다
화면 왼쪽에 보면,
KP200종합 279.89
(0.02)
베이시스 1.16
미결제 315,855
증감 (+789) <===== 이 부분을 5분봉에서 지표로 만들고 싶습니다
[답변]
plot1(dayoi(0)-dayoi(1));
[질문]
선물 만기 다음날에는 선물 미결제약정이 맞지가 않습니다.
-------------------------------------------------------------------------------
------------------------ 질문입니다 -----------------------------------------
위 답변을 토대로,
data1에는 콜옵션을, data2에는 연결선물지수를 선택해서
화면에 data2의 미결제약정을 그리고 싶어서 아래와 같이 수식을 작성하였더니
화면에 정확한 미결제약정이 그려지지 않습니다
var1 = data2(dayoi(0)-dayoi(1));
plot1(var1, "선물미결제약정", green);
무엇이 문제인지 도움 부탁드립니다.
-------------------------------------------------------------------------------
감사합니다.
2019-05-30
231
글번호 129043
답변완료
수식문의 드립니다
예를들어
if o > 45.33
{
Buy();
}
if o <= 45.33
{
Sell();
}
위에 수식처럼 조건 성립했을때 기존 포지션 있는 상태에서 buy,sell 주문이 순차적으로 이뤄지게 작성되어 있다면 청산주문을 추가로 작성해줘야 되는 건가요 아니면 자동으로 기존포지션은 청산되고 다음신호로 진입하는건가요? 제가 알기로는 따로 청산주문 작성없이 기존포지션청산 후 다음신호로 진입하는거로 알고있는데 실제로 해보니깐 기존포지션만 청산되고 진입이 안되서 문의드립니다.
2019-05-29
197
글번호 129042
답변완료
문의 드립니다.
if C > entryprice+(ATR(20)*2*k) then
exitlong("ChEX",atstop,(Highest(H,BarsSinceEntry+1)+lowest(L,barssinceentry+1));
1.제가 원하는 식은 진입시 ATR(20)의 2k배가 되고 exitlong안의 가격이 되었을시 매수청산하는 것인데 위의 식에서의 ATR(20)은 진입시가 아니라 그냥 그 순간순간 봉의 ATR(20)입니다. 이를 진입시의 ATR(20)으로 적용하는 방법은 없을까요?
2.그것이 가능하다고 했을 때 진입시가격+(진입시ATR(20)*2*k배)로 상승했을 때 다시 아래로 crossdown시 수익청산하고 다시 아래로 가지 않고 상승시 위의 식으로 수익 청산하는 방법을 알고 싶습니다.
3.언어 실력이 생각보다 늘지를 않네요. 항상 감사드립니다.
2019-05-28
195
글번호 129040