커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4437
글번호 230811
답변완료
문의 드립니다.
매도청산시
1.수익이 나면 분할청산하라
2,3pt 위치에서 한개씩
2.최종컷은 최저가격대비 2.2pt 상승시 매도청산
단,역배열(120/60/20)시는 2.2pt하락 and 20이평 상향돌파시
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
수고하세요~
2017-02-21
98
글번호 107096
답변완료
수식 부탁드립니다
1. entryprice 는 최초 진입가이고
latestentryprice 는 최종 진입가인데
최초 진입후 최초 진입가가 수익 목표가에서 청산된 경우 피라미딩 후 청산되지 않고 계
속보유중인 가격 중 최저가를 나타내는 명령어가 있나요? 라는 질문에
If MarketPosition != 0 Then
{
if MaxEntries == 1 Then
LL = EntryPrice;
if CurrentContracts > CurrentContracts[1] and LatestEntryPrice(0) > LL Then
LL = latestEntryPrice(0);
}
이렇게 답변해 주셨는데
피라미딩 후 1개가 추가로 매수되었고 최초 진입가가 청산되지 않았을 경우,
최초 진입가가 최저가이지만 이식을 적용하면 추가로 진입한 가격이 최저가로 인식되어 추가로 진입한 2번째 진입가가 최저가로 인식되는거 같은데...
제가 질문을 정확히 못드린 것 같아 다시 질문을 드립니다
1. 최초 진입과 피라미딩으로 보유수량이 5개( 피라미딩후 최대 보유한도) 있었고 그중 몇개가
목표이익 달성으로 청산되었고 몇개가 추가진입하여 현재의 최저진입가는 최초 진입가에서
단가가 많이 높아진 상태에서 1개가 청산이 되어 나머지 잔량이 4개가 되었을 경우, 2개가
청산되어 잔량이 3개가 되었을 경우, 3개가 청산되어 잔량이 2개가 되었을 경우, 4개가 청산
되어 잔량이 1개가 되었을 모든 경우에 최저가를 나타내는 수식을 알고 싶습니다.
(청산은 손절매로 인하여 진입 순서대로 청산되지는 않습니다)
2. 3번 질문을 매도 피라미딩시 적용하면 NthMinList을 NthMAXList로 변경하면
되는 것이지요?
부탁드립니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 부탁드립니다
> 안녕하세요
예스스탁입니다.
1.
LatestEntryPrice(0)가 LL보다 작다라고 하셔야 합니다.
If MarketPosition != 0 Then
{
if MaxEntries == 1 Then
LL = EntryPrice;
if CurrentContracts > CurrentContracts[1] and LatestEntryPrice(0) < LL Then
LL = LatestEntryPrice(0);
}
2
없습니다.
3
아래 내용 참고하시기 바랍니다.
var : E1(0),E2(0),E3(0),E4(0),avg2(0),avg3(0);
If MarketPosition != 0 Then
{
if CurrentContracts > CurrentContracts[1] Then{
if MaxEntries == 1 Then
E1 = LatestEntryPrice(0);
if MaxEntries == 2 Then
E2 = LatestEntryPrice(0);
if MaxEntries == 3 Then
E3 = LatestEntryPrice(0);
if MaxEntries == 4 Then
E4 = LatestEntryPrice(0);
}
if MaxEntries == 1 Then{
avg2 = E1;
avg3 = E1;
}
if MaxEntries == 2 Then{
avg2 = (E1+E2)/2;
avg3 = (E1+E2)/2;
}
if MaxEntries == 3 Then{
avg2 = (NthMinList(1,E1,E2,E3)+NthMinList(2,E1,E2,E3))/2;
avg3 = (E1+E2+E3)/3;
}
if MaxEntries == 4 Then{
avg2 = (NthMinList(1,E1,E2,E3,E4)+NthMinList(2,E1,E2,E3,E4))/2;
avg3 = (NthMinList(1,E1,E2,E3,E4)+NthMinList(2,E1,E2,E3,E4)+NthMinList(3,E1,E2,E3,E4))/3;
}
}
즐거운 하루되세요
> 미송 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
> 1. entryprice 는 최초 진입가이고
latestentryprice 는 최종 진입가인데
최초 진입후 최초 진입가가 수익 목표가에서 청산된 경우 피라미딩 후 청산되지 않고 계
속보유중인 가격 중 최저가를 나타내는 명령어가 있나요?
이 질문에 답변을 해주셔서 당초 시스템식
if MarketPosition == 1 Then
{
if MaxContracts < 4 Then
buy("bb",atstop,LatestEntryPrice(0)+1.5,1);
}
if MarketPosition == -1 Then
{
if MaxContracts < 4 Then
sell("ss",atstop,LatestEntryPrice(0)-1.5,1);
}
#진입별 5포인트 수익시 청산
SetStopProfittarget(5.0,PointStop);
#진입별 1.5포인트 손실시 청산
SetStoploss(1.5,PointStop);
if MarketPosition == 1 Then
ExitLong("bp",atlimit,EntryPrice+20.0);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,EntryPrice-20.0);
if MarketPosition == 1 and c > entryprice + 15.0 and Relative1 >= 65 Then
exitlong("bx1",AtStop,c);
if MarketPosition == -1 and c < entryprice - 15.0 and Relative1 <= 35 Then
exitShort("sx1",AtStop,c);
if MarketPosition == 1 and highest(h,BarsSinceEntry) >= EntryPrice + 0.6 Then
Exitlong("bx2",AtStop,highest(H,BarsSinceEntry) - abs(highest(H,BarsSinceEntry)-EntryPrice)*1.0);
if MarketPosition == -1 and lowest(L,BarsSinceEntry) <= EntryPrice - 0.6 Then
Exitshort("Sx2",AtStop,lowest(L,BarsSinceEntry) + abs(lowest(L,BarsSinceEntry)-EntryPrice)*1.0);
if MarketPosition == 1 and highest(h,BarsSinceEntry) >= EntryPrice + 1.0 Then
Exitlong("bx3",AtStop,highest(H,BarsSinceEntry) - abs(highest(H,BarsSinceEntry)-EntryPrice)*0.9);
if MarketPosition == -1 and lowest(L,BarsSinceEntry) <= EntryPrice - 1.0 Then
Exitshort("Sx3",AtStop,lowest(L,BarsSinceEntry) + abs(lowest(L,BarsSinceEntry)-EntryPrice)*0.9);
을 다음과 같이 바꾸었습니다
if MarketPosition == 1 Then
{
if MaxContracts < 4 Then
buy("bb",atstop,LatestEntryPrice(0)+1.5,1);
}
if MarketPosition == -1 Then
{
if MaxContracts < 4 Then
sell("ss",atstop,LatestEntryPrice(0)-1.5,1);
}
If MarketPosition == -1 Then
{
if MaxEntries == 1 Then LL = EntryPrice;
if CurrentContracts > CurrentContracts[1] and LatestEntryPrice(0) > LL Then
LL = LatestEntryPrice(0);
}
#진입별 5포인트 수익시 청산
SetStopProfittarget(5.0,PointStop);
#진입별 1.5포인트 손실시 청산
SetStoploss(1.5,PointStop);
if MarketPosition == 1 Then
ExitLong("bp",atlimit,EntryPrice+20);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,EntryPrice-20);
if MarketPosition == 1 and c > entryprice + 15.0 and Relative1 >= 65 Then
exitlong("bx1",AtStop,c);
if MarketPosition == -1 and c < EntryPrice - 15.0 and Relative1 <= 35 Then
exitShort("sx1",AtStop,c);
if MarketPosition == 1 and CurrentContracts == 1 and highest(h,BarsSinceEntry) >= LL + 0.6 Then
Exitlong("bx2",AtStop,highest(H,BarsSinceEntry) - abs(highest(H,BarsSinceEntry)- LL)*1.0);
if MarketPosition == -1 and CurrentContracts == 1 and lowest(L,BarsSinceEntry) <= LL - 0.6 Then
Exitshort("Sx2",AtStop,lowest(L,BarsSinceEntry) + abs(lowest(L,BarsSinceEntry)- LL)*1.0);
if MarketPosition == 1 and CurrentContracts <= 2 and highest(h,BarsSinceEntry) >= LL-1.0 Then
Exitlong("bx3",AtStop,highest(H,BarsSinceEntry) - abs(highest(H,BarsSinceEntry)- LL)*0.9);
if MarketPosition == -1 and CurrentContracts <= 2 and lowest(L,BarsSinceEntry) <= LL- 1.0 Then
Exitshort("Sx3",AtStop,lowest(L,BarsSinceEntry) + abs(lowest(L,BarsSinceEntry)- LL)*0.9);
바꾼 결과는 당초와 다른것이 하나도 없었습니다.
더 바꿔야 하는 수식이 있는지 검토 부탁드립니다
2. entryprice 는 최초 진입가이고
latestentryprice 는 최종 진입가인데
피라미딩 후 청산되지 않고 보유중인 계약이 다수 있을경우 각 가격을 나타내는 명령어가 있
나요?
3. 또 위의 피라미딩 시스템은 4개의 잔량까지 보유 할 수 있는데 보유중인 가격중 하위 2개, 또는 3개 가격의 평균가(avgentryprice)을 나타내는 명령어를 만들고 싶습니다
감사합니다
2017-02-21
111
글번호 107094
답변완료
선형회귀라인
선형회귀라인(LRL)에 STD를 적용하여 상하 변동밴드선를 표현하고 싶습니다.
부탁드립니다.
2017-02-21
142
글번호 107087
고저중 님에 의해서 삭제되었습니다.
2017-02-21
1
글번호 107084
천용인 님에 의해서 삭제되었습니다.
2017-02-21
7
글번호 107078
금빛 님에 의해서 삭제되었습니다.
2017-02-21
17
글번호 107075
답변완료
수식
안녕하세요. 항상 감사드립니다.
하기 조건에 대한 수식 부탁드립니다.
1. 일목균형표 후행스팬이 기준선 돌파 상태
2. 5,20선 골드크로스 상태
# 매수1 - 음봉 고가돌파 (1,2번 조건 부합)
# 매수2 - 음봉 고가돌파 (2번 조건만 부합 및 당일 고가 대비 2.5P 하락인 경우)
3. 일목균형표 후행스팬이 기준선 돌파 상태
4. 5,20선 골드크로스 상태
# 매도1 - 양봉 저가이탈 (3,4번 조건 부합)
# 매도2 - 양봉 저가이탈 (4번 조건만 부합 및 당일 저가 대비 2.5P 상승인 경우)
PS : 일목균형표 후행스팬이 기준선 돌파이탈 경우에 대한 금지 수식 부탁드립니다. 공부하겠습니다.
감사합니다.
2017-02-21
102
글번호 107069
슛팅 님에 의해서 삭제되었습니다.
2017-02-21
42
글번호 107065
답변완료
수식의뢰
안녕하세요
시그널메이커의 LinearReg라는 사용자함수의 수식입니다
예스랭귀지로 변환할 수 있을는지요
Params :
Price( NumSeries ),
Period( NumSimple ),
Gradient( NumRef ),
Yintercept( NumRef ),
Angle( NumRef );
Vars :
ii( 0 ),
X( 0 ),
Xsum( 0 ),
Ysum( 0 ),
XYSum( 0 ),
Xsquare_sum( 0 ),
v1(0);
Xsum = 0;
Ysum = 0;
XYsum = 0;
Xsquare_sum = 0;
For ii = 0 to Period - 1 step 1
Begin
X = Period - 1 - ii;
Xsum = Xsum + X;
Ysum = Ysum + Price[ii];
XYsum = XYSum + X * Price[ii];
Xsquare_sum = Xsquare_sum + Square( X );
End;
V1 = Period - 1 +e xecOffset;
If Period > 1 && (Period * Xsquare_sum - Square(Xsum)) > 0
Then
Begin
Gradient = (Period * XYsum - Xsum * Ysum)/(Period * Xsquare_sum - Square( Xsum ));
Yintercept = Ysum/Period - Gradient * Xsum/Period;
Angle = Arctangent(Gradient);
LinearReg = Yintercept + Gradient * V1;
End;
쓰기금지 단어가 있어서 주석을 달자면 밑에서 9번째 수식
V1 = Period - 1 +e xecOffset; 중에 e 와 x 는 붙여써야 됩니다
2017-02-21
121
글번호 107063