커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7888
글번호 230811
답변완료
문의드립니다
안녕하세요
시스템차트에서 매도,매수진입시 sellNo1 , BuyNo1 영문표기를 한글로 변경하고싶습니다.
수식 부탁드립니다.
2021-05-01
1247
글번호 148600
답변완료
문의 드립니다.
안녕하세요? 늘 감사합니다.
예트에서 하이켄헤시 차트를 제공하지 않는데
지표로 하이켄헤시 차트를 만들어 사용할수 없는지요?
만들수 있으면 꼭좀 부탁드립니다.^.^
2021-05-01
1037
글번호 148599
답변완료
문의 드립니다.
체결량문의드립니다.
if stime == 154500 then
var1 = Volume;
input : 텍스트크기(14) ;
var : Tx1(0),Tx2(0);
if sDate >= sDate[1] then {
TX1 = Text_New(sdate, stime, O, "▲"+Numtostr(var1,0));
Text_SetStyle(TX1, 1, 0);
Text_setColor(TX1, YELLOW);
Text_SetSize(tx1,텍스트크기);
}
Else
if sDate < sDate[1] then {
TX2 = Text_New(sdate, stime, O, "▼"+Numtostr(var1,0));
Text_SetStyle(TX2, 1, 0);
Text_setColor(TX2, WHITe);
Text_SetSize(tx2,텍스트크기);
}
무엇이 문제인지 하루 하나만 차트에 나와야 하는데요(당일것은 익일시초가이후에 표시되구요). 빼곡히 나와버려서 무엇이 문제인가해서요..
종가가격이 오른것과 내린것 두거지경우중 하나를 표시하고 싶어서 그렇습니다.
즉 45분 체결량을 차트위에 표시하고 싶습니다.
감사합니다
2021-05-01
1088
글번호 148598
답변완료
수식작성
Input : short(12),long(26),signal(9);
input : P1(5),P2(10);
Var : MACDV(0) , MACDS(0) ;
var : Tcond(false);
MACDV = MACD(short, long);
MACDS = ema(MACDV,signal);
var1 = ma(v,P1);
Var2 = ma(v,P2);
if macdv > macds and var1 > Var2 and c > o and CrossUp(v,var1) Then
Buy();
if macdv < macds and var1 < Var2 and c < o and CrossDown(v,var1) Then
Sell();
------------------------
Input:chRate(0.2); //전환율 또는 변동률
Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0);
Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0);
//hiVal[1]은 전고점, hiVal[2]는 전전고점, hiVal[3]은 전전전고점
//hiVal[0]은 변곡점 이후 현재봉까지의 고점. 현재 고점은 진행중이므로 계속 바뀐다.
//loVal[0]은 반대 개념
upRate = 1 + (chRate/100); //상승률
dnRate = 1 - (chRate/100); //하락률
for j = 1 to 9 { //전고,전저점을 9개까지 보관
loBar[j] = loBar[j] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리
hiBar[j] = hiBar[j] + 1; //전고점의 위치
}
if hiVal[0] <= H or hiVal[0] == 0 then { //전고,전저점 이후 현재까지의 고점
hiVal[0] = H; //0을 체크한 이유는 초기에 값이 없는 구간이 생기기 때문
hiBar[0] = 0; //현재 고점의 위치가 0이란 것은 현재봉의 고가가 구간 고점이라는 의미
}
else {
hiBar[0] = hiBar[0] + 1; //현재 고점의 위치
}
if loVal[0] >= L or loVal[0] == 0 then { //전고,전저점 이후 현재까지 저점
loVal[0] = L;
loBar[0] = 0;
}
else {
loBar[0] = loBar[0] + 1; //현재 구간 저점의 위치
}
if trnd != dnTr && hiVal[0] > H && hiVal[0] * dnRate > L then trnd = dnTr;
//저가가 고가 대비 변동률보다 밑으로 떨어지면 하락추세로 설정
//단, 현재봉의 고가가 변곡점 이후 최고가이면 상승 추세가 진행중이라고 본다.
//그래서 현재봉의 고가가 hiVal[0]보다 작다는 조건이 추가되었다.
else if trnd != upTr && loVal[0] < L && loVal[0] * upRate < H then trnd = upTr;
//고가가 저가 대비 변동률보다 높으면 상승추세로 설정
if trnd[1] == upTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면
for j = 8 downto 1 { //새로운 전고점이 생기는 것이므로
hiVal[j+1] = hiVal[j]; //전고점을 하나씩 뒤로 보낸다.
hiBar[j+1] = hiBar[j]; //전고점은 전전고점이 되고, 전전고점은 전전전고점이 된다.
}
hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입
hiBar[1] = hiBar[0];
hiVal[0] = H; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
}
if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데
hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면
hiVal[0] * dnRate > L then {
hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다.
hiBar[1] = hiBar[0];
hiVal[0] = H;
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
}
if trnd[1] == dnTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우
for j = 8 downto 1 {
//이전저점은 전전저점으로, 전전저점은 전전전저점으로 번호를 부여
loVal[j+1] = loVal[j];
loBar[j+1] = loBar[j];
}
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
}
if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데
loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면
loVal[0] * upRate < H then {
loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다.
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
}
if var1 <= 0 and Trnd == uptr and Trnd != Trnd[1] Then
{
var1 = 1;
value1 = loval[1];
}
if var1 >= 0 and Trnd == dntr and Trnd != Trnd[1] then
{
var1 = -1;
}
input : P(10);
var : MM(0),T(0);
MM = (highest(H,P)+lowest(L,P))/2;
if T == 0 and C > MM Then
T = 1;
if T == 0 and C < MM Then
T = -1;
if T == 1 and CrossDown(C,lowest(L,P)[1]) Then
T = 0;
if T == -1 and CrossUp(C,highest(H,P)[1]) Then
T = 0;
if T == 1 and var1 == 1 Then
buy();
if T == -1 and var1 == -1 Then
sell();
----------------------------------------------------------------
input : StartTime(220000),EndTime(055000),진입횟수(5),익절틱수(130),손절틱수(30);
var : Tcond(false),entry(0);
if StartTime < EndTime Then
{
SetStopEndofday(EndTime);
}
Else
{
if sDate != sDate[1] Then
SetStopEndofday(EndTime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
if StartTime > EndTime Then
SetStopEndofday(0);
Tcond = true;
entry = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true Then
{
if MarketPosition == 0 and C > O and entry < 진입횟수 Then
{
Buy("b");
}
if MarketPosition == 0 and C < O and entry < 진입횟수 Then
{
Sell("s");
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
----------------------------------------------
상기 3가지 수식어에 매매시간을 각각 10시부터 당일 21시55분으로 수정을 부탁 드리고
익절 60틱, 손절 25틱 , 당일 목표수익 120틱도 포함해 주시기 바랍니다.
2021-05-02
1427
글번호 148597
답변완료
수정 의뢰 드립니다!
안녕하세요!
아래 수식은 일전에 만들어 주신 파라볼릭 수식 입니다!
현재 매매에 잘 사용하고 잇습니다!
다름이 아니라 파라볼릭이 음양으로 전환될때 바탕색을 넣으면 도움이 될 것 같아
여기저리 알아보던 중 제가 찾던 그림이 있어서 첨부해 봅니다!
검정색 화살표는 전환시 색의 변화를 표시한 것이고 이해를 돕고져 확대를 한것입니다.
빨간색 화살표를 보면 봉의 종가와 파라볼릭 선과 사이에 색을 적용한것 같습니다!
수정을 좀 부탁드립니다!
Input : Af(0.02), MaxAf(0.2);
Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0);
if count == 0 then //변수들의 초기화
{
highval = High;
lowval = Low;
direction = 0;
sar1 = 0;
afval = 0;
ep = 0;
count = 1;
}
if(ep != 0 ) then // 추세가 진행중
{
if(direction == 1) then // 상승추세이면
{
ep = highval;
sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산
if(high > highval) then // 신고가 발생
{
highval = high;
afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if( low < sar1) then // 추세변경(상승->하락)
{ // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의
direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
lowval = low;
}
}
else // 하락 추세
{
ep = lowval; // 하락추세에서는 EP로 저가 사용
sar1 = sar1 + afval*(ep-sar1);
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af;
if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if(high > sar1) then // 추세 변경(하락->상승)
{ // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의
direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
highval = high;
}
}
}
else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산
{
if(direction == 1) then // 상승 추세
{
ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);
if ( high > highval) then // 신고가가 발생
{
Highval = high;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
else // 하락추세
{
ep = lowval;
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
}
else // SAR 첨 시작
{
if direction == 0 then // 추세가 없으므로
{
if(c > c[1]) then // 상승추세로 시작
direction = 1;
else if( c < c[1]) then // 하락추세로 시작
direction = -1;
}
else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작
{
direction = -1;
sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로
}
}
else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작
{
direction = 1;
sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로
}
}
lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로
highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장
}
//처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid
#if(sar1 != 0) then
# User_Func_Sar = sar1;
if sar1 > sar1[1] Then
plot1(sar1,"파리볼릭",RED);
else
plot1(sar1,"파리볼릭",blue);
2021-05-03
1230
글번호 148596
크라켄 님에 의해서 삭제되었습니다.
2021-05-03
25
글번호 148595
시고르시고르 님에 의해서 삭제되었습니다.
2021-05-01
2
글번호 148594
답변완료
시가에 대한 지표...
안녕하세요..
지표1 3분봉의 첫번째봉의 고가와 저가를 선으로 표현하고싶습니다.시가선처럼 직선으로보여지는
지표2 3분봉으로 시가봉부터 n번째 봉까지 고가와 저가를 선으로 표현하고싶습니다.
n은 입력할수있게 해주시면 감사하겠습니다..
감사합니다.
2021-05-01
1226
글번호 148593
답변완료
RSI 시스템 매매신호 추가 가능 문의드립니다.
RSI 지표로 매매중입니다.
현재 시스템에 설정되어 있는 신호는 한번 매수/매도 신호가 나오면 다음 반대 신호가 나올때까지 분봉(30분,60분 사용중)에서 발생되는 추가 매수/매도 신호가 나와도 진입이 되지 않고 있는데~
혹시 청산전까지 신호가 나올때 마다 진입(매수/매도 추가) 할수 있게 설계가 가능할런지요...?
* 진입후 추가 신호가 나오면 매수/매도를 추가 진입하여 단가 및 계약수를 늘리는 전략을 취하고 있습니다. (현재는 진입이후 추가 신호 나오면 수기로 진입하고 있습니다.)
2021-05-01
1308
글번호 148592