커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6414
글번호 230811
암지 님에 의해서 삭제되었습니다.
2016-07-05
0
글번호 99748
답변완료
수식 문의 드립니다.
안녕하세요.
만들어주신 시스템 로직의 도움을 받아 다양한 변수 조건에서 테스트를 하고 있습니다.
너무 감사합니다.
아래 작성해주신 조건을 바탕으로 강제 청산 조건을 하나 추가 하고 싶습니다.
로직에 따른 미청산이 있을 경우,
"상품의 현재가가 20 이평"을 터치할 경우, 무조건 청산이라는 조건을 넣고 싶습니다.
늘 빠르고 훌륭한 로직으로 도와주셔서 감사합니다.
#매수진입후
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
var1 = H;
if H > var1 Then
var1 = H;
#진입이 1번일경우
if MaxEntries == 1 Then{
#15틱 하락하면 1계약 추가매수진입
buy("bb",atlimit,EntryPrice-PriceScale*15,1);
#진입가+10틱에 청산
ExitLong("bp1",Atlimit,EntryPrice+PriceScale*10);
#4틱이상 상승후 진입가+2틱에 도달하면 매수청산
if var1 >= EntryPrice+PriceScale*4 Then
exitlong("bx1",AtStop,EntryPrice+PriceScale*2);
}
#진입이 2번일 경우
if MaxEntries == 2 Then{
#청산이 아직 발생하지 않은 경우 평단가+4틱 수익이면 1계약청
if CurrentContracts == MaxContracts Then
ExitLong("bp21",Atlimit,avgEntryPrice+PriceScale*4,"",1,1);
#일부청산이 된 경우
if CurrentContracts < MaxContracts Then
#평단가 +10틱이상이면 나머지 청산
ExitLong("bp22",Atlimit,AvgEntryPrice+PriceScale*10);
#평단가 +4틱이상 상승후 하락해서 평단가+4틱에 도달하면 나머지 청산
if var1 > AvgEntryPrice+PriceScale*4 Then
exitlong("bx2",AtStop,EntryPrice+PriceScale*4);
}
}
#매도진입후
if MarketPosition == -1 Then{
if CurrentContracts > CurrentContracts[1] Then
var2 = L;
if L < var2 Then
var2 = L;
#진입이 1번일경우
if MaxEntries == 1 Then{
#15틱 상승하면 1계약 추가매도진입
sell("ss",atlimit,EntryPrice+PriceScale*15,1);
#진입가-10틱에 청산
ExitShort("sp1",Atlimit,EntryPrice-PriceScale*10);
#4틱 하락 후 진입가-2틱에 도달하면 매도청산
if var2 <= EntryPrice-PriceScale*4 Then
ExitShort("sx1",AtStop,EntryPrice-PriceScale*2);
}
#진입이 2번일 경우
if MaxEntries == 2 Then{
if CurrentContracts == MaxContracts Then
ExitShort("sp21",Atlimit,avgEntryPrice-PriceScale*4);
if CurrentContracts < MaxContracts Then
ExitShort("sp22",Atlimit,AvgEntryPrice-PriceScale*10);
if var2 < AvgEntryPrice-PriceScale*4 Then
ExitShort("sx2",AtStop,EntryPrice-PriceScale*4);
}
}
2016-07-04
156
글번호 99747
답변완료
고가저가매매와추적매매
input : HP(5),LP(5);
var : cnt(0),HH(0),LL(0);
HH = dayhigh(1);
for cnt = 1 to HP{
if dayhigh(cnt) > HH Then
HH = dayhigh(cnt);
}
LL = dayLow(1);
for cnt = 1 to LP{
if daylow(cnt) < LL Then
LL = dayLow(cnt);
}
if crossup(c,HH) then
buy();
if CrossDown(c,LL) Then
sell();
input : AtrMult(10), AtrPeriod(22);
var : AtrVal(0), posHigh(0), posLow(0);
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+2);
PosLow = Lowest(L,BarsSinceEntry+2);
위 고가저가매매와 추적 매매식입니다
위수식에서 추적매매부분이
5일고가 위에서만 매수
5일저가 아래에서만 매도 가능하게 부탁합니다
항상감사합니다
좋은하루되시길바람니다.
2016-07-04
180
글번호 99746
답변완료
수식부탁드립니다.
안녕하세요.
연결선물 당일청산 피라미딩진입 아래수식에서 당일손실제한 청산이후 재진입할경우에는
1회만 진입되고 피라미딩 진입이 누적진입횟수까지 진입이 안됨니다. 수정부탁드립니다.
(제가 수정해도 잘안되네요. 수정 후 시뮬레이션 차트에 적용 검증 부탁 드립니다.)
감사합니다.
input : N(1),PN(2),,PPN(3),당일손실(1.5),i증감(0.2),진입수량(1),누적진입횟수(5);
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);
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);
}
//------------------------------------------------------------------------------------------------------
#추가진입인 BB가 아닐때만 발동
if MarketPosition == 1 and IsEntryName("BB") == false Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
#추가진입인 SS가 아닐때만 발동
if MarketPosition == -1 and IsEntryName("SS") == false 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증감,진입수량);
//-----------------------------------------------------------------------------------------------------
#당일손실제한 청산이 발생하면 Xcond는 true로 변경
if MarketPosition == 0 and
TotalTrades > TotalTrades[1] and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then
Xcond = true;
#추가진입
#무포지션이고 Xcond가 true이고
#직전청산이 당일손실제한일때만 발생
if MarketPosition == 0 and Xcond == true and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then{
if Crossup(ma(c,10),ma(C,20)) Then
Buy("BB",AtMarket);
if CrossDown(ma(C,10),ma(C,20)) Then
Sell("SS",AtMarket);
}
#BB진입에 대한 청산
if MarketPosition == 1 and IsEntryName("BB") == true Then{
ExitLong("BL1",AtStop,avgEntryPrice-0.9);
ExitLong("BP1",AtLimit,avgEntryPrice+1.5);
}
#SS진입에 대한 청산
if MarketPosition == -1 and IsEntryName("SS") == true Then{
ExitShort("SL1",AtStop,avgEntryPrice+0.9);
ExitShort("SP1",AtLimit,avgEntryPrice-1.5);
}
//======================================================================================================
#진입수식(예제)
Input : Period(20);
value1 = TRIX(Period);
# 매수/매도청산
If CrossUP(value1, 0) and BCount+SCount < N and dayPL > -당일손실 Then{
Buy("TRIXB");
}
# 매도/매수청산
If CrossDown(value1, 0) and BCount+SCount < N and dayPL > -당일손실 Then{
Sell("TRIXS");
}
//------------------------------------------------------------------------------------------------------
SetStopEndofday(150000);
//------------------------------------------------------------------------------------------------------
2016-07-05
164
글번호 99745
답변완료
문의드립니다~
밑에 글 잘읽어보고 수식 감사합니다
다름이아니라 신호상에 조금 문제가있는건지 해서 이렇게 문의드립니다
위 장시작 할때도 몇몇개는 맞고 또 안맞는 것도있네요
2번쨰 매수 신호 3번째 매도신호 신호가 선이 이미 교차한후 뒤늦게 뜨는듯합니다
다시 한번 확인 부탁드리겠습니다
그리고 위 수식에서 다른수식하나 좀부탁드리겠습니다
선행스팬1 을 기준으로하여 현제 N봉 을 이용한 수식이 필요합니다
1. 선행스팬1 기준으로 선행스팬 선을 터치한후 올라탄 생성된양봉에 매수신호발생
선행스팬1 기준으로 선행스팬 선을 터치한후 내려간 생성된음봉에 매도신호발생
매수신호에서는 선행스팬1을 터치한 봉에서 청산신호 발생
매도신호에서는 선행스팬1을 터치한 봉에서 청산신호 발생
2. 선행스팬1 기준으로 선행스팬 선을 완전 올라탄양봉으로 만들어진봉에 매수신호발생
선행스팬1 기준으로 선행스팬 선을 완전 올라탄음봉으로 만들어진봉에 매도신호발생
매수신호에서는 선행스팬1을 완전 올라탄 봉에 청산신호발생
매도신호에서는 선행스팬1을 완전 내려간 봉에 청산신호발생
2016-07-05
216
글번호 99744
답변완료
부탁합니다
야간장(18;00~05;00)의 고가저가를 표현하고자 합니다
1.전일야간장의 18:00~24:00의 고가저가를 표현.
2.전일야간장의 00:00`05:00의 고가저가를 표현.
부탁합니다.
2016-07-04
169
글번호 99743
답변완료
LatestEntryPrice를 이지랭기지언어 수식으로 요청
안녕하세요.
아래 함수의 설명입니다.
LatestEntryPrice
설명 : 가장최근 포지션의 진입가격
※ N은 거래 위치. 거래위치는 현재를 기준으로 역순으로 지정.
※ 최근 거래는 0, 직전 거래 1,……
※ (0)은 생략가능
함수 : LatestEntryPrice(N)
예제 : 주로 피라미딩 진입시 이용을 합니다.
LatestEntryPrice를
이지랭귀지 수식으로 구현하고 싶습니다.
수식을 부탁드립니다.
2016-07-04
160
글번호 99742
답변완료
조건추가
감사합니다.
이전 질문을 잘못하여 아래와 같이 답변을 주셨는데 제가 원하는 것은 Var1이 5가 되었을 때를 기점으로 하여 조건을 충족하는 봉 중 최고, 조건을 충족하는 봉중 최저의 차이가 최소 1.5P 이었을 때 그리고 진입시점에 최소1.2를 유지하고 있어야 합니다. 또한, 당일 시가보다는 높아야 합니다.(현재는 값을 입력하는 것으로 답변해주심)
var : Hv(0),Lv(0),Start(false);
Hv = max(값1,값2,값3,값4,값5);
Lv = max(값1,값2,값3,값4,값5);
if date != date[1] Then{
var1 = 0;
Start = false;
}
if Hv >= Lv+1.5 Then
Start = true;
if stime >= 90000 and stime < 110000 Then{
if (countif(data2(c) > data2(o),2) >=2 ) Then
var1 = var1+1;
}
if (var1 >= 5 ) and (Start == true and hv >= Lv+1.2) Then
SELL();
2016-07-04
160
글번호 99741
답변완료
재점검
48503 관련 변수를 변경해도 매매신호가 의도한 대로 나오지 안습니다-
처음 1,2회만 매수 신호가 나옵니다-
다시한번 점검 부탁드립니다-
2016-07-04
150
글번호 99740