커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4441
글번호 230811
답변완료
문의드립니다
안녕하세요. 수고가 많으십니다.
몇번의 질의로 어느듯 완성이 되어 가는듯 보입니다.
다시한번 감사의 말씀 드립니다.
염치불구 하나만 더 문의 드립니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
청산시
1.수익이 나면 분할청산하라
2.0/3.0/4.0/5.0pt 위치에서 한개씩
2.최종컷은 최고가격대비 2.2pt 하락시 매수청산
단, 정배열(20/60/120)시는 2.2pt하락 and 60이평 하향이탈시
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
수고하세요^^
2017-02-17
101
글번호 106975
답변완료
문의드립니다
특정값 이상/이하 로 지정하여
익절이 포함되고
진입 위치가 익절이 포함되지 않는 시스템과 같게
만들고 싶습니다
_____________________________
이전 문의글 입니다
_____________________________
진입을 단순히 특정값 이상/이하로 지정하시면
청산후에 조건이 계속 만족하면 또 진입하게 됩니다,
특정값을 상향돌파나 하향이탈로 지정하셔야 합니다.
var : T1(0),entry(0);
if Bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if crossup(A,70) Then
buy();
if MarketPosition == 1 and CrossDown(A,50) Then
exitlong();
if CrossDown(A,30) Then
sell();
if MarketPosition == -1 and Crossup(A,50) Then
ExitShort();
SetStopProfittarget(0.5,PointStop);
_____________________________________________
감사합니다
2017-02-17
93
글번호 106974
답변완료
수식 부탁드립니다
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-19
107
글번호 106973
답변완료
함수 부탁드립니다
최근 몇봉상의 고점 및 최근 몇봉상의 저점
최근 몇분안의 고점 및 최근 몇분안의 저점을
손절시 같은방향 진입 금지를, 손절시 같은방향으로 20봉이내에 진입금지로 변경하고 싶습니다.
함수로 어떻게 표현하나요
감사합니다
2017-02-17
104
글번호 106972
답변완료
함수변환요청(278)
안녕하세요?
아래는 키움증권에서 사용하였던 스크립트입니다.
YT로 변환요청드립니다.
감사합니다.
var : vT(0);
if C < O and C[1] < O[1] and C[2] > O[2] and C[3] < O[3] Then Begin
vT = 1;
var1 = O;
End;
if C > O and C[1] > O[1] and C[2] < O[2] and C[3] > O[3] Then Begin
vT = -1;
var1 = O;
End;
if vT = 1 and crossup(c,var1) and C > O Then
buy();
if vT = -1 and CrossDown(c,var1) and C < O Then
sell();
2017-02-17
111
글번호 106966
답변완료
수식부탁드립니다
매번 감사합니다.
수식 부탁드립니다
1. 이평선 7,11,22,62,122선
매수 조건: 22일선과 62일선이 122선을 하향 돌파 한뒤에 다음봉 시가 매수.
단 62일 선 또는 22일선이 7일선 아래 있으면 매수 불가
매도 조건: 22일선과 62일선이 122선을 상향 돌파 한뒤에 다음봉 시가 매도.
단 62일선 또는 22일선이 7일선 위에 있으면 매도 불가.
청산: 매수청산은 11일선이 122일 선을 상향 돌파시 매수 청산
매도청산은 11일선이 122일 선을 하향 돌파시 매도 청산
손절시 같은 방향 진입 금지
2017-02-17
105
글번호 106960
답변완료
재문의드립니다
51983에2번재문의드립니다 색채우기를하고십습니다 다시한번수정부탁드립니다색채우기방법은알고있습니다 현재는색채우기를할수가없네요 번거롭게해서 죄송합니다 ~~~
2017-02-17
104
글번호 106959
답변완료
문의드립니다.
수고많으십니다.
51975번 게시글에 질문올린것에 대해,
이번에는 과거봉을 잇는 추세선이 아닌 저장한 두 가격비교로 진입하는 시스템을 구현하고싶은데요,
5일선을 기준으로
ma(c,5)[2]-ma(c,5)[1]>0
ma(c,5)[1]-ma(c,5)<0
으로 기준을 잡으면 5일선이 상승반전되는 지점을 알 수 있잖습니까?
이 때, 상승반전이 되는 꼭지점인 ma(c,5)[1] 의 가격을 저장하고,
장이 진행되다 한번 더 위와같은 상승반전되는 지점의 ma(c,5)[1]의 가격을 저장해서,
두 저장한 가격을 비교해 나중에 저장한 가격이 더 높으면 매수하는 시스템식을 부탁드릴게요
조언부탁드립니다. 감사합니다.
2017-02-17
99
글번호 106958
답변완료
수식 문의 드립니다.
안녕하세요.
아래수식에서 목표청산 1일 3회 적용시, 목표청산 1회이상 발생 후 당일손실제한 손절시에는
당일손실제한 1.5PT 에서 목표정산 1회 수익분 1.1PT 제외한 당일손실제한 0.4PT로 연동적용
되도록 수정, 차트적용 목표청산 1일 3회 수식 점검 요청 드립니다.
(당일손실제한 1.5PT - 목표청산 1회 1.1PT 만 적용(2회 3회 제외) = 당일손실제한 0.4PT)
감사합니다.
input : N(1),PN(2),PPN(3),당일손실(1.5),i증감(0.2),진입수량(1),누적진입횟수(3);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),mav6(0);
var : Bxcond(false),SxCond(false);
var : Xcond(false);
var : TT(0),KK(0),DD(0);
var : Pcnt(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
Xcond = false;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//------------------------------------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
if MarketPosition == -1 Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실+(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#피라미딩진입
if MarketPosition == 1 and MaxEntries < 누적진입횟수 and Bxcond == false and Xcond == false Then
Buy("PBB",atlimit,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and MaxEntries < 누적진입횟수 and Sxcond == false and XCond == false Then
sell("PSS",atlimit,LatestEntryPrice(0)-i증감,진입수량);
//-----------------------------------------------------------------------------------------------------
#목표수익청산
Input : SSPT1(1.1);
SetStopPosition;
SetStopProfittarget(SSPT1,PointStop);
//======================================================================================================
#진입수식(예제)
Input : Period(20);
if Bdate != Bdate[1] Then
Pcnt = 0;
if CurrentContracts < CurrentContracts[1] and
((MarketPosition != 0 and LatestExitName(0) == "StopProfitTarget") or
(MarketPosition != MarketPosition[1] and LatestExitName(1) == "StopProfitTarget")) Then
Pcnt = Pcnt+1;
value1 = TRIX(Period);
If CrossUP(value1, 0) and BCount+SCount < PPN and dayPL > -당일손실 and Pcnt < 3 Then{
Buy("TRIXB");
}
If CrossDown(value1, 0) and BCount+SCount < PPN and dayPL > -당일손실 and Pcnt < 3 Then{
Sell("TRIXS");
}
//------------------------------------------------------------------------------------------------------
SetStopEndofday(153000);
//------------------------------------------------------------------------------------------------------
2017-02-17
100
글번호 106956