답변완료
일목균형표 선행스팬1, 2 질문드립니다.
안녕하세요!! 일목균형표 선행스팬1,2 에 대해서 현재봉 기준으로 앞에 봉(25일 미래 기준 봉)에 대한 선행스팬값을 얻고 싶습니다.
아래와 같은 수식에서는 앞으로 발생될 값에 대한 데이터를 얻을수가 없네요.
Chart.GetIndicatorData(4, -25);
Chart.GetIndicatorData(4, -25);
2022-03-02
1706
글번호 225621
답변완료
수식 문의 드립니다.
1번계좌를 계속 감시(1분 단위) 해서
1번계좌에서 지수선물이 매수(매도)되면 2번 계좌에서 반대로 매도(매수)하고
1번계좌에서 변동이 있으며 2번계좌에서 청산되는 형태로 간단하게 시스템을 만들어보고자 합니다.
의미가 글로 잘 전달될지 모르겠는데,
모바일, PC 등에서 번갈아가며 손매매, 시스템 매매를 병행하기 때문에
계좌1에서 거래가 발생하면 계좌2에서 매수/매도가 진행된다기 보다는,
감시 주기 동안 계좌 1에 변동이 있으면 다음 감시 주기에 계좌2에서 대응한다는 컨셉입니다.
(예,모바일로 계좌 1에서 매수하면, 시스템이 계좌2에서 매도)
현재는 지수선물만 거래 중이어서 외부변수 등으로 코드를 넣어놓고 주기적으로 변경해서 거래하는 수식으로 작성해도 괜찮은데, 시스템 확장을 위해서 account1에서 종목 코드를 가져오는 형태로 만들어 봤습니다.
Q&A에서 많은 도움을 얻고 있는데 항상 감사드립니다.
function Main_OnStart()
{
Main.MessageLog("시작")
//1분 타이머
Main.SetTimer(1, 60000);
}
function Main_OnTimer(nEventID)
{
Main.MessageList("Main_OnTimer");
//계좌 재조회
Account1.Refresh();
}
//계좌이벤트
function Main_OnU*dateAccount(sAccntNum, sItemCode, lU*dateID)
{
//계좌refresh 완료
if (Account1.number == sAccntNum && Account1.Balance.code == sItemCode && lU*dateID == 30000)
{
//계좌1의 특정종목 잔고셋팅
Account1.SetBalance(Account1.Balance.code, 0);
// 계좌1에 종목이 있고, 계좌2에는 아직 거래가 안됐을 때
if (Account1.Balance.count > 0 && Account2.Balance.count == 0)
{
// 계좌1 매수 중이면 계좌2에서 매도진입(수량은 추후 조정)
if (Account1.Balance.position == 2)
{
Account2.OrderSell(Account1.Balance.code,1,0,1); // 1계약 매도
}
// 계좌1 매도 중이면 계좌2에서 매수진입
if (Account1.Balance.position == 1)
{
Account2.OrderBuyl(Account1.Balance.code,1,0,1); // 1계약 매수
}
}
// 계좌1에 잔고가 없을 때
if (Account1.Balance.count == 0)
{
// 계좌2 매수 중이면
if (Account2.Balance.position == 2)
{
Account2.OrderSell(Account2.Balance.code,Account2.Balance.count,0,1); // account2에 있는 계약 청산(매도)
}
// 계좌2 매도 중이면
if (Account2.Balance.position == 2)
{
Account2.OrderBuy(Account2.Balance.code,Account2.Balance.count,0,1); // account2에 있는 계약 청산(매수)
}
}
}
}
2022-02-07
1626
글번호 225614
답변완료
종목 코드와 날자를 입력해서 N봉 후의 종가를 구하고자 합니다.
예스스팟에서 종목 코드와 일봉에서 날자, 분봉에서는 날자와 시간을 입력해서 N봉 후의 종가를 구하는게 가능한가요?
가능하다면 어떤 객체를 사용해야 하는지 알려주시기 바랍니다.
아래의 코드를 변형하면 가능할거 같은데 추가 부분만 알려주시기 바랍니다.
감사합니다.
----------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
main객체의 함수중에
수식안에서 종목객체를 요청할수 있는 ReqMarketData란 함수가 있습니다.
아래 내용 참고하시기 바랍니다,
var ExcelCode = [];
var Code = [];
var rcv;
function Main_OnStart() //특정이벤트에서
{
//엑셀에서 종목코드를 가져와 ExcelCode에 저장
ExcelCode = [];
for (var i = 1 ; i < tot_st+1 ; i++)
{
ExcelCode[i-1] = Excel1.GetData(1, "B"+i);
}
//객체수신 횟수를 카운트할 변수
rcv = 0;
//객체수신하면 저장할 배열변수
Code = [];
//ExcelCode에 저장된 값이 1개이상이면
if (ExcelCode.length >= 1)
{
//ExcelCode[rcv]방의 종목요청
Main.ReqMarketData(ExcelCode[rcv]);
}
}
function Main_OnRcvMarketData(MarketData)
{
//직전 요청산 종목이 수신되면
if (MarketData.code == ExcelCode[rcv])
{
//Object의 rcv방에 해당종목객체 저장
Code[rcv] = MarketData;
//rcv는 1증가
rcv = rcv+1;
//배열변수가 0부터 존재하므로
//rcv가 종목코드갯수 이하일때만 요청
if (rcv < ExcelCode.length)
{
Main.ReqMarketData(ExcelCode[rcv]);
}
}
}
즐거운 하루되세요
> 서윤 님이 쓴 글입니다.
> 제목 : 엑셀에 종목코드를 넣고 읽는법
> 안녕하세요.
특정 종목에 대하여 현재가나 잔고에 남아있는 계약수등을 읽어들이려고 하는데요.
단, 종목객체를 지정하지 않고서 그 종목코드를 엑셀로 부터 읽어들이려고 합니다.
예스스팟에서 구현 가능한지 알고 싶네요.
예를들어서, 엑셀에 종목코드를 넣어놓고서,
for (var i = 1 ; i < tot_st+1 ; i++)
{
code[i-1] = Excel1.GetData(1, "B"+i);
}
와 같이 받은 후에
필요할 때에
code[i].current
code[i].count
code[i].Bid(1)
와 같은 데이터를 받는 방법을 알고 싶습니다.
2022-01-09
1674
글번호 225606