커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8130
글번호 230811
답변완료
문의드립니다.
위그림처럼 제가 고점과 저점을 입력하면 저렇게 라인이 자동계산되서 목표치하고 보이게 만들고 싶습니다. 0.65란 65%를 말하는것입니다.
2016-11-21
253
글번호 104197
답변완료
문의드립니다
안녕하세요
아래 지표식을 매매식으로 전환 부탁드립니다.
지표식
======================================================
Input : af(0.05), maxAF(0.5);
Var : value(0);
value = sar(af,maxAF);
If crossup(c, value) Then
{
var1 = H;
var2 = L;
var3 = var1[1];
var4 = var2[1];
}
If CrossDown(c, value) Then
{
var1 = H;
var2 = L;
var3 = var1[1];
var4 = var2[1];
}
if H > var1 Then
var1 = H;
if L < var2 Then
var2 = L;
##직전고저점
if crossUp(C, value) then
var5 = var4;
if CrossDown(C, value) then
var6 = var3;
##직고저점 이평up/Down
if ma(c,5) > var6 Then
var7 = var5;
if ma(c,5) < var5 Then
var7 = var6;
##5ma 돌파이탈
if ma(c,5)>var7 then
var8= 1;
if ma(c,5)<var7 then
var8= -1;
plot1(var8,"양음");
PlotBaseLine1(0);
==========================================================
매수/청산
=========
매수 : var8 = 1 일경우 파라볼릭이 매도신호가 발생한적이 있다
그러면
5ma > var6 일때 매수
청산 : 5ma < var7 일때 청산
매도/청산
=========
매도 : var8 = -1 일경우 파라볼릭이 매수신호가 발생한적이 있다
그러면
5ma < var5 일때 매도
청산 : 5ma > var7 일때 청산
감사합니다.
2016-11-21
162
글번호 104196
답변완료
수식문의 드립니다
안녕하세요
수식문의 드립니다
분봉지표로 (당일중심값+전일중심값+전전일중심값)/3 을
var : HH(0),LL(0),RR(0);
HH = dayhigh;
LL = daylow;
RR = (((HH + LL)/2)+((HH[1]+LL[1])/2)+((HH[2]+LL[2])/2))/3;
plot1(RR);
이렇게 했는데 이상하게 표시가 되는데 잘못된건가요?
Var1 = ma(m,30)[1];
Var2 = ma(C,5);
Var3 = (((H + L)/2)+((H[1]+L[1])/2)+((H[2]+L[2])/2))/3;
if Var1 >= 3000000000 and Var2 < Var2[1]
and Var3 < Var3[1] and Var3[1] < Var3[2] and Var3[2] < Var3[3] and Var3*1.03 >= C and Var3 <= C
and countif(H>=L*1.1,30) >= 1 Then
value1 = 1;
Else
value1 = 0;
if countif(value1 == 1,200) >=1 Then
find(1);
이것도 이상이 없는거죠?
항상 감사합니다
2016-11-21
178
글번호 104193
knb 님에 의해서 삭제되었습니다.
2016-11-21
92
글번호 104187
답변완료
틱 데이타를 늘릴 수 있을까요?
안녕하세요.
항상 수고가 많으십니다.
---- 질문입니다 -----------------------------------------------------
해외 선물에서 틱데이타를 이용하려는데 데이타 수가 너무 부족합니다.
현대 선물을 이용중인데, 틱으로 시스템을 적용하려고 보니 틱 데이타가 4~5일 정도만
제공되더군요.
틱 데이타를 늘릴 수 있는 방법이 있는지 궁금합니다.
감사합니다.
항상 하시는 일에 좋은 결실 거두시기를 ~~
2016-11-21
175
글번호 104186
답변완료
질문 드립니다.
if MarketPosition == 1 Then{
var1 = int((highest(h,BarsSinceEntry)-EntryPrice)/(PriceScale*12));
var2 = var1*(PriceScale*12);₩
if var1 == 0 Then
exitlong("bx1",AtStop,EntryPrice-(PriceScale*11));
if var1 >= 1 Then
exitlong("bx2",AtStop,EntryPrice+var2-(PriceScale*11));
}
if MarketPosition == -1 Then{
var3 = int((EntryPrice-lowest(l,BarsSinceEntry))/(PriceScale*12));
var4 = var3*(PriceScale*12);
if Var3 == 0 Then
ExitShort("sx1",AtStop,EntryPrice+(PriceScale*11));
if Var3 >= 1 Then
ExitShort("sx2",AtStop,EntryPrice-var4+(PriceScale*11));
}
상위 식은 예전에 여쭤 봤었던,
1. 진입 후 0.55 손절
2 손절 되지 않고 0.6 익절 시 그 시점에서 손절 0.55
3. 2번 계속 반복.
에 대한 식입니다.
그런데 제대로 작동하지 않는 점을 발견하여 질문 드립니다.
첫번째 스마일에 보시면, 진입가 250.50 으로 부터
0.6 익절을 두 번 된 시점인 249.30 까지 도달하였습니다.
그리하여 249.30에서 0.55 상승한 249.85에 매도청산이 이루어 져야 하나,
작동 하지 않습니다.
식이 무엇인가 잘못 된 것일까요?
감사합니다.
2016-11-21
181
글번호 104185
새로운돌 님에 의해서 삭제되었습니다.
2016-11-21
0
글번호 104184
답변완료
수식 부탁 드립니다.
안녕하세요.
연결선물 당일청산 피라미딩 아래 수식에서 목표 청산 후 재진입이 안되네요.
차트에 적용 수식 점검 수정 부탁 드립니다.
input : N(1),PN(2),당일손실(1.0);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),lossK(0),v1(0);
var : Bxcond(false),SxCond(false);
var : Xcond(false),ProfitCond(false);
var : BE2(false),BE3(false),SE2(false),SE3(false);
var : B2(0),B3(0),S2(0),S3(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
Xcond == false;
ProfitCond == 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);
}
//=======================================================================================================
#피라미딩진입수식
Input : i증감(0.2),누적진입횟수(3),진입수량(1);
if MarketPosition == 1 and MaxEntries < 누적진입횟수 and Bxcond == false Then
Buy("PBB",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and MaxEntries < 누적진입횟수 and SxCond == false Then
sell("PSS",AtStop,LatestEntryPrice(0)-i증감,진입수량);
//=======================================================================================================
#합산목표수익청산
Input : SPPT(2.0);
SetStopPosition;
SetStopProfittarget(SPPT,PointStop);
//=======================================================================================================
# 목표청산 재진입
input : ATRP(10),X(2);
var1 = ma(c,5);
var2 = ma(c,10);
#직전거래가 매수포지션이고 SetStopProfittarget으로 청산했으면
#이평 데드일때 매도진입
if MarketPosition == 0 and
MarketPosition(1) == -1 and
IsEntryName("StopProfitTarget",1) == true and BCount == true and
CrossDown(var1,var2) Then
Buy("rebuy");
#직전거래가 매도포지션이고 SetStopProfittarget으로 청산했으면
#이평 골드일때 매수진입
if MarketPosition == 0 and
MarketPosition(1) == -1 and
IsEntryName("StopProfitTarget",1) == true and SCount == true and
CrossDown(var1,var2) Then
sell("resell");
if MarketPosition == 1 and IsEntryName("rebuy") == true then {
ExitLong("bx",AtStop,EntryPrice-0.5);
ExitLong("btr",AtStop,highest(H,BarsSinceEntry)-ATR(ATRP)*X);
}
if MarketPosition == -1 and IsEntryName("resell") == true then {
ExitShort("sx",AtStop,EntryPrice-0.5);
ExitShort("str",AtStop,highest(H,BarsSinceEntry)+ATR(ATRP)*X);
}
SetStopPosition;
if IsEntryName("rebuy") == false or IsEntryName("resell") == false then
SetStopProfittarget(1.5,PointStop);
Else
SetStopProfittarget(0);#해제
//=======================================================================================================
#진입식예제
Input : Period(12), Period1(5);
Var : value(0);
value = StochasticsK(Period,Period1);
# 매수/매도청산
If CrossUP(value, 20) and BCount+SCount < N and dayPL > -당일손실 Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value, 80) and BCount+SCount < N and dayPL > -당일손실 Then
{
Sell();
}
//=====================================================================================================
#당일 청산시간
SetStopEndofday(153000);
//=====================================================================================================
2016-11-21
191
글번호 104183
답변완료
50591번 질문과 관련하여
안녕하세요.
아래 1번은 지난주 50591번 질문에 대해서 답변으로 주신 수식과 거의 일치하고,
2번은 제가 손절등 약간 손 본 것입니다. 두 개의 수식을 검토해주시고, 차이점을 알려주시면 감사하겠습니다. 그리고, 사용된 함수의 개념등에 대해서 추가로 질문드릴게 있는데 시간 되시면 전화주실 수 있는지요?
항상 감사합니다.
1.
input : short(3),long(100),sig(9),P(5);
var : MACDV(0),MACDS(0),dni(0),vol(0),T(0),mav(0);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
mav = ema(C,P);
if CrossDown(MACDV,MACDS) Then{
TL_New(sdate,stime,99999999,sdate,stime,0);
T = -1;
dni = index;
#종가가 이평위이면 3계약 매도진입
#데드봉 주문 수량은 0
vol = 0;
#데드봉 종가가 이평-2틱 이상이면 주문 수량은 +1
if C >= mav-PriceScale*2 Then
vol = vol+1;
#데드봉 종가가 이평-1틱 이상이면 주문 수량은 +1
if C >= mav-PriceScale*1 Then
vol = vol+1;
#데드봉 종가가 이평-2틱 이상이면 주문 수량은 +1
if C >= mav Then
vol = vol+1;
#vol이 0이상이면 데드봉에서 해당 수량만큼 매도
if vol > 0 Then{
sell("s",OnClose,def,vol);
}
}
if CrossUp(MACDV,MACDS) Then{
ExitShort("sx");
T = 1;
}
if T == -1 and index <= dni+3 then{
#데드시 vol이 0일때 최근 완성봉 이평-2틱 이상의 시세가 발생하면 1계약 매도
if vol < 1 Then
sell("s1",atlimit,mav-PriceScale*2,1);
#데드시 vol이 2미만일때 최근 완성봉 이평-1틱 이상의 시세가 발생하면 1계약 매도
if vol < 2 Then
sell("s2",atlimit,mav-PriceScale*1,1);
#데드시 vol이 3미만일때 최근 완성봉 이평 이상의 시세가 발생하면 1계약 매도
if vol < 3 Then
sell("s3",atlimit,mav,1);
}
2.
input : short(3),long(100),sig(9),P(5);
var : MACDV(0),MACDS(0),dni(0),vol(0),T(0),mav(0),EP(0);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
mav = ema(C,P);
If Crossdown(MACDV,MACDS) and Stime > 090200 and Time < 150000 then{
TL_New(sdate,stime,99999999,sdate,stime,0);
T = -1;
dni = index;
vol = 0;
EP = C;
}
If T == -1 and index < dni+3 then{
if vol < 1 Then
sell("s1",Atmarket,def,1);
if vol < 2 Then
Sell("s2",atlimit,mav-PriceScale*1,1);
if vol < 3 Then
sell("s3",atlimit,mav-PriceScale*1,1);
}
if MarketPosition == -1 Then{
ExitShort("sl",AtStop,AvgEntryPrice+0.40);
}
챠트는 600틱 챠트 기준입니다.
2016-11-21
187
글번호 104182