커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4759
글번호 230811
답변완료
부탁드립니다
투자 주체별 옵션 수급에서..
개인:(콜매수금액 - 풋매수금액)*10,0000 / (등가양합)*50
기관:
외인;
동일하게 3개 수식을 부탁 드립니다
감사합니다 구벅
※ 콜,풋 모두 금액은 단위가 억 입니다..
이를테면 50억(콜)30억(풋) 이라면 ( 50 - 30 ) * 10000 으로 합니다
2015-09-20
149
글번호 90522
답변완료
SetStopProfittarget(stoptick1,PointStop) 에 대한 질문입니
아래와 같이 수익실현을 외부변수로 stoptick1(0.12)로 설정하도록 해놨습니다.
=========================================================================
Inputs : stoptick1(0.12) ,stoptick(0.3)
...............
...............
SetStopProfittarget(stoptick1,PointStop); //0.12틱(1계약시) 수익이면 실현
SetStopLoss(stoptick,pointstop) ; 0.3틱(1계약) 손실이면 손절
=====================================================================
질문드리겠습니다. 앞으로 2계약을 할려고 합니다.
1) 2계약으로 할때 "시스템 트레이딩 설정"(그림참조)의 동일수량(계약)진입의 거래수량만 1-->2로 설정하면 되는지요?(또 별도 시스템식을 만들어야하는지요?)
[SetStopProfittarget(stoptick1,PointStop]
1) 2계약 기준이면... 합쳐서( 1계약 : 0.06틱 + 1계약 : 0.16틱) 0.12틱이면 수익실현되는건지... 아니면 계약당(1계약 :0.12)기준으로 0.12틱이면 수익실현하는건지 궁금합니다.
만약 2계약합쳐서 0.12틱이면 수익실현되는것라면 계약당 0.12틱 수익실현할려면 (즉 2계약 : 0.24틱) 어떻게 시스템식을 만드는지 궁금합니다.
2) 시스템식에서 "진입"신호가 나왔는데... 진입을 못하고 수동으로 진입했을때는 시스템식 SetStopProfittarget(stoptick1,PointStop); //0.12틱 수익이면 실현
하는 부분에서 수동진입가격기준으로 0.12틱 수익이면 실현되는지요?
[SetStopLoss(stoptick,pointstop)]
1) 2계약 기준이면... 합쳐서( 1계약 : 0.15틱 + 1계약 : 0.15틱) 0.3틱이면 손절되는건지...
아니면 계약당(1계약 :0.3)기준으로 0.3틱이면 손절실현하는건지 궁금합니다.
만약 계약당 0.3 기준으로 손절실현한다면 2계약합쳐서 0.3틱 손실이면 손절해라 라는
시스템식을 어떻게 만드는지 궁금합니다.
---이상입니다.
운영자님 덕분에... 많은 도움을 받고 있습니다. 감사드리고요/// 추석연휴 잘 보내시길 바랍니다..수고하세요^^
2015-09-20
166
글번호 90521
답변완료
시스템식 부탁드림니다.
1,하기 rsi식을 신호시 시스템식으로 바꾼다.
(하단신호시 매수,청산이 되지않고 매수 신호시 추가, 고가선이 볼린저밴드(20,2)상단 골드시 올청산, 상단 신호시에 매도,청산이 되지않고 재 매도신호시 1개 추가,
저가선이 볼린저밴드(20,2)하단선을 데드시에 올청산 )
2,rsi 식을 macd(12,26)으로 바꾼다.
3,바꾼 macd식을 1번과 같이 만들어 주세요.부탁드림니다....
4,수식;
Input:Period(14),Rsi변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
RsiV = RSI(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then Plot1(파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0]));
iff( rsi파동선>Rsi파동선[1],magenta,blue);
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
Rsi저[2] < Rsi저[1] Then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
Rsi고[2] > Rsi고[1] Then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선);
}
2015-09-20
184
글번호 90520
답변완료
타주기 사용 방법
// 60분봉 20일선
AvgValue = Data2(ma(C,20));
추차트는 3분봉이고 보조차트가 60분봉 일때
60분봉의 20일선 이평을 이용하고 싶은데 문법 오류가 납니다.
참고로 AvgValue는 변수 지정이 되어 있어 문제없습니다.
2015-09-20
153
글번호 90519
답변완료
Then 이 걸리고 결과값이 같이 나와요
input : Period(20);
var : k2(0);
k2 = 100 - 100 / (1 + (AccumN(value2, Period) / AccumN(value3, Period)));
if K2 >= 90 Then
var1 = 90;
else K2 <= 10 Then
var1 = 10;
Else
var1 = k2;
plot1(var1);
else K2 <= 10 Then 에서 Then 이 걸린다네요
if K2 <= 10 Then 하니까 결과 값이 10으로 나오는데요
그러나 90 이상은 결과 값이 90 이상으로 표시가 되네요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 값이큰경우
> 안녕하세요
예스스탁입니다.
input : Period(20);
var : k2(0);
k2 = 100 - 100 / (1 + (AccumN(value2, Period) / AccumN(value3, Period)));
if K2 >= 1.5 Then
var1 = 1.5;
else K2 <= -1.5 Then
var1 = -1.5;
Else
var1 = k2;
plot1(var1);
즐거운 하루되세요
> 멋진승부 님이 쓴 글입니다.
> 제목 : 값이큰경우
> 수고하십니다
k2 = 100 - 100 / (1 + (AccumN(value2, Period) / AccumN(value3, Period)));
이 값이 너무 커서 지표로서는 편차가 커요
그래서 1.5 이상의 경우는 1.5로 하고
- 1.5 이하의 경우는 -1.5로 표시하고 싶고
나머지는 그대로 k2 값을 유지하는 방법을 알고 싶네요
감사합니다
2015-09-20
784
글번호 90518
답변완료
부탁드립니다
주야간복합챠트에서 야간장 시가 고기.저가,.종가 수식선과(시가.고가.저가.종가
)글씨가 챠트상에 나타나게 부탁드립니다
2015-09-19
164
글번호 90517
답변완료
부탁드립니다.
1. 아래 지표가 영업일 변경시간을 기준으로 당일데이터로만 계산되었는데 당일데이터로 계산되지 않도록 부탁드립니다.
2. 아래 지표를 캔들위에 끌어올려 "양쪽에 표시"로 넣어서 상단밴드2 와 하단밴드2 에 캔들이 부디칠때 소리가 나게 하고싶습니다.
소리는 두가지로 제가 넣을 수 있도록 우선 기본 소리로 부탁드립니다.
3. 아래 두개의밴드 상하단밴드와 상단하단밴드2 의 값을 알고싶습니다.
감사합니다.
var : R1(0),R2(0);
var : S1(0),S2(0);
var : sumi(0),sumC(0),sumH(0),sumL(0);
if Bdate != Bdate[1] Then{
sumi = 0;
sumH = 0;
sumL = 0;
sumC = 0;
}
sumi = sumi+1;
sumH = sumH+H;
sumL = sumL+L;
sumC = sumC+C;
var1 = sumH/sumI;
var2 = sumL/sumI;
var3 = sumC/sumI;
R1 = var1 + 0.25*(dayhigh(1)-daylow(1));
S1 = var2 - 0.25*(dayhigh(1)-daylow(1));
R2 = var1 + 0.5*(dayhigh(1)-daylow(1));
S2 = var2 - 0.5*(dayhigh(1)-daylow(1));
plot1(var1,"H 당일중심가");
plot2(var2,"L 당일중심가");
plot3(var3,"C 당일중심가");
Plot4(R1, "상단밴드");
Plot5(S1, "하단밴드");
Plot6(R2, "상단밴드2");
Plot7(S2, "하단밴드2");
2015-09-21
165
글번호 90516
답변완료
지표식 부탁드립니다.
지표식과 검색식 문의드립니다
1.일봉차트에 지난주 마지막봉에 점을 표시하고 마지막봉의 종가 수평선지표식
2.주봉상 nn봉기간내 n봉내 최고가와 80bbup을 동시에 돌파한 이후
직전봉까지 연속으로 80bbup > 20이평선 상태에서 80bbup과 20이평선 우상향중이고
일봉상 현재가가 위 주봉조건에 만족하고 주봉80upbb과 주봉20이평 사이에
위치하고 일봉80bbup상승& 일봉120이평 상승중인 종목
검색식과 지표식 부탁드립니다.
일봉차트에 검색된 봉,주봉80bbup,주봉 20이평선 모두 표시해 주시기바랍니다..
3.일봉상 nn봉기간내 n봉내 최고가와 80bbup을 동시에 돌파하고 주가가 주봉80bbup보다
크고 일봉 80bbup 상승& 일봉 120선 상승중인 종목 검색식및 지표식 부탁드립니다.
4.일봉 envelop 지표식을 분봉상에서 구현가능하면 부탁드립니다.
감사합니다.
감사합니다.
2015-09-20
188
글번호 90515
답변완료
트레일링스탑 문의 드립니다.
항상 도움 주셔서 감사합니다.
트레일링 스탑 문의 드립니다.
매매 종목은 해외선물(유로FX) 60분봉 입니다.
문1) 시스템에 트레일링 스탑을 사용하는데
실시간 트레일링 스탑 매매결과와
매매후 시스템을 재 적용했을때 트레일링 스탑 매매 결과가 다릅니다.
이유가 무엇때문인가요?
그리고 실시간 매매시 트레일링스탑보다 시물레이션이나 매매후 시스템 재적용했을때
트레일링 스탑이 수익이 더 좋은것 같은데요? 맞는건가요?
문2) 매매가 이루어지는 실시간 차트에서 실시간으로 운영한 시스템 매매결과와
시스템을 재적용한 시스템 매매와 결과가 다른것도 같은 이유인가요?
즉 실시간 차트에서 지나간 시간의 데이타를 받아올때 시가, 고가, 저가, 조아
데이타만 받아 오나요? 아닌 모든 정보를 받아 오나요?
(예를 들면 한시간봉에서 한시간전의 데이터를 받아온다고 가정시)
문3) 트레일링 스탑 함수 대신 가장 비슷한 결과를 낼수 있는 매매 방법이 무엇이 있나요?
제가 도움말에 있는 방법이랑 개인적으로 생각한 방법이랑 해봤는데 결과값이
너무 달라서요.
아래 식 보고 어느것이 가장 트레일링 스탑이랑 비슷한지 검토 좀 부탁드립니다.
의도하는 트레일링 스탑) 0.001포인트 수익후 0.0005으로 수익이 떨어지면
즉 0.001 수익후 0.0005로 떨어지면 0.0005 수익에 청산
원래 트레일링 스탑)
SetStopTrailing(0.0005,0.001,PointStop,0);# 0.001 수익후에 0.0005 감소하면 청산
도움말 트레일링 스탑 편집)
IF MarketPosition() == 1 then {
Hvalue = Highest(H,BarsSinceEntry+1) ;
if Hvalue >= EntryPrice+PriceScale*10 then
ExitLong("B_Trail",AtStop,Hvalue-0.0005) ;
}
IF MarketPosition() == -1 then {
Lvalue = Lowest(L,BarsSinceEntry+1) ;
if Lvalue >= EntryPrice-PriceScale*10 then
ExitShort("S_Trail",AtStop,Lvalue+0.0005) ;
}
개인적으로 생각한 트레일링 스탑)
IF MarketPosition() == 1 and OpenPositionProfit >= 0.001 then {
ExitLong("B_Trail",AtStop,EntryPrice+PriceScale*5 ) ;
}
IF MarketPosition() == -1 and OpenPositionProfit >= 0.001 then {
ExitShort("S_Trail",AtStop,EntryPrice-PriceScale*5 ) ;
}
개인적으로 생각한 트레일링 스탑2)
IF MarketPosition() == 1 and H >= EntryPrice+PriceScale*10 then {
ExitLong("B_Trail",AtStop,EntryPrice+PriceScale*5 ) ;
}
IF MarketPosition() == -1 and L <= EntryPrice-PriceScale*10 then {
ExitShort("S_Trail",AtStop,EntryPrice-PriceScale*5 ) ;
}
문3) 매수, 매도시
buy("buy")
sell("sell")
Exitlong("B_exit")
Eixtshort("S_exit")
위와 같이 코딩한 경우 매수, 매도 및 청산되는 가격은 조건이 만족하는 시점의
현재가격 인가요?
설명 좀 부탁드립니다.
문4) 아래와 같이 코딩할 경우 제대로 코딩인가요?
검토 부탁드립니다.
# 매수진입
IF Marketposition == 0 and C >= 이평20 and O[0] < C[0] then {
IF Uptrend == true and R_si > 50 and stok < 80 then
buy("buy", Atstop, C) ;
}
# 매도진입
IF Marketposition == 0 and C <= Line20 and O[0] > C[0] then {
IF Dntrend == true and R_si < 50 and stok > 20 then
sell("sell", Atstop, C) ;
위가 같이 코딩시 atstop에 C가 문법에 맞는지 궁금합니다.
도움부탁드립니다.
2015-09-20
209
글번호 90514