커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7724
글번호 230811
답변완료
진입만 발생
안녕하세요..
다음이 가능한지 문의드립니다.
예를들어 5분봉
if C > ma(C,20) then Buy();
if C < ma(C,20) then Sell(); 이라는 수식이 있을 때
위의 수식은 리버스이므로 진입과 청산이 동시에 발생하는데,
여기서 청산부분은 제외하고 해당조건이 만족되면 진입부분만
계속 발생하게 할 수 있는 방법이 있는지요?
--> 단, 해당 조건이 만족하는 구간에서 진입은 첫번째 만족봉 한번만 합니다.
--> 피라미딩은 가능합니다.
그럼 부탁드리겠습니다.
감사합니다.
2011-05-12
592
글번호 38518
답변완료
질문드립니다~
일반종목 차트의 분봉에다가 걸어놓고 매매하는 식인데요.
여기에다가
일봉상 전일종가대비 당일시가가 2%~5% 사이일때만
아래식의 1차 매수가 일어나게 하고 싶습니다.
수식은 분봉에다가 걸어놓을꺼구요.
1차매수가 일봉상 전일종가대비 당일시가가 2~5%일때 작동하게 하고 싶습니다.
2차매수와 3차매수는 상관없습니다.
그리고 1차매수시간을 09~14시 까지안에서만 일어나게 하는 수식을 넣고 싶습니다.
input : P1(10),Capital(3000000);
var : sumv(0),count(0),mav(0),EntryP(0);
Condition1 = date==exitdate(1) And MarketPosition(1) == 1;
#진입수량
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
Var1 = int(int((Capital*0.1)/C)/10)*10;
Var2 = int(int((Capital*0.2)/C)/10)*10;
Var3 = int(int((Capital*0.7)/C)/10)*10;
}
Else{
Var1 = int((Capital*0.1)/C);
Var2 = int((Capital*0.2)/C);
Var3 = int((Capital*0.7)/C);
}
}
if CodeCategory == 2 Then{
Var1 = int((Capital*0.1)/C);
Var2 = int((Capital*0.2)/C);
Var3 = int((Capital*0.7)/C);
}
#일봉이평
sumV = 0;
for count = 1 to p1-1 {
sumV = sumV+DayClose(count);
}
maV = (sumV+dayopen()) / p1;
#1차매수
if condition1 == false Then{
if MarketPosition == 0 and L <=mav and H >= mav Then
buy("b1",OnClose,def,var1);
}
if MarketPosition == 1 Then{
#매수후 분할수량계산
if CurrentContracts > CurrentContracts[1] Then{
EntryP = C[1];
if CodeCategory == 1 Then{
value1 = int(int((CurrentContracts*0.5)/10)*10);
value2 = CurrentContracts-value1;
}
if CodeCategory == 2 Then{
value1 = int(CurrentContracts*0.5);
value2 = CurrentContracts-value1;
}
}
#2차매수
if CurrentEntries == 1 and CrossDown(c,EntryPrice*0.97) then
buy("b2",OnClose,def,var2);
#3차매수
if CurrentEntries == 2 and CrossDown(c,EntryPrice*0.95) then
buy("b3",OnClose,def,var3);
#1차매수 후 청산
if MaxEntries == 1 Then{
if CurrentContracts == MaxContracts Then
ExitLong("bx1_1",AtLimit,EntryPrice*1.05,"",value1,1);
if CurrentContracts < MaxContracts Then{
ExitLong("bx1_2",AtLimit,EntryPrice*1.10,"",value2,1);
ExitLong("bx1_3",AtStop,EntryPrice*1.02);
}
}
#2차매수 후 청산
if MaxEntries == 2 Then{
if CurrentContracts == MaxContracts Then
ExitLong("bx2_1",AtLimit,EntryP*1.07,"",value1,1);
if CurrentContracts < MaxContracts Then{
ExitLong("bx2_2",AtLimit,EntryP*1.12,"",value2,1);
ExitLong("bx2_3",AtStop,EntryP*1.05);
}
}
#3차매수 후 청산
if MaxEntries == 3 Then{
if CurrentContracts == MaxContracts Then
ExitLong("bx3_1",AtLimit,EntryP*1.05,"",value1,1);
if CurrentContracts < MaxContracts Then{
ExitLong("bx3_2",AtLimit,EntryP*1.10,"",value2,1);
ExitLong("bx3_3",AtStop,EntryP*1.04);
}
}
#손절
exitlong("loss",AtStop,EntryPrice*0.90);
}
2011-05-12
542
글번호 38516
답변완료
다시 질문드립니다 ㅠㅠ
안녕하세요 수고가 많으십니다!!
제가 어제도 여쭈었는데 그땐 이것이 사용자 함수가 포함되어있어서
바꿔주실수가 없다고 하셨는데
위의 것이 _IsNewBar_1m 이 파일이고
Inputs:
Interval(NumericSimple);
Variables:
IsNewBar(false), Hour(0), Minute(0), CheckTime(0), PrevTime(0);
IsNewBar = false;
if Date <> Date[1] then begin
Hour = IntPortion(TimeToMinutes(Time) / 60);
Minute = TimeToMinutes(Time) - Hour * 60;
if Mod(Minute, Interval) = 0 then
CheckTime = MinutesToTime(Hour * 60 + (IntPortion(Minute / Interval) - 1) * Interval)
else
CheckTime = MinutesToTime(Hour * 60 + IntPortion(Minute / Interval) * Interval);
end;
if Time <> PrevTime then begin
PrevTime = Time;
while Time >= CalcTime(CheckTime, Interval) begin
if Time[1] > CheckTime then
IsNewBar = true;
CheckTime = CalcTime(CheckTime, Interval);
end;
end;
밑의 이 파일이 _SlowD_1m입니다.
이렇게 있으면 변환할수 있지 않을까요???;;
이게 안된다면 사용자함수? 를 지정할 수 있는 방법을 좀 알려주시거나
아니면 사용자함수 부분은 빼고라도 변환을 좀 부탁드립니다!!
Inputs:
Interval(NumericSimple), Length(NumericSimple);
Variables:
Factor(.5), BarCount(0), Counter(0);
Arrays:
FastDArray[2](0), SlowDArray[2](0);
if _IsNewBar_1m(Interval) then begin
BarCount = BarCount + 1;
for Counter = 2 downto 1 begin
FastDArray[Counter] = FastDArray[Counter - 1];
SlowDArray[Counter] = SlowDArray[Counter - 1];
end;
if BarCount <= 1 then begin
FastDArray[0] = FastK(Length * Interval);
SlowDArray[0] = FastDArray[0];
end
else begin
FastDArray[0] = FastDArray[1] + (Factor * (FastK(Length * Interval) - FastDArray[1]));
SlowDArray[0] = ((SlowDArray[1] * 2) + (FastDArray[1] + (Factor * (FastK(Length * Interval) - FastDArray[1])))) / 3;
end;
end;
if BarCount > 0 then
_SlowD_1m = SlowDArray[0]
else
_SlowD_1m = 0;
2011-05-12
569
글번호 38515
하루우유 님에 의해서 삭제되었습니다.
2011-05-12
41
글번호 38514
답변완료
질문드립니다
만약 1시에서 2시 사이에 매수가 있었으면 2시에 매수청산하고 2시에서 3시 사이에 진입이 되었으면 3시에 매수청산을 한다를 어떻게 표현하나요?
2011-05-12
482
글번호 38513
답변완료
setstoptrailing 청산조건
질문 1) 수식을 setstoptrailing(5,10,percentstop)으로 작성하고, 강제청산을 목표수익 20%, 최소가격변화 5% 로 설정하였을 경우에, 실행우선순위가 어떻게 되는지요..
질문 2)
.강제청산에서 청산시점을 '조건만족시 즉시'로 선택
.시뮬레이션으로 setstoptrailing(5,10,percentstop)을 실행
.진입분봉의 고가가 setstoptrailing의 floor 10%보다는 크되
.진입분봉의 종가가 setstoptrailing의 drop 5%보다 큰 6%
위와 같이 가정할 경우 시뮬레이션 청산가격은 수식과 동일한 값으로 실행되는지요..
질문 3) 위 질문2)에서
.진입분봉의 종가가 setstoptrailing의 drop 5%보다 작은 4% 인 경우에는
청산값이 어떻게 되는지요..
요청사항: setstoptrailing이 처음접하는 경우에는 이해하기가 쉽지가 않습니다.
관련된 세부사항이 일괄적으로 정리된 자료가 있다면 이해하는데 많은 도움이 되겠습니다.
감사합니다.
2011-05-12
676
글번호 38512
답변완료
질문드립니다^^
fx 1계약
매도 매수 진입후 최고가격 대비 15핍하락 하면 강제청산되고
(그러니깐 20핍이하만 해당되겠죠)
여기에 20핍이상 수익이 났을 경우에는 5핍이상 하락하면 청산되는
예쁜식이 있는지요(30핍수익이 나고 있고 있나가 5핍 떨어지면 청산)
그리고
08~12 15~20시 23~03시 조건만족시 특정 시간대만 거래가 가능한지
가능하면 식 부탁드립니다^^
항상 성실한 답변 감사합니다.
2011-05-11
608
글번호 38511
답변완료
질문할게요
리버스 시스템으로 하는대
옵션에다가 할경우
리버스라서 매도도 나와서 증거금이 너무너무너무 많이필요해서
매도는 없이 매수만 뜨게끔 하구싶은대요
밑에 매도식을 삭제하니까 매수했다가 청산은 않하고 그대로 있내요
즉
월래대로 매수를 했다가 매도로바껴서 매도 시그널이 나오늘것을
청산으로 변경하구싶어요
if stime >= j and var7>var7[1] and var7[1]>var7[2] and var6>var6[1] and value4>value4[1]
and var3>var3[1] and var3[1]>var3[2] and var5>var5[1] and var5[1]>var5[2] and var11>r
then buy("BUY");
if stime >= j and var7<var7[1] and var7[1]<var7[2] and var6<var6[1] and value4<value4[1]
and var3<var3[1] and var3[1]<var3[2] and var5<var5[1] and var5[1]<var5[2] and var11>r
then sell("SELL");
2011-05-12
512
글번호 38510
회원 님에 의해서 삭제되었습니다.
2011-05-11
256
글번호 38507