커뮤니티
예스스팟 Q&A
답변완료
문의 드립니다
chart1 이름이 울트라수퍼챠트
account1 이름이 9999-9999-99
콜옵션 가격은 0원에서 7만원사이 가격중 가장 큰 콜옵션 선택
울트라수퍼챠트에서 선물로 매수신호가 나올때 콜옵션 매수,
선물로 매도신호가 나올때 콜옵션 매도 나오게
예스스탁수식 작성해주세요
(물론 데이 트레이딩용이므로 첫신호가 선물의 매수신호가 먼저 나온 경우는 다음신호가 매도 일경우 매수청산후 매도진입하도록,
선물의 매도신호가 첫신호로 먼저 나온경우는 매도 청산후 매수 진입하도록, 신호 나오게 해주시고요
즉 울트라수퍼차트에서 나오는 선물의 신호가 그대로 옵션 챠트에서도 작동되도록 수식 부탁드립니다.
그리고 제가 스팟은 처음이라 자동매매를 위해 제 계좌를 연계하는 방법도 모릅니다.
그것도 수식에 넣어 주십시요
항상 감사드립니다
문의사항 010 3231 4592 유원장드림
2018-11-12
2950
글번호 224660
답변완료
예스스팟으로 외국인 매수내역 볼수 있나요?
전일 외국인이나 투신 매수금액을 알수 있는 함수가 있나요?
2018-11-11
2978
글번호 224659
goodmami 님에 의해서 삭제되었습니다.
2018-11-08
15
글번호 224658
너무조아 님에 의해서 삭제되었습니다.
2018-11-07
9
글번호 224653
답변완료
DataBase 관련 질문 드립니다
안녕하세요!!
제가 mssql DB를 Q&A게시판을 보고 연결을 했습니다.
그런데 문제가 한가지 생겨서요.
s*lect문을 날리면 DB에서 나오는 결과물이 하나라도 있으면 상관이 없는데
s*lect문을 날려서 결과(레코드)값이 0이면
"TypeError: 데이터의 끝 또는 시작부분을 지나서 스크롤하려고 했습니다"
라는 에러 문구가 뜨면서 에러가 나서 더이상 진행을 할 수가 없습니다ㅠ
예를 들어
var query = "buyPrice FROM LogData WHERE stockCode = 'A" + codeNum + "';
Main.MessageList("S*LECT query : ", query);
var s*lectFlag = D1.S*lect(query, "s*lectQuery");
금지어가 있어서 *처리했습니다.
이렇게 실행하면 레코드 값이 하나라도 있으면 에러가 안나고 결과값을 잘 가져오는데
레코드 값이 없으면 3번째 줄에서 위에 에러 메시지가 뜹니다ㅠ
s*lectFlag 값이 true를 반환하면 상관없는데 false를 반환할 경우 이 반환값을
아예 받을 수 없는것 같아요. 해결 방법좀 알려주세요.
그리고 ysdb파일을 생성하지 않으려면 s*lect구문에서 탭 이름을 지정해주지 않으면
생성이 안된다고 게시판에서 답변해 주신 글을 보았습니다.
var s*lectFlag = D1.S*lect(query, "");
var s*lectFlag = D1.S*lect(query);
이런 방식으로 해봤는데 레코드 값이 존재하더라도 s*lectFlag 값이 false를 반환해더라구요.
ysdb파일을 생성하지 않으려면 어떻게 해야 하는지도 알려주세요!!
그리고 한가지 더 질문이 있는데요.
예수금 관련 질문입니다. 당일 주식을 팔았을 경우 당일 판 금액까지 포함해서
토탈 금앨을 불러 올 수 있는지요?
A1.GetBalanceETCinfo(18); 이렇게 불러오면 당일 판 주식의 금액을 뺀 나머지
예수금을 불러오더라구요. 당일 주식을 판 금액도 당일 주식을 살 수 있잖아요.
예수금 + 당일 주식 판 금액 까지 불러와 현금으로 최대한 주식을 살수 있는 금액을
불러오는 방법을 알고 싶습니다!!
감사합니다~
2018-11-20
2996
글번호 224652
답변완료
수식질문드립니다.
유선상으로 질문드린내용인데 구체적으로 써보면
예스스탁에서 배열변수를 이용해서 이동평균을 구하는 식입니다.
선물 시세가 수신될때마다
시세가 직전시세보다 높으면 변수 a1에 그 거래량을 저장하고
1. 이 거래량의 30, 100, 이동평균과
2. 시스템 시작후 수집된 a1데이터의 전체평균을 구하는 겁니다. (수만건이 될수도 있습니다.)
변수를 배열변수로 지정하고 for문을 쓰면 된다고 하셨는데 우둔한 머리로 힘드네요.
수식을 부탁드리겠습니다.
2018-11-02
2774
글번호 224651
dean 님에 의해서 삭제되었습니다.
2018-10-31
1
글번호 224650
답변완료
종목관계 없이 몇일 후 잔고 청산
1.앞에 주신 1797번 답변은 매수는 되나 청산이 안되어
2.종목 선택하여 저장했다 청산 되는 수식이나 또는 청산 신호시 종목 관계없이 잔고 있으면 5계약식 5초 간격으로 청산되는 수식 원합니다.
var CallOrderCode, PutOrderCode;
var Direction,Code,BEcnt,BXcnt,SEcnt,SXcnt;
var MaxEntryVol = 5;
var MaxExitVol;
function Main_OnStart()
{
Main.MessageList("시작");
}
function C1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1 )
{
Main.MessageList("매수진입신호발생");
//내부파일에서 DD와 CC라는 이름으로 저장된 값을 가져와 Direction,Code변수에 저장
Direction = Main.GetUserValue("DD");
Code = Main.GetUserValue("CC");
//Direction이 1이나 -1이 아닐때 수행
if (Direction != 1 || Direction != -1)
{
Direction = 1;
Code = Option.GetATMCallRecent(0);
//방향과 종목코드를 내부파일에 DD,CC라는 이름으로 저장
Main.SetUserValue("DD", Direction);
Main.SetUserValue("CC", Code);
//매수주문
var UNum = Option.uppersATM;
var LNum = Option.lowersATM;
//콜옵션중 1.0에 가장 가까운 종목
//콜옵션 모든 종목을 현재가-1.0을 해서 절대값을 취해 저장
var CallCode = new Array(UNum+LNum+1);
var CallPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.0);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var AA = 99999999;
CallOrderCode = "";
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < AA)
{
AA = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum]
}
}
A1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(Code,2), 0);
BEcnt = 1;
//1번 타이머 5초 셋팅
Main.SetTimer(1,5000);
}
}
if (Signal.signalKind == 2 )
{
Main.MessageList("매수청산신호발생");
//내부파일에서 DD와 CC라는 이름으로 저장된 값을 가져와 Direction,Code변수에 저장
Direction = Main.GetUserValue("DD");
Code = Main.GetUserValue("CC");
//Direction이 1이면
if (Direction == 1)
{
//Direction을 0으로 초기화
Direction = 0;
//내부파일에 DD와 CC에 저장값도 초기화
Main.SetUserValue("DD", 0);
Main.SetUserValue("CC", " ");
//잔고를 세팅
A1.SetBalance(Code, 0);
//잔고수량이 있으면
if (A1.Balance.count > 0)
{
//보유수량 저장
MaxExitVol = A1.Balance.count;
//1계약 매도주문
A1.OrderSell(Code,1,Option.GetBidByCode(Code, 2), 0);
BXcnt = 1;
//보유수량이 2계약 이상이면
if (MaxExitVol >= 2)
{
//2번 타이머 5초 셋팅
Main.SetTimer(2,5000);
}
}
}
}
중략
2018-11-12
2750
글번호 224647
dean 님에 의해서 삭제되었습니다.
2018-10-23
13
글번호 224642
답변완료
질문드립니다.
질문> 함수객체를 만들어 쓰고 싶습니다.
OrderFunction(시그널, 코드, 수량, 호가)
이렇게 만들고 싶은데..
수량에 따라서 주문이 다르게 들어가는 함수를 만들고 싶습니다.
JHoga를 Ask와 Bid의 주문호가로 지정하고 싶습니다.
가이드 식이나 비슷한 수식이 있을런지요?
아래는 만들다가 못만든 수식입니다.
function OrderFunction(JSignal, JCode, JCount, JHoga)
{
var S;
var OrderCode;
function Main_OnStart()
{ OrderCode = Main.GetOrderCode(JCode);
Main.ReqMarketData(Main.GetOrderCode(JCode));
}
function C1_OnRiseSignal(Signal)
{
S = new OrderFunction(Signal.signalKind,OrderCode,Signal.count);
if (Signal.count == 1)
{
if (Signal.signalKind == 1)
{
A1.OrderBuy(OrderCode, 2, NextData.Ask(JHoga), 0);
Main.MessageList("코드 : ",OrderCode);
Main.MessageList("호가 : ",JHoga);
}
if (Signal.signalKind == 2)
{
A1.OrderSell(OrderCode, 4, NextData.Bid(JHoga), 0);
Main.MessageList("코드 : ",OrderCode);
Main.MessageList("호가 : ",JHoga);
}
}
/*
if (S.JumunCount == 3)
{
if (S.JumunSignal == 1)
}
else
{
}*/
}
function Main_OnRcvMarketData(MarketData)
{
NextData = MarketData;
}
}
만들다가 못 만들었는데요. 가이드 식 좀 도와주실수 있는지요?
2018-11-12
2752
글번호 224636