커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1757
글번호 230811
답변완료
나스닥 선물 거래량지표 Volume Ratio
VR 20 60 120 240을 합쳐서 한 화면에 나타내서 분석을 하고 있는데,
나스닥의 본장이 끝나면 거래량이 월등이 줄어서 이에 따른 VR 거래량지표의 왜곡이
1분봉에서는 시간이 좀 지나면 줄어들어 크게 상관이 없는데
5분봉, 15분봉 25분봉에서는 왜곡이 심하게 나타나서 VR 20후에 VR60 VR120이 순차적으로 위로 크게 치는 왜곡이 나타납니다. 이 사항을 해결하여 VR 지표수식을 만들수 없을까요?
본장이 끝난 시간대에서 본장과의 평균적인 거래량비율을 곱하기 얼마를 해주면 될것 같은데 수식을 잘은 모르는 지라 부탁드려 봅니다.
아래 캡쳐는 각각 나스닥 5분봉 15분봉입니다.
5분봉에서는 미국시간 02:00 까지가 거래량왜곡이 생깁니다.
감사드립니다.
2022-05-23
1187
글번호 159182
답변완료
수식 문의드립니다
2개 이평이 폭이 0.5포인트 보다는 클때만 진입/청산할 경우
0.5포인트에 해당하는 변수값을 구하고자 합니다
변수는 어떻게 표현하나요.
감사합니다.
input : ??????
var : T(0);
var1 = ma(c,30);
var2 = ma(c,300);
var3 = abs(var1-var2);
if var3 >= 0.5 then{
if 매수진입조건 Then
buy();
if 매도진입조건 Then
sell();
if 매수청산조건 Then
ExitLong();
if 매도청산조건 Then
ExitShort();
}
2022-05-23
1148
글번호 159181
답변완료
수식에 어려움이 많습니다 도와주세요!!!!
수고하십니다~~~
기존에는 영웅문을 사용하다가 지금은
하이투자증권의 예스트레이더를 이용하고 있습니다
영웅문과 다른점이 많아서 많이 헤매고 있습니다
많은 도움 부탁드립니다
아래는 영웅문에서의 신호발생 수식입니다
S=sum(1);
M5=ma((H+L+C)/3, 기간1);
M20=ma((H+L+C)/3, 기간2);
M60=ma((H+L+C)/3, 기간3);
상승전환=M5>M5(1) && M5(1)<M5(2) && M5(2)<M5(3);
하락전환=M5<M5(1) && M5(1)>M5(2) && M5(2)>M5(3);
상전1=Valuewhen(1,상승전환,S);
상전2=Valuewhen(2,상승전환,S);
상전3=Valuewhen(3,상승전환,S);
상전4=Valuewhen(4,상승전환,S);
상승1=Valuewhen(1,상승전환,M5(1));
상승2=Valuewhen(2,상승전환,M5(1));
상승3=Valuewhen(3,상승전환,M5(1));
상승4=Valuewhen(4,상승전환,M5(1));
하전1=Valuewhen(1,하락전환,S);
하전2=Valuewhen(2,하락전환,S);
하락1=Valuewhen(1,하락전환,M5(1));
하락2=Valuewhen(2,하락전환,M5(1));
단기=Valuewhen(1,상승전환,M5(1));
중기=Valuewhen(1,상승전환,M20(1));
장기=Valuewhen(1,상승전환,M60(1));
순서=상전4<상전3 && 상전3<하전1 && 하전1<상전2 && 상전2<상전1;
높이=상승4<상승3 && 상승3<상승2 && 상승2*(1-하락률)>=상승1;
이평=단기<중기 && 중기<장기;
진입=순서 && 높이 && 이평 && Crossup(C,하락1);
진입(1)
지표변수
기간1=5
기간2=20
기간3=60
하락률=0.01 을 넣었습니다
첨부된 그림과 함께 보시고 도움 부탁드립니다
2022-05-23
1665
글번호 159180
답변완료
[질문; 77224번] 에 대한 추가 질문 드립니다.
질문사항중 77224번에 대한 추가 질문이 있어서 문의 드립니다.
답변자료의 수식을 그데로 복사해서 넣으니까 10회 이후에 분할 매수되는 부분이
매도가 안되고 계속 보유하게 되어 있어서 아래 수식과 같이 //// 체크 부분의 위치에 수식을 추가하여 전량 매도가 가능하도록 하여 실행은 잘 되어 문제는 없어 보이는데,
1. 첨부한 캡쳐 사진 처럼 통합챠트에 bx3가 안나와도 될 위치에서 다른 종목들도 그렇고 bx1의 신호가 나올때 bx3가 섞여서 나옵니다.(어떤종목은 10회이하 분할 매수시에도 bx3가나오고, 어떤종목은 10회 이하에서는 bx1만 나올 때도 있고 그렇습니다.
해결 방법과 이유가 궁굼합니다.
2. 2번째로 첨부한 캡쳐 사진처럼 위의 1번 질문과 같이 bx3가 안나와야 할 위치에서 나올때는 거래내역에 거래수량이 0.000000 이런식으로 표기가 되는데 이것 또한 위의 1번과 같이 해결 방법을 알려 주시면 감사하겠습니다.
------------------------------------------------------------------------------------
var : AE1(0),Vol1(0),sum1(0),sum2(0),Vol2(0),AE2(0),Vol3(0),AE3(0);
var : Xcond1(False),Xcond2(False),Xcond3(False);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "bx1" Then
Xcond1 = true;
if LatestExitName(0) == "bx2" Then
Xcond2 = true;
if LatestExitName(0) == "bx3" Then
Xcond3 = true;
}
if MaxEntries <= 10 Then
{
AE1 = AvgEntryPrice;
vol1 = CurrentContracts;
}
if Xcond1 == False and Vol1 > 0 Then
ExitLong("bx1",AtLimit,AE1*원하는_평단가요율,"",vol1,1);
if MaxEntries >= 9 and MaxEntries <= 11 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
sum1 = sum1 + (CurrentContracts-CurrentContracts[1])*LatestEntryPrice(0);
sum2 = sum2 + (CurrentContracts-CurrentContracts[1]);
AE2 = sum1/sum2;
}
}
if MaxEntries >= 11 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
Vol2 = Vol2 + (CurrentContracts-CurrentContracts[1]);
}
if Xcond2 == false Then
ExitLong("bx2",AtLimit,AE2*원하는_평단가요율,"",vol2,1);
}
///////////////////////////////////////////////////////////////////////////
if MaxEntries <= 10 and MaxEntries <= 19 Then
{
AE3 = AvgEntryPrice;
vol3 = CurrentContracts;
}
if Xcond3 == False and Vol3 > 0 Then
ExitLong("bx3",AtLimit,AE3*원하는_평단가요율,"",vol3,1);
/////////////////////////////////////////////////////////////////////////////
}
Else
{
AE1 = 0;
vol1 = 0;
sum1 = 0;
sum2 = 0;
vol2 = 0;
AE2 = 0;
AE3 = 0;
vol3 = 0;
Xcond1 = False;
Xcond2 = False;
Xcond3 = False;
}
2022-05-23
1148
글번호 159178
답변완료
피보나치 조정대 임의의 기준점부터 표시
input : Per1(23.6),Per2(38.2),Per3(50.0),Per4(61.8),Per5(76.4);
var : HH(0),LL(0),D1(0),T1(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),TL7(0);
HH = DayHigh;
LL = daylow;
var1 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per1/100));
var2 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per2/100));
var3 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per3/100));
var4 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per4/100));
var5 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per5/100));
if Bdate != Bdate[1] Then
{
D1 = sDate;
T1 = sTime;
TL1 = TL_New(D1,T1,HH,NextBarSdate,NextBarStime,HH);
TL2 = TL_New(D1,T1,var1,NextBarSdate,NextBarStime,var1);
TL3 = TL_New(D1,T1,var2,NextBarSdate,NextBarStime,var2);
TL4 = TL_New(D1,T1,var3,NextBarSdate,NextBarStime,var3);
TL5 = TL_New(D1,T1,var4,NextBarSdate,NextBarStime,var4);
TL6 = TL_New(D1,T1,var5,NextBarSdate,NextBarStime,var5);
TL7 = TL_New(D1,T1,LL,NextBarSdate,NextBarStime,LL);
#굵기
TL_SetSize(TL1,1);
TL_SetSize(TL2,1);
TL_SetSize(TL3,1);
TL_SetSize(TL4,4);
TL_SetSize(TL5,1);
TL_SetSize(TL6,1);
TL_SetSize(TL7,1);
#색상
TL_SetColor(TL1,Green);
TL_SetColor(TL2,Cyan);
TL_SetColor(TL3,Red);
TL_SetColor(TL4,Pink);
TL_SetColor(TL5,Blue);
TL_SetColor(TL6,Cyan);
TL_SetColor(TL7,Green);
}
Else
{
TL_SetBegin(TL1,D1,T1,HH);
TL_SetBegin(TL2,D1,T1,var1);
TL_SetBegin(TL3,D1,T1,Var2);
TL_SetBegin(TL4,D1,T1,Var3);
TL_SetBegin(TL5,D1,T1,Var4);
TL_SetBegin(TL6,D1,T1,var5);
TL_SetBegin(TL7,D1,T1,LL);
TL_SetEnd(TL1,Sdate,Stime,HH);
TL_SetEnd(TL2,Sdate,Stime,var1);
TL_SetEnd(TL3,Sdate,Stime,Var2);
TL_SetEnd(TL4,Sdate,Stime,Var3);
TL_SetEnd(TL5,Sdate,Stime,Var4);
TL_SetEnd(TL6,Sdate,Stime,var5);
TL_SetEnd(TL7,Sdate,Stime,LL);
}
반등파가 아닌 횡보 파동이 생길 때에는 일중 최고점 최저점 기준의 피보나치 조정대가 아닌 새로운 피보나치 조정대를 살펴봐야 해서,
장중에 임의의 어느 한 지점을 선택해서 숫자를 기입하거나 클릭하거나 안되면 최저점이나 최고점을 기준으로 그 지점부터 상승하면 위로,하락하면 아래로 선이 꺾이면서 벌어지지 않고,고저에 따라 수평 이동하면서 첫 라인도 같이 평행선으로 넓어지게 하는 조정대 부탁합니다.
숫자를 바뀌주면 기존 조정대 없어지고 새로 다시 시작되면 더욱 좋겠습니다.
여러번 감사합니다.
2022-05-23
1305
글번호 159177
답변완료
수식 부탁드립니다.
안녕하십니까
며칠전에 같은 내용으로 수식 부탁드렸었는데,
조건을 잘못 전달 드려서 다시 부탁드립니다.
ㅇ 매수
1. 개장 후 5일 가격 이평선 하락 후 상승 구간에서
1번 조건 만족 후
2. 5일 가격이평선 직전보다 10%이상 상승 AND
3. 5일 거래량이평선 직전보다 10% 이상 상승
ㅇ 매도
1. 5일 가격이평선 하락 OR
2. 매수 후 5% 수익 OR
3. 오후 3시 15분 전량 매도
*5일 가격이평선을 기준으로 하락, 상승을 한 사이클로 보고,
2번 조건으로 매도가 실행되면 5일 이평선 하락 후 매수 신호가 다시 발생 할수있게 부탁드립니다.
*매수 신호는 전일종가 대비 +- 20 이내에서만 나갈수 있게 부탁드립니다.
잘 부탁 드립니다
감사합니다.
2022-05-23
1107
글번호 159157
답변완료
오른쪽 연장.
항상 감사드립니다.
1)당일 시가선은 추세선처럼 오른쪽 연장은 안되나요?
2022-05-23
998
글번호 159152
답변완료
LatestEntryPrice 함수 질문
LatestEntryPrice 가 가장 최근 피라미딩 포지션 말고 처음진입한 포지션에도 해당이 되는 함수인가요? (보통 피라미딩이 아닌 처음 진입한 포지션에 대해서는 LatestEntryPrice 가 아닌 EntryPrice 만 쓰길레 여쭈어 봅니다)
예를 들면 처음 진입한 포지션 이후 피라미딩을 안해도 LatestEntryPrice 함수를 이용하면 처음 진입한 포지션에 함수가 적용이 되는지 궁금합니다.
2022-05-23
1154
글번호 159146
답변완료
청산조건 2가지로 운용 문의
언제나 감사드립니다.
진입조건에 따라 청산식을 다르게 적용하는 수식좀 부탁드립니다
1.cond1(일반진입)충족시 매수, 매수청산은 SetStopTrailing(dn,ts,PercentStop) 적용
2.cond2:(강한진입: 앞에 10봉내에서 3회이상 수익거래 발생한 후 진입할 때는 추적청산(atr) 적용
/////////////////////
Input: DN(4),TS(10),이익횟수(3),AT(15),MUL(2);
var : cnt(0),이익횟수(0);
var : cond1(),cond2();//??
value1 = ma(C, 5);
value2 = ma(C, 20);
# 매수
If CrossUP(value1, value2) Then // 일반진입
{
Buy("b1");
}
If cond2 Then
{
Buy("b2");
}
cond2= ? // 강한진입(앞에 10봉내에서 3회이상 이익발생후 진입)
##여기서 성능보고 거래내역을 보면 SetStopTrailing 신호발생 청산후, 같은시간 같은가격으로 신규진입이 동시신호 발생할 때가 있는 데,이것 제어하는 방법도 좀 부탁드립니다.
settrailing 하는 순간에도 매수조건 충족이라 발생하는 것 같은 데요,이것 제어방법도
하나 부탁드립니다.지진입가!= 진입가[1]//진입시간!= ???
if bdate != bdate[1] Then{
이익횟수 = 0;
}
For cnt = 1 to 10
{
if positiionprofit(cnt) > 0 Then
이익횟수 = 이익횟수+1;
}
#???
if IsEntryName("b1") Then{
SetStopTrailing(dn,ts,PercentStop);
}
if IsEntryName("b2") Then{
exitlong("t청산",atstop,highest(High,barsSinceEntry)-atr(at)*mul);
}
2022-05-23
1227
글번호 159144