커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3607
글번호 230811
스리핏업 님에 의해서 삭제되었습니다.
2019-09-18
0
글번호 132063
답변완료
부탁드립니다.
도움주심에 감사 드립니다.
아래 유형의 마지막 질문 입니다.
이수식을 단위(60)으로 계산하되
월초에서 0으로 출발하는것이 아닌
과거 n봉전에서 0으로 출발하도록 부탁 드립니다.
미리 경배로 감사 인사 올립니다.
input : 단위(60);
var : S1(0),D1(0),TM(0),TF(0);
var : hh(0),ll(0),mm(0),month(0);
month = int(bdate/100)-int(bdate/10000)*100;
if month != month[1] then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%단위;
if (month != month[1]) or ( month == month[1] and TF < TF[1])Then
{
hh = h;
ll = l;
}
if hh > 0 and ll > 0 then
{
if h > hh Then
hh = h;
if l < ll Then
ll = l;
mm = (hh+ll)/2;
var1=c-mm;
plot1(var1);
}
}
PlotBaseLine1(0);
2019-09-19
157
글번호 132062
답변완료
부탁드립니다.
1. 강조식에서 파라볼릭 상승 조건만족시에는 노랑색 수직선으로, 파라볼릭 하락 조건만족시에는 검정색 수직선으로 구현해 주세요 . 감사합니다.
2019-09-18
146
글번호 132061
회원 님에 의해서 삭제되었습니다.
2019-09-18
9
글번호 132060
답변완료
시스템 부탁드립니다.
선물 자동매매
매일 9시 시작으로 개인 선물 500억 매수시
시스템 매도.
매일 9시 시작으로 개인 선물 500억 매도시
시스템 매수.
제 차트 세팅은
차트 선물로 하고
data1에 개인 선물 금액으로 하면 될까요?
고맙습니다.
2019-09-18
153
글번호 132058
답변완료
사용자지표를 Stochastic으로 표현..
Variable:Sum(0);
var1=c;
var2=data2(c);
Sum=var1+var2;
plot1(sum,"sum");
이지표에서 sum을 기본 데이타로해서 스토캐스틱지표를 만들수있는 방법 부탁드립니다.
2019-09-18
175
글번호 132051
답변완료
64122 재질문입니다(혹시라도 못보실까봐 새로올렸습니다.)
우선 식 짜주셔서 너무 감사드립니다.
혹시 저 부분에서 예를들면 첫번쨰 매수 혹은 매도 싸인에서
진입을 한후 그 다음 추가진입,익청,혹은 손절 시 R값을
해당 포지션 진입한날의 R값으로 계산을 할수있는지 알고싶습니다.
예를들어 크루드오일 기준으로 9월 16일 56.00$에 매수포지션 진입을 하였고 16일 최종R값이(R값이 당일 장중에 계속변하므로) 0.80 이었다면
9월 17일 추가진입,익청,혹은 손절을 16일 R값 기준으로 적용하고싶습니다.
9월 17일 크루드오일가격이 56.80 이라면 피라미딩 조건중 하나인 1R 상승시 1계약 추가매수(매도진입이라면 0.80(16일 R값) 하락시 1계약 추가매도) 할수있는 식이 너무나도 간절합니다. 만약에 매수포지션 기준으로 56.80$에 추가진입이 되었고 17일 R값이 0.90 이었다면
9월 18일 기준으로 크루드 오일이 57.70$ 이라면 전일 R값이 0.90 이기에 1R 상승한 가격 57.70$에 한계약 또 추가매수 가 될것이고. 57.70$에 추가매수가 된후
손절 조건중 하나인 2R하락시(57.70 - 0.90x2(2r)=55.90$) 전 포지션 청산이 될수있게
식을 짜고싶습니다. 설명이 조금 길어서 헷갈리실수도 있지만 혹시 너무 이해가 안가시면 답장 주시면 구두로 설명드려서라도 한번 짜고싶습니다.
고생이 정말 많으십니다. 원하는대로 완성만 되면 개인적으로 식사대접이라도 제공하고싶습니다. 감사합니다.
********************Rule 1,2는 개인적으로 짜봤습니다.
저기에 피라미딩을 더 하려고합니다. 최대 5번까지.
첫 진입가격에 1R만큼 상승했다면 계약수를 1개 추가하고 (매수 진입일시)
진입가격에 1R만큼 하락했다면 계약수를 1개 추가하고 (매도 진입일시)
하는 식입니다.
손절은 똑같이 2R만큼 하락 했다면 시장가 청산 (매수 포지션일시)
2R만큼 상승 했다면 시장가 청산 (매도 포지션일시)********************
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 고생이 많으십니다. 시스템 문의 드립니다..
>
안녕하세요
예스스탁입니다.
1
수식에서 투자금이 얼마인지 알수 없습니다.
외부변수로 지정하셔야 합니다.
각 종목의 1포인트당 가치는 BigPointValue가 리턴합니다.
아래와 같이 작성하시면 2R손실이나 투자금의 2%에 해당하는 포인트 중 작은값이 적용되어 청산됩니다.
첫진입가격기준이면 entryprice, 피라미딩시 평균가 기준이면 avgEntryprice,
피라미딩시 마지막진입가 기준이면 LatestEntryPrice(0) 로 지정해 주시면 됩니다.
input : 투자금(100000);
VAR : R(0), ATR(0);
R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L));
ATR = Average(R, 20);
if MarketPosition == 1 Then
ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue));
if MarketPosition == -1 Then
ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue));
2
input : 투자금(100000);
VAR : R(0), ATR(0);
R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L));
ATR = Average(R, 20);
If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수
{
if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then
Buy();
}
If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도
{
if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then
Sell();
}
if MarketPosition == 1 and MaxEntries < 5 Then
buy("b",AtStop,LatestEntryPrice(0)+R*1);
if MarketPosition == -1 and MaxEntries < 5 Then
sell("s",AtStop,LatestEntryPrice(0)-R*1);
if MarketPosition == 1 Then
ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue));
if MarketPosition == -1 Then
ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue));
3
input : 투자금(100000);
VAR : R(0), ATR(0);
R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L));
ATR = Average(R, 20);
If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수
{
Buy();
}
If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도
{
Sell();
}
if MarketPosition == 1 and MaxEntries < 5 Then
buy("b",AtStop,LatestEntryPrice(0)+R*1);
if MarketPosition == -1 and MaxEntries < 5 Then
sell("s",AtStop,LatestEntryPrice(0)-R*1);
if MarketPosition == 1 Then
ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue));
if MarketPosition == -1 Then
ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue));
즐거운 하루되세요
> midasys 님이 쓴 글입니다.
> 제목 : 고생이 많으십니다. 시스템 문의 드립니다..
> 우선 R값(변동성)을 정의 해뒀습니다.
저 R값을 토대로 식을 짜고자 합니다.
(R값)
VAR : R(0), ATR(0);
R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L));
ATR = Average(R, 20);
PLOT1(R,"R");
PLOT2(ATR,"ATR");
※ R값의 활용
한번의 매매에서 사용가능한 금액 한계, 만약 투자금이 100,000$, 손실한도가 2 %라고 하면 한번에 100,000$ X 2% = 2000$ 만 사용한다.
2R 만큼의 손실만 허용하는 것으로 규칙
EX)
. 총 투자금 10만 달러
. 전체 위험 한도 2 % 즉, 2,000 달러
. 원유 선물 매수 신호가 56불에서 발생
. 1R 은 0.41 포인터, 원유선물 1포인터는 1000달러의 가치가 있으므로 1R은 410달러
. 2R 은 0.82 포인터 820 달러
*손절은 첫진입가격에 매수일시 -2R , 매도진입일시 +2R 일경우 손절한다.
or -2000$ 이상 손실금이 발생하면 손절한다.
(이걸 구현하고싶습니다. 상품마다 달리 적용할수 있는지도 궁금합니다 예를들면 골드선물은 1포인트는 100달러의 가치입니다.)
/*
★RULE 1 (일봉)
원칙 : (20일거래일) 최고점을 돌파하면 매수, (10일거래일) 최저점이 붕괴되면 매도
① 바로 직전 20일거래일 신호를 보고 거래를 해서 수익중 이라면 , 현재 새롭게 나온 4주 신호는 적용X
② 직전 20거래일 신호에 따라 거래를 시작했는데 2R (변동성)손실을 기록했다면, 현재 새롭게 나온 20거래일 신호는 받아들인다.
# Rule 1 (일봉)
If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수
{
if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then
Buy();
}
If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도
{
if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then
Sell();
}
/*
★RULE 2 (주봉)
원칙 : 11봉(55거래일) 최고점을 돌파하면 매수, 4봉 (20일거래일) 최저치를 붕괴되면 매도
RULE 1 에서 따라잡지 못한 큰 추세를 잡기 위해 사용한다.
*/
If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수
{
Buy();
}
If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도
{
Sell();
}
Rule 1,2는 개인적으로 짜봤습니다.
저기에 피라미딩을 더 하려고합니다. 최대 5번까지.
첫 진입가격에 1R만큼 상승했다면 계약수를 1개 추가하고 (매수 진입일시)
진입가격에 1R만큼 하락했다면 계약수를 1개 추가하고 (매도 진입일시)
하는 식입니다.
손절은 똑같이 2R만큼 하락 했다면 시장가 청산 (매수 포지션일시)
2R만큼 상승 했다면 시장가 청산 (매도 포지션일시)
힘드시겠지만 부탁드립니다.
2019-09-18
196
글번호 132050
답변완료
수정 부탁드립니다.
안녕하세요?
아래 수식에서 있는거 그대로 놔두고 몇가지 추가를 하고싶습니다.
(추가하는 3가지 모두 하나의 방식을 풀어서 설명드린것입니다.)
1) 매수진입 신호와 매도진입 사이에 캔들갯수를 외부변수로 넣고싶습니다.
(매수진입신호 나온후 매도진입봉 과의 사이에 있는 캔들갯수 입니다)
2) 위에서 입력한 진입신호와 반대진입봉 과의 캔들갯수 이내에 들어간다는 전제하에,
매수진입후 매도진입 신호가 나오면 청산후 매도진입.
매도진입후 매수진입 신호가 나오면 청산후 매수진입.
3) 만약 위에서 설정한 캔들갯수가 벗어난다면, 반대매매는 나오지않고 입력해둔 익절 손절 라인에 청산.
감사합니다.
----------------------------------------------------------------------------------------
input : 양봉틱(5),음봉틱(5),진입횟수(3);
input : 익절틱수(50),손절틱수(50);
var : cnt(0);
if bdate != bdate[1] Then
cnt = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
cnt = cnt+1;
if MarketPosition == 0 and
cnt < 진입횟수 and
C == O+PriceScale*양봉틱 and
C[1] == O[1]-PriceScale*음봉틱 Then
buy();
if MarketPosition == 0 and
cnt < 진입횟수 and
C == O-PriceScale*음봉틱 and
C[1] == O[1]+PriceScale*양봉틱 Then
sell();
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2019-09-18
170
글번호 132047
답변완료
64139 재질문 부탁 드립니다.(내용무)
.
2019-09-18
193
글번호 132046