답변완료
문의드립니다
/*스크립트시작-----------------------------------------------------*/
function Main_OnStart()
{
Main.MessageLog("시작")
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMDD >= 150600)
{
Main.KillTimer(1);
num = A1.GetTheNumberOfBalances();
for(var i = 0; i < num; i++)
{
A1.SetBalanceIndex(i);
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code,A1.Balance.count,0,1);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code,A1.Balance.count,0,1);
}
}
}/*스크립트끝-------------------------------------------------------*/
메뉴얼에 나와있는 동시호가 청산 수식 예제입니다.
잔고를 모두 청산하게 되어있는데
통장잔고를 모두 청산하는 방식이 아닌 특정 차트를 동시호가 청산하는 방식을 하고자 합니다.
꼭 필요한 방식인데 스팟에 너무 무능해서 모르겠네요
언제나 감사드립니다.
2021-06-03
2792
글번호 225496
답변완료
에러 문의드립니다
수고하십니다
농협선물을 이용하는데 자꾸 코드번호가 안 맞다고 나옵니다
function c1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
a1.OrderBuy(Main.GCM21, 1, 0, 1);
}
if (Signal.signalKind == 3)
{
a1.OrderSell(Main.GCM21, 1, 0, 1);
}
}
Main.GCM21을 Main없이 GCM21만 넣어도 마찬가지네요
2021-05-14
2729
글번호 225482
답변완료
수식 설명좀 부탁합니다.
이수식이 무엇을 말하는지 아시는분있으면 쉽게
한글로 풀이좀 해주세요..
indip = input(1,type=bool,title="Use current timeframe?")
tf = (indip==0?(input('60',type=resolution,title="Timeframe (only if previous opt is unflagged)")):period)
Timeframem = (tf=='D'?'M':(tf=='240'?'W':(tf=='120'?'W':(tf=='60'?'W':(tf=='15'?'640':(tf=='5'?'360':'na'))))))
Timeframed = (tf=='D'?'2W':(tf=='240'?'2D':(tf=='120'?'2D':(tf=='60'?'D':(tf=='15'?'360':(tf=='5'?'180':'na'))))))
Timeframeh = (tf=='D'?'W':(tf=='240'?'D':(tf=='120'?'D':(tf=='60'?'720':(tf=='15'?'180':(tf=='5'?'90':'na'))))))
chm = security(tickerid, Timeframem, open)
chm1 = security(tickerid, Timeframem, close)
defm = (chm1/chm) -1
chd = security(tickerid, Timeframed, open)
chd1 = security(tickerid, Timeframed, close)
defd = (chd1/chd) -1
chh = security(tickerid, Timeframeh, open)
chh1 = security(tickerid, Timeframeh, close)
defh = (chh1/chh) -1
output = defm>0?(defd>defh?defd:defh):(defd>defh?defh:defd)
plot(output,linewidth=2,color=output>0?lime:red,transp=50,style=area)
plot(defh,color=defh>0?lime:red,transp=0,linewidth=1)
plot(defh,color=defh>0?lime:red,transp=75,style=area)
hline(0)
2021-04-25
2870
글번호 225476
답변완료
수식 수정 및 질문
아래수식을 게시판에서
받아서 모의로 실행하면 안돼는게 있어서 질문드립니다.
1. 관심종목등록이 안되네요.
2. 종목검색중 검색되다가 -1로 시간초과후 멈춤니다.
3. 매수주문은 들어가는데 체결이 안됩니다.
원인이 무엇인지 설명부탁드리며, 수식보완 부탁합니다.
var 검색주기 = 60;//60초
var 종목수 = 50;
var 매수금액 = 1000000;
var ItemList = [],MK = [],HH = [];
var HHMMSS,req;
function Main_OnStart()
{
Main.SetTimer(1, 60000);
Main.MessageList("start");
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//9시 이후에 2분간격으로 종목검색 50종목 이하
if (nEventID == 1 && HHMMSS >= 090100 && MK.length < 종목수)
{
Main.KillTimer(1);
Main.MessageList("종목검색 요청");
Main.ReqPowerSearch("단타A");
}
}
// 검색종목 관심등록
function Main_OnRcvItemList(aItemList, nCount)
{
if (nCount > 0)
{
Main.SendInterests("관심단타A", aItemList, false);
Main.MessageList("관심종목 등록");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("종목검색 완료 nCount : ",nCount,MK.length);
Main.MessageList("종목검색 완료 aItemList : ",aItemList);
if (nCount > 0)
{
ItemList = [];
//첫검색일때
if (MK.length == 0)
{
ItemList = aItemList;
}
else //두번쨰 이후(차트가 만들어진 종목을 제외하고 새로운 종목만 집계)
{
for (var i = 0; i < nCount; i++ )
{
var add = true;
for (var x = 0; x < MK.length; x++ )
{
if (aItemList[i] == MK[x].code)
{
add = false;
}
}
if (add == true)
{
ItemList.push(aItemList[i]);
}
}
}
if (ItemList.length > 0 && MK.length < 종목수)
{
req = 0;
Main.MessageList("종목객체요청 : ",ItemList[req]);
Main.ReqMarketData(ItemList[req]);
}
else
{
if (MK.length < 종목수)
{
Main.SetTimer(1, 검색주기*1000);
}
}
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == ItemList[req])
{
Main.MessageList("종목객체생성:",req,MarketData.code);
MK.push(MarketData);
HH.push(MK[req].current);//최고가 초기값은 현재가
Main.MessageList("매수주문:",MarketData.code);
//매도5호가로 매수금액만큼 매수주문
Account1.OrderBuy(MarketData.code,Math.floor(매수금액/MarketData.Ask(5)),MarketData.Ask(5),0);
req = req+1;
if (req < ItemList.length && MK.length < 종목수)
{
Main.MessageList("종목객체요청 : ",ItemList[req]);
Main.ReqMarketData(ItemList[req]);
}
else
{
Main.MessageList("종목객체생성완료");
if (MK.length < 50)
{
Main.SetTimer(1, 검색주기*1000);
}
}
}
}
function Main_OnUp*ateMarket(sItemCode, lUp*ateID)
{
if (lUp*ateID == 20001)
{
for (var i = 0; i < MK.length; i++)
{
//업데이트된 종목을 찾아
if (MK[i].code == sItemCode && HH[i] > 0)
{
//현재가가 저장된 최고가 보다 크면 최고가를 현재가로 변경
if (MK[i].current > HH[i])
{
HH[i] = MK[i].current;
}
//잔고셋팅
Account1.SetBalance(MK[i].code, 0);
//최고가는 평단가 대비 20이상 크고 현재가가 평단가 대비 15% 이하로 내려오면 매수5호가로 전량 매도
if (HH[i] >= Account1.Balance.avgUnitCost*1.20 &&
MK[i].current <= Account1.Balance.avgUnitCost*1.10)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MK[i].Bid(5),0);
//HH[i]는 -1로 저장하여 이후 감시하지 않게 함
HH[i] = -1;
Main.MessageList("종목객체삭제 : ",S);
var S = Main.RemoveObject(MK[i]);
MK.splice(i,1);
}
}
}
}
}
2021-04-22
2691
글번호 225473