커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4738
글번호 230811
답변완료
수식부탁드립니다
일정 조건하에서 마지막 이익실현한 매도가격으로 부터 20% 하락한 경우에 매수하라는 식을 구현하고 싶습니다.
부탁드립니다.
2015-10-27
115
글번호 91737
무한질주 님에 의해서 삭제되었습니다.
2015-10-27
0
글번호 91736
답변완료
문의 드립니다.
진입조건
몇시 몇분까지 당일 진폭이 40틱 이상일 때
1.
당일 중심위면
data2의 저항 가격에 2계약 매도
중심 아래면 data2의 지지 가격에 2계약 매수
2. 매도, 매수 진입 가격을 입력 하는 방법
몇시 이후 진입 가격을 입력하고 해당 가격에 도달하면 매도
해당 가격에 도달하면 매수
청산
손절이 없으면 10틱에 1개, 15틱에 1개 각각 익절
손절 및 스위칭
진입가격 대비 -n틱이면 손절하고 스위칭
1. 스위칭 할 때 계약수를 1개씩 증가하는 식으로
2. 스위칭 할 때 계약수를 2개씩 증가하는 식으로 2개의 식으로 부탁 드립니다.
손절 계약수의 1/2을 손절과 함께 스위칭하고, 1/2은 손절가격 -6틱에 진입
2계약을 손절하면서 1계약을 스위칭하고, 2계약은 손절가격 -6틱에 진입합니다.
손절 후 청산방법
손절이 세번(변수처리) 이하인 경우
2계약을 손절하고 1계약만 스위칭 체결됐을 때 당일 누적 손실금 + 15틱에 청산
당일 누적 손실금 + 10틱에 1/2 청산, 당일 누적 손실금 +15틱에 나머지 청산
계약수가 홀수면
3개면 2개 청산, 1개는 +15틱
5개면 3개 청산, 1개는 +15틱
.
.
이런 식입니다.
손절이 세번 이상인 경우
손실금 + 1틱에 1/2 청산, 진입가격 +15틱에 나머지 청산
최대손실 500만원이면 거래 중지.
주석 부탁 드립니다. 감사합니다.
2015-10-27
133
글번호 91735
답변완료
부탁드림니다
수식전환 부탁함니다
수식:a1=highest(c,21,1);
a2=ma(c,21)*p11;
b1=Lowest(c,21,1);
b2=ma(c,21)*(2-p11);
수식1:a1
수식2:a2
수식3:b1
수식4:b2
p:변수(11)
2015-10-27
131
글번호 91733
답변완료
수식문의
아래수식에서 20틱 30틱 익절부분에서 자동으로 수평선을 만들어주세요
그리고20 30틱에서 익절을 못하고 내려올때 손절부분에서 2개를 처리하는 수식부탁합니다
그런데 애매한개 있읍니다 20틱에서 익절하나하고 한개는 못할때는 어떻게 처리해야되나요 2개를 진입할때 말한것입니다
if MarketPosition == 1 Then{
ExitLong("bx1",atlimit,EntryPrice+PriceScale*20,"",1,1);
ExitLong("bx2",atlimit,EntryPrice+PriceScale*30,"",1,1);
ExitLong("수손절",AtStop,EntryPrice-PriceScale*10,"",1,1);
}
if MarketPosition == -1 Then{
ExitShort("sx1",atlimit,EntryPrice-PriceScale*20,"",1,1);
ExitShort("sx2",atlimit,EntryPrice-PriceScale*30,"",1,1);
ExitShort("도손절",AtStop,EntryPrice+PriceScale*10,"",1,1);
}
2015-10-27
125
글번호 91732
답변완료
재질문
답변감사합니다.
내용설명이 자세하지 못햇던것 같습니다.
비연속적 비특정일 일봉에서
예를들어 100일만 본다하면
100일중 시고저종가 값중 일치하는 횟수가 5회이상인 경우 입니다.
시가만 같거나가 아닌,
100일전 종가 78일전 시가 60일전 고가 10일전 고가 2일전 시가
뭐 이런식으로 겹친다면 수평선을 긋고 싶은것 입니다~~
부탁드립니다.
안녕하세요
예스스탁입니다.
1.
시고저종가가 전봉에 연속으로 5회이상 값이 같은 것을 의미하시면 1번
5봉연속 시고저종가가 같은 값인 것을 의미하시면 2번식 이용하시면 됩니다.
1.
if countif(O==O[1] and C == C[1] and H == H[1] and L == L[1],5) == 5 Then
var1 = C;
plot1(var1);
2.
if countif(O==C and H == C and L == c,5) == 5 Then
var1 = C;
plot1(var1);
> 있지예 님이 쓴 글입니다.
> 제목 : 수식문의드립니다.
> 지표상 시가, 종가, 고가, 저가 가 5회(변수) 이상 일치하는 부분에 수평선을 긋고 가격을 표시하고 싶습니다.
2015-10-27
119
글번호 91731
답변완료
시스템정정 rsi로부탁드림니다,
input : P(20),N(20),Short(12),long(26),sig(9);
var : HH(0),LL(0),MACDV(0),MACDS(0);
var : Hi(0),Li(0),TT(0),Vol(0);
HH = highest(H,P);
LL = highest(H,L);
MACDV = MACD(Short,long);
MACDS = ema(MACDV,Sig);
if TT <= 0 and crossup(C,HH[1]) Then{
TT = 1;
Hi = index;
}
if TT >= 0 and CrossDown(C,LL[1]) Then{
TT = -1;
Li = index;
}
if TT == 1 and index <= Hi+N and crossup(MACDV,MACDS) Then{
if (MarketPosition == 0 and PositionProfit(1) < 0) then
Vol = MaxContracts(1)*2;
else if (MarketPosition != 0 and PositionProfit < 0) Then
Vol = MaxContracts*2;
Else
Vol = 1;
if (MarketPosition == 0 and MarketPosition(1) != 1) or
MarketPosition == -1 Then
buy("b",OnClose,def,vol);
}
if TT == -1 and index <= Li+N and CrossDown(MACDV,MACDS) Then{
if (MarketPosition == 0 and PositionProfit(1) < 0) then
Vol = MaxContracts(1)*2;
else if (MarketPosition != 0 and PositionProfit < 0) Then
Vol = MaxContracts*2;
Else
Vol = 1;
if (MarketPosition == 0 and MarketPosition(1) != -1) or
MarketPosition == 1 Then
sell("s",OnClose,def,Vol);
}
---------------------------------------------------------------------------------
전에 문의드린 작성해주신수신인데요
macd 를 rsi 로바꾸고 싶습니다
20개봉중에 최고최저점을 종가로 이탈하고나서 20개봉안에 rsi 과열 과매도 입니다
사용자지정 손절매나 목표수익시 다음반대신호에 진입만허용입니다,
익손절을 해놓으면 무작위진입하는것같아여 그림보내드림니다,
수고하세요
2015-10-27
216
글번호 91730
답변완료
질문드립니다
44677에서 답변 받은 시스템이 검증은 정상적으로 되나 전략실행차트로 돌렸더니
신호가 발생하지 않고 종목변경시 오류가 나면서 트레이더가 종료되는 현상이 발생합니다
1. 수정된 시스템 검토 부탁드리며
2. 전에 답변주신 시스템에서 당일 매매횟수제한을 Input N(1)로 제한하고
var4 = ma(V,100);
var5 = Disparity(20);
로 거래량 및 거래대금, 이격도
DayOpen >= DayClose(1)
을 추가하여 사용중이었는데
혹시나 새롭게 답변받은 시스템에 충돌이 일어날까 재문의 드립니다
요약하면
1)최초 답변받은 시스템에서 특정캔들을 제외하고 매매가 되도록 수정요청
2)수정된 시스템으로 전략실행차트실행시 트레이더 오류 및 다운현상
3)수정된 시스템에서 당일매매 회ㅅ수제한, 100캔들 평균 거래량과 거래대금, 이격도, 당일 시가가 전일 종가 이상의 조건을 추가(전일 종가 조건 불가시 마지막 캔들의 종가<당일 시가)
번거로우실거 같아서 최초 답변과 수정답변을 아래에 첨부합니다
최초답변받은 시스템
----------------------
input : aa(100),bb(2),CC(100),dd(2),금액(1000000);
var : Ov(0),TT(0),Xvol(0),Xcnt(0);
Ov = OBV;
var1 = ma(V,aa);
var2 = abs(Ov-Ov[1]);
var3 = ma(var2,CC);
if MarketPosition == 0 and
!(CurrentContracts < CurrentContracts[1]) and
V >= var1[1]*bb and
var2 >= var3[1]*dd and
Ov-Ov[1] > 0 Then
buy("b1",OnClose,def,floor(금액*0.3/C));
if MarketPosition == 1 Then{
if BarsSinceEntry == 1 then
buy("b2",OnClose,def,floor(금액*0.4/C));
if BarsSinceEntry == 2 then
buy("b3",OnClose,def,floor(금액*0.3/C));
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
TT = TimeToMinutes(stime);
if CurrentContracts < CurrentContracts Then
Xcnt = Xcnt+1;
if MaxEntries == 3 and TimeToMinutes(stime) >= TT+30 then{
if countif(LatestExitName(0) == "BP1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BP1",atlimit,LatestEntryPrice(0)*1.01,"",Xvol,1);
}
if countif(LatestExitName(0) == "BP2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BP2",atlimit,LatestEntryPrice(0)*1.02,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BL1",AtStop,LatestEntryPrice(0)*0.99,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BL2",AtStop,LatestEntryPrice(0)*0.98,"",Xvol,1);
}
exitlong("bp3",atlimit,LatestEntryPrice(0)*1.03);
exitlong("bl3",AtStop,LatestEntryPrice(0)*0.97);
}
}
if MarketPosition != 1 Then
Xcnt = 0;
수정된 시스템
--------------------
input : aa(100),bb(2),CC(100),dd(2),금액(1000000);
var : TT(0),Xvol(0),Xcnt(0),sum1(0),cnt(0);
var : Prc(0),Prc1(0),OBVv(0),sum2(0),idx(0);
Array : VV[101](0),Ov[101](0);
if stime < 145000 Then{
idx = idx+1;
If Prc > Prc1 Then
OBVv = OBVv + Volume;
Else If Prc < Prc1 Then
OBVv = OBVv - Volume;
Else
OBVv = OBVv;
VV[0] = V;
Ov[0] = OBVv;
for cnt = 0 to 100{
VV[cnt] = VV[cnt-1][1];
OV[cnt] = OV[cnt-1][1];
}
Prc = C;
Prc1 = CC[1];
}
sum1 = 0;
for cnt = 0 to aa-1{
sum1 = VV[cnt];
}
var1 = sum1/aa;
var2 = abs(OV[0]-OV[1]);
sum2 = 0;
for cnt = 0 to cc-1{
sum2 = sum2+abs(OV[cnt]-OV[cnt+1]);
}
var3 = sum2/cc;
if MarketPosition == 0 and idx >= aa and idx >= cc and
!(CurrentContracts < CurrentContracts[1]) and
V >= var1[1]*bb and
var2 >= var3[1]*dd and
Ov-Ov[1] > 0 and idx >= aa and idx >= cc Then
buy("b1",OnClose,def,floor(금액*0.3/C));
if MarketPosition == 1 Then{
if BarsSinceEntry == 1 then
buy("b2",OnClose,def,floor(금액*0.4/C));
if BarsSinceEntry == 2 then
buy("b3",OnClose,def,floor(금액*0.3/C));
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
TT = TimeToMinutes(stime);
if CurrentContracts < CurrentContracts Then
Xcnt = Xcnt+1;
if MaxEntries == 3 and TimeToMinutes(stime) >= TT+30 then{
if countif(LatestExitName(0) == "BP1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BP1",atlimit,LatestEntryPrice(0)*1.01,"",Xvol,1);
}
if countif(LatestExitName(0) == "BP2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BP2",atlimit,LatestEntryPrice(0)*1.02,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BL1",AtStop,LatestEntryPrice(0)*0.99,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BL2",AtStop,LatestEntryPrice(0)*0.98,"",Xvol,1);
}
exitlong("bp3",atlimit,LatestEntryPrice(0)*1.03);
exitlong("bl3",AtStop,LatestEntryPrice(0)*0.97);
}
}
if MarketPosition != 1 Then
Xcnt = 0;
2015-10-27
147
글번호 91729
답변완료
재질문드립니다~~
이해를 못하셨다니 예를들어 다시설명드리자면~~~
10일이평>20일이평 and 5일이평>20일이평~~~이 3조건이 맞을때 (매수)신호를 구현한다라면~~~~
두가지상황이 있을수있는바
1.~하나는~~
10일이평>20일이평 (10일이평)이 큰상태에서 5일이평>20일이평이 되어
(3조건맞아) 신호가 날수있고
2.~또하나는
5일이평>20일이평 (5일이평)이 큰상태에서 10일이평>20일이평이 되어
(3조건맞아) 신호가 날수있는데~~~
제가 원하는 수식은 2번 입니다~
~즉~ 10일이평 > 20일이평~~~~으로 이미 (10일이평)이 큰것은 무시하고 있다가
5일이평 > 20일이평 된후에~~~10일이평 > 20일이평 되는것만 신호출현!!
부탁드립니다~~~
2015-10-27
121
글번호 91728