커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4683
글번호 230811
답변완료
부탁드립니다
수고하십니다. 아래 수식중,if data4(sdate != sdate[1]) Then{ cond41 = false;} ----
이수식에서 (sdate[1])를 (sdate[0])으로 하는 수식을부탁드립니다
아래수식 주석부탁드립니다
var : cond41(false,data4),V4(0,data4);
if data4(sdate != sdate[1]) Then{
cond41 = false;}
if cond41 == false and abs(data4(L)-data3(H)) <= 0.1 Then{
cond41 = true;
V4 = (data4(l)+data3(h))/2;
}
if cond41 == false and abs(data4(H)-data3(L)) <= 0.1 Then{
cond41 = true;
V4 = (data4(h)+data3(l))/2;
}
if cond41 == true and CrossUp(data4(highd(0)),data3(highD(0)-0.05)) Then{
V4 = (data4(highD(0))+data3(highD(0)))/2;
}
if cond41 == true and CrossDown(data4(LowD(0)),data3(LowD(0)+0.05)) Then{
V4 = (data4(LowD(0))+data3(LowD(0)))/2;
}
if cond41 == true and CrossUp(data3(highD(0)),data4(highD(0)-0.05)) Then{
V4 = (data3(highD(0))+data4(highD(0)))/2;
}
if cond41 == true and CrossDown(data3(LowD(0)),data4(LowD(0)+0.05)) Then{
V4 = (data3(LowD(0))+data4(LowD(0)))/2;
}
if stime >= 90000 and stime <= 151500 Then{
plot1(V4);
}
2016-02-04
120
글번호 95170
오늘도수익 님에 의해서 삭제되었습니다.
2016-02-04
32
글번호 95168
답변완료
복리투자와한도정하기
Input : shortPeriod(5), longPeriod(20) ;
Var : value(0),vol(0);
if MarketPosition != 0 Then{
if PositionProfit < 0 Then
Vol = MaxContracts*2;
Else
vol = 1;
}
if MarketPosition == 0 Then{
if PositionProfit(1) < 0 Then
Vol = MaxContracts(1)*2;
Else
vol = 1;
}
value = OSCP(shortPeriod, longPeriod);
If CrossUP(value, 0) Then
Buy("b",OnClose,def,vol);
If CrossDown(value,-0) Then
Sell("s",OnClose,def,vol);
# 추적청산
input : AtrMult(6), AtrPeriod(6);
var : AtrVal(0), posHigh(0), posLow(0);
# ATR 추적청산
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+2);
PosLow = Lowest(L,BarsSinceEntry+2);
If MarketPosition == 1 and C < ma(c,20) Then
sell("ATR1", AtStop, PosHigh - ATRVal,Vol);
If MarketPosition == -1 and C > ma(c,20) Then
buy("ATR2", AtStop, PosLow + ATRVal,Vol);
If MarketPosition == 0 and C > ma(C,20) Then
sell("ATR3", AtStop, Highest(H,BarsSinceExit(1)+1) - ATRVal,Vol);
If MarketPosition == 0 and C < ma(C,20) Then
buy("ATR4", AtStop, Lowest(L,BarsSinceExit(1)+1) + ATRVal,Vol);
위수식에서
복리투자시한도를최대 80개로 해주세요
그후목표가후 원위치는 위와같습니다.
감사합니다.
2016-02-04
100
글번호 95167
답변완료
수식부탁합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 부탁합니다.
> 안녕하세요
예스스탁입니다.
아래와 같이 식을 구성해 보시기 바랍니다.
매수조건은 무포지션이나 매도포지션 상태일때만 소리출력
매도조건은 무포지션이나 매수포지션 상태일때만 소리가 출력됩니다.
if 매수조건 then
{
if MarketPosition <= 0 Then
playsound(~~~~);
}
if 매도조건 then
{
if MarketPosition >= 0 Then
playsound(~~~~);
}
즐거운 하루되세요
> 지킴이 님이 쓴 글입니다.
> 제목 : 수식 부탁합니다.
>
좋은하루 되세요..
예비신호에서 소리가 날 수 있게 playsound 를 수식에 적용 하였습니다.
if 조건 then
{ playsound }
이런식으로 적용하였는데
예비신호에서는 소리가 나고 본 신호가 나오면 소리가 나지않게 설정하고 싶습니다.
즉,, 예비신호에서만 소리가 날 수 있도록..
추신:
커뮤니티에서 다른사람이 올린것을 찾아서 적용해 보았는데
포지션 있을때 없을때 구분해서 있는것이 있어서 적용했는데 신호적용하니 소리가 계속해서 나네요.. 정확한 것으로 부탁드립니다...
감사 합니다.
***********************************************
답변감사 합니다.
그런데 지금 그런식으로 되어있거든요.. 수식으로는 맞는것 같은데 적용하면
포지션이 있던 없던 소리가 계속해서 나요..
if 매수조건
Then
{
Buy("매수1", OnClose);
if MarketPosition <= 0 Then
{ PlaySound("C:₩예스트레이더₩data₩Sound₩매수.wav"); }
}
수고스럽겠지만 다시한번 검토 부탁합니다.
2016-02-04
99
글번호 95164
답변완료
부탁합니다
**시스템**
1.매수청산
-매수진입후 a선을 두번 크로스다운하면 매수청산.
2.매도청산
-매도진입후 b선을 두번 크로스업하면 매도청산
*크로스업/다운과 청산은 캔들종가 기준입니다,
**지표식**
1.새벽 00시부터 05시까지의 최고가 /최저가 지표부탁합니다.
2016-02-04
106
글번호 95163
답변완료
타주기 참조
타주기 참조 후 신호발생
if c>o and c>highest(c[1],20) and ma(c,9)>ma(c,9)[1] and c>ma(c,9) Then
buy();
if c<o and c<lowest(c[1],20) and ma(c,9)<ma(c,9)[1] and c<ma(c,9) Then
sell();
주차트는 120틱
타주기는 10분차트
1.타주기에서 매수발생시 주차트는 매수만(매도일경우청산만),타주기 매도시 매도만 발생(매수시청산만)
2.신호발생 시작시간 설정가능요청, 종료시간은 20틱목표수익청산(신호발생시작시간부터의수익이 20틱이면 강제청산후 모든신호발생억제요청)
2016-02-04
111
글번호 95162
회원 님에 의해서 삭제되었습니다.
2016-02-04
19
글번호 95161
답변완료
질문드립니다.
코스피200선물 챠트에서
당일 장 시작한후 T=0
봉이 60일선을 골든 데드하는 횟수를 누적횟수로 나타낼 수 있을까요?
감사합니다.
2016-02-04
110
글번호 95160
답변완료
동일한 청산식의 잦은 반복
청산식"X001"이 연달아 발생해서 승율은 높아지는데 실속이 없는 경우가 있습니다
제한조건이 아래와 같을때는 청산하지않고 이 조건을 벗어나야
X001로 반복청산이 가능케 하고 싶습니다
[조건] 현재 매수진입상태에서
1. 바로전 청산명이 X001일때
2. 바로전 청산봉과 현재 진입봉의 간격이 5이하일때(ENi-EXi<=5)
3. 청산봉의 C값 < 진입봉C값
4. 현재 barssinceentry<5 일때는
X001이 연속으로 청산되지 않도록 수정 부탁드립니다
아래와 같이 했는데 않되네요
<원식>
var:EnI(0),ExI(0);
If MarketPosition[1]==0 and MarketPosition[0]==1 Then {
EnI=Index;}
If MarketPosition[1]==1 and MarketPosition[0]==0 Then {
ExI=Index;}
Condition5=MarketPosition==1 and IsExitName("X001",1) and ENi-EXi<=5
and C[BarsSinceExit(1)]<C[BarsSinceEntry] and BarsSinceEntry<=5;
If C>EntryPrice and Pop<0 and 상[1]>상[0] Then {
DLi01=Index;
If CountIF(상>97.05,2)[1]<2 Then { //
ExitLong("X00");
DLY01=False;
}
If CountIF(상>97.05,2)[1]==2 Then
DLY01=True;
}
If DLY01==True and 상<98.75 and c>=EntryPrice
and MC[0]-MC[1]<30
and Condition5==False
Then {
ExitLong("X001");
DLY01=False;
}
2016-02-04
116
글번호 95159