아래와 같이 장후반에 매수하고, 그 다음날 장 시작 부근에 매도하는 수식입니다. (주식 매매)
전략실행차트[6101]을 이용하여 시스템식을 실행하고, 자동주문을 설정합니다.
1분봉 차트를 사용하고, 매수 함수가 호출되어서 실제 로그가 출력되는는데 매수는 되지 않습니다. 거래내역에도 나오지 않습니다.
시스템 모니터에서 보면 매수신호가 발생하였는데 실제 주문은 들어가지 않았습니다.
왜 그런지 이유를 모르겠습니다.
Input: buyTime(1515), startTime(901);
Variables: accountNum(""), deposit(0), buyCount(0), sellCount(0), stockCode(""), profit(0);
# 포지션이 있으면 청산
if (stime == startTime*100) and (sdate >= EntryDate(0) + 1) then
{
accountNum = GetAccount(0);
stockCode = GetPositionSymbol(0, accountNum);
sellCount = GetPositionQuantity(stockCode, accountNum);
profit = GetPositionOpenPL(stockCode,accountNum);
MessageLog("Sell: %.f, count: %.f, entrydate: %.f, entry price: %.f, profit: %.f", close, sellCount, EntryDate(0), EntryPrice(0), profit);
if (sellCount > 0) Then
{
MessageLog("Real Sell: %.f, count: %.f", close, sellCount);
ExitLong("Sell", OnClose, DEF, "Buy", sellCount, 1);
}
}
# 장마감 시간에 매수
if (stime == buyTime * 100) and (MarketPosition == 0) then
{
accountNum = GetAccount(0);
buyCount = floor(GetUnclearedDeposits(accountNum)/C);
MessageLog("Buy: %.f, count: %.f", close, buyCount);
if (buyCount > 0) Then
{
MessageLog("Real Buy: %.f, count: %.f", close, buyCount);
Buy("Buy", OnClose, DEF, buyCount);
}
}
답변 2
예스스탁
예스스탁 답변
2020-04-22 09:12:36
안녕하세요
예스스탁입니다.
잔고관련 함수는 과거의 히스토리 데이타가 없고
항상 실시간에서만 값을 리턴합니다.
실시간 봉이 아니면 잔고함수는 0을 리턴합니다.
작성하신 수식에서 메세지로그의 count: %.f를 count: %.10f로 출력해 보시기 바랍니다.
첨부된 그림과 같이 표시되면 해당 값으로 계산이 불가능하여
NAN이 출력됩니다.
실시간에서 적용하시면 첨부된 그림과 같이 정상적으로
신호도 발생하고 주문도 집행됩니다.
첨부된 그림에서는 buytime은 905로 셋팅하고 적용했습니다.
즐거운 하루되세요
> 찰리03 님이 쓴 글입니다.
> 제목 : 매수가 안 되는 문제
> 아래와 같이 장후반에 매수하고, 그 다음날 장 시작 부근에 매도하는 수식입니다. (주식 매매)
전략실행차트[6101]을 이용하여 시스템식을 실행하고, 자동주문을 설정합니다.
1분봉 차트를 사용하고, 매수 함수가 호출되어서 실제 로그가 출력되는는데 매수는 되지 않습니다. 거래내역에도 나오지 않습니다.
시스템 모니터에서 보면 매수신호가 발생하였는데 실제 주문은 들어가지 않았습니다.
왜 그런지 이유를 모르겠습니다.
Input: buyTime(1515), startTime(901);
Variables: accountNum(""), deposit(0), buyCount(0), sellCount(0), stockCode(""), profit(0);
# 포지션이 있으면 청산
if (stime == startTime*100) and (sdate >= EntryDate(0) + 1) then
{
accountNum = GetAccount(0);
stockCode = GetPositionSymbol(0, accountNum);
sellCount = GetPositionQuantity(stockCode, accountNum);
profit = GetPositionOpenPL(stockCode,accountNum);
MessageLog("Sell: %.f, count: %.f, entrydate: %.f, entry price: %.f, profit: %.f", close, sellCount, EntryDate(0), EntryPrice(0), profit);
if (sellCount > 0) Then
{
MessageLog("Real Sell: %.f, count: %.f", close, sellCount);
ExitLong("Sell", OnClose, DEF, "Buy", sellCount, 1);
}
}
# 장마감 시간에 매수
if (stime == buyTime * 100) and (MarketPosition == 0) then
{
accountNum = GetAccount(0);
buyCount = floor(GetUnclearedDeposits(accountNum)/C);
MessageLog("Buy: %.f, count: %.f", close, buyCount);
if (buyCount > 0) Then
{
MessageLog("Real Buy: %.f, count: %.f", close, buyCount);
Buy("Buy", OnClose, DEF, buyCount);
}
}
출근하느라 장 시작전에 전략을 실행하고 가는데요.
장 시작후에 해야 된다는 건가요?
시스템 모니터에는 정상적으로 오후에 매수신호가 발생하는데 매수가 안됩니다.
제가 주신 답변을 잘 이해 못하겠습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 매수가 안 되는 문제
>
안녕하세요
예스스탁입니다.
잔고관련 함수는 과거의 히스토리 데이타가 없고
항상 실시간에서만 값을 리턴합니다.
실시간 봉이 아니면 잔고함수는 0을 리턴합니다.
작성하신 수식에서 메세지로그의 count: %.f를 count: %.10f로 출력해 보시기 바랍니다.
첨부된 그림과 같이 표시되면 해당 값으로 계산이 불가능하여
NAN이 출력됩니다.
실시간에서 적용하시면 첨부된 그림과 같이 정상적으로
신호도 발생하고 주문도 집행됩니다.
첨부된 그림에서는 buytime은 905로 셋팅하고 적용했습니다.
즐거운 하루되세요
> 찰리03 님이 쓴 글입니다.
> 제목 : 매수가 안 되는 문제
> 아래와 같이 장후반에 매수하고, 그 다음날 장 시작 부근에 매도하는 수식입니다. (주식 매매)
전략실행차트[6101]을 이용하여 시스템식을 실행하고, 자동주문을 설정합니다.
1분봉 차트를 사용하고, 매수 함수가 호출되어서 실제 로그가 출력되는는데 매수는 되지 않습니다. 거래내역에도 나오지 않습니다.
시스템 모니터에서 보면 매수신호가 발생하였는데 실제 주문은 들어가지 않았습니다.
왜 그런지 이유를 모르겠습니다.
Input: buyTime(1515), startTime(901);
Variables: accountNum(""), deposit(0), buyCount(0), sellCount(0), stockCode(""), profit(0);
# 포지션이 있으면 청산
if (stime == startTime*100) and (sdate >= EntryDate(0) + 1) then
{
accountNum = GetAccount(0);
stockCode = GetPositionSymbol(0, accountNum);
sellCount = GetPositionQuantity(stockCode, accountNum);
profit = GetPositionOpenPL(stockCode,accountNum);
MessageLog("Sell: %.f, count: %.f, entrydate: %.f, entry price: %.f, profit: %.f", close, sellCount, EntryDate(0), EntryPrice(0), profit);
if (sellCount > 0) Then
{
MessageLog("Real Sell: %.f, count: %.f", close, sellCount);
ExitLong("Sell", OnClose, DEF, "Buy", sellCount, 1);
}
}
# 장마감 시간에 매수
if (stime == buyTime * 100) and (MarketPosition == 0) then
{
accountNum = GetAccount(0);
buyCount = floor(GetUnclearedDeposits(accountNum)/C);
MessageLog("Buy: %.f, count: %.f", close, buyCount);
if (buyCount > 0) Then
{
MessageLog("Real Buy: %.f, count: %.f", close, buyCount);
Buy("Buy", OnClose, DEF, buyCount);
}
}