답변완료
자동정정 분할주문의 YL화
YL 시스템 식만 사용하다가,
'[2106]자동정정 분할주문' 이라는 주문으로 청산을 했는데, 이 기능이 마음에 들어서
사용해보려고 합니다.
Q1.'자동정정 분할주문' 의 기능중
<청산조건 만족시,100주를 1분간격으로 10주씩 분할청산> 기능과 같은
수식을 작성하고자 합니다. 저는 시스템식을 주로 30분봉을 사용합니다. 아래와 같은 수식을 활용시, 30분간격으로만 청산이 진행될 것 같네요..
(아니면, 혹시 시스템식과 "자동정정 분할주문"과 연계해서 청산 방법은 없을지요?)
if TimeToMinutes(stime) >= TimeToMinutes(ExitTime(1))+1 Then
exitlong()
Q2. 차트에서 매매 tab에 [2105]예스자동정정 원샷주문과 연계해서 주문이 가능한데,
어떨땐 이설정이 보이다가 안보이가 하는 것 같네요.
자동주문과, 경보후 주문에서만 보이고, 시험적용시에는 사라지는 것 같은데, 맞나요?
2020-11-22
639
글번호 144101
시스템
답변완료
부탁드려요~
안녕하세요 아래 답변 잘 받았습니다.
주말동안 스터디해서 예스스팟으로 전략을 작성했는데,, 검증이 안되내요.
부탁드리겠습니다
var cnt = 0;
function Main_OnStart()
{
Main.MessageLog("시작");
}
function Main _OnRiseSignal(Chart1,Signal) <- Chart1 완성시 시그널
{
if (var1==5 <- 시초 봉 5개 완료 후 진입
&&countif(GetClose <0 ,5)>=3 <- 시초 봉 5개 중 음봉 3개 이상 일때 진입
&& GetLow < GetLow(1) <- 진전봉의 저가 보다 이번봉의 저가가 낮을떄
&& GetClose <0 <- 음봉으로 종료
&& cnt=0)
{
cnt=1;
Main.OrderSell(Account_001, KQ150.code, 10 ,KQ150.Ask(1), 0);
Main.MessageLog("매도진입");
}
}
function Main_OnRiseSignal(Chart1,Signal)
{
if( GetClose >0 <-종가가 양봉으로 끝나고
&& GetHigh > GetHigh(1) <-직전 고가 보다 이번 고가가 높게 끝났을때
&& cnt=1)
{
cnt=0;
Main.OrderBuy(Account_001, KQ150.code, 10 , KQ150.Bid(1), 0);
Main.MessageLog("매도청산1");
}
}
function Main_OnRiseSignal(Chart1,Signal)
{
if( GetHigh(BarSinceEntry) < GetClose <- 진입 봉의 고가 보다 높은 종가로 끝나면 매도 청산
&& cnt=1)
{
cnt=0;
Main.OrderBuy(Account_001, KQ150.code, 10 , KQ150.Bid(1), 0);
Main.MessageLog("매도청산2");
}
}
AA= Account_001.GetTotalAvgCost(2,1) <- 선물, 매도포지션 계좌 평균 단가
BB= GetBid(KQ150,1) <- KQ150 종목의 매수 1호가
CC= BB/AA <- 스탑트레일링을 매수상대1호가 대비 계좌 평단가로 작성하고 싶습니다.
StopTrailing(0.2, 0.5, CALCMETHOD_PERCENT, 0) < CC를 수익률로 적용
StopEndOfDay (151500) <- 마지막 봉에 청산
2020-11-22
924
글번호 144097
시스템
답변완료
진입 제한 예제 부탁드립니다.
다음과 같이 여러 개의 시스템이 합쳐져 있는 시스템에서 진입 제한 예제 부탁드립니다.
테스트를 위한 시스템 예제 기본 구성
// 매수식
if MarketPosition==0 && sTime>093000 && sTime<140000
Then
{
if C>DayOpen*1.01 && C>O Then Buy("매수진입1",AtMarket,def,1);
if C>DayOpen*1.01 && C>C[1] && C>C[2] Then Buy("매수진입2",AtMarket,def,1);
}
// 매수청산식
if MarketPosition==1 Then SetStopEndofday(150000);
if MarketPosition==1 && C>EntryPrice*1.01 Then ExitLong("매수익절",AtMarket);
if MarketPosition==1 && C<EntryPrice*0.99 Then ExitLong("매수손절",AtMarket);
// 매도식
if MarketPosition==0 && sTime>093000 && sTime<140000
Then
{
if C<DayOpen*0.99 && C<O Then Sell("매도진입1",AtMarket,def,1);
if C<DayOpen*0.99 && C<C[1] && C<C[2] Then Sell("매도진입2",AtMarket,def,1);
}
// 매도청산식
if MarketPosition==-1 Then SetStopEndofday(150000);
if MarketPosition==-1 && C<EntryPrice*0.99 Then ExitShort("매도익절",AtMarket);
if MarketPosition==-1 && C>EntryPrice*1.01 Then ExitShort("매도손절",AtMarket);
질문1
매수진입, 매도진입 각각 하루에 한번만 진입 허용하는 시스템
질문2
매수진입, 매도진입 각각 따로
매수진입에서 이익 발생시 추가 진입금지하고 손실 발생시 1회 더 추가 진입 허용하고
매도진입에서 이익 발생시 추가 진입금지하고 손실 발생시 1회 더 추가 진입 허용하는 시스템
질문3
매수진입 매도진입 관계없이 전체 시스템이 이익이 발생하면 진입금지하고 손실 발생시에만 1회 더 추가 진입 허용하는 시스템
질문4
매수진입 매도진입 관계없이 전체 시스템이 손실이 발생하면 진입금지하고 이익 발생시에만 1회 더 추가 진입 허용하는 시스템
항상 감사합니다.
2020-11-22
638
글번호 144094
시스템
답변완료
질문드립니다
안녕하세요
전에 3분봉 챠트에 30분봉의 20이평선을 표시하는 함수식을 질문드린 적이 있었고, 답변에 주신 수식은 아래와 같습니다.
input : ntime(30),P(20);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),mav1(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
Plot1(mav1);
}
}
그런데, 이 식을 시스템식에 이것을 지표로 사용하려 했으나, 무슨 이유인지 수치가 달라집니다. 챠트상에 띄운 해당 이평선과 시스템내에서 지표로 산출되는 수치가 꽤 많이 달라지는 문제를 겪고 있습니다. 해결할 수 있도록 도움 요청드립니다.
감사합니다
2020-11-22
631
글번호 144093
시스템