커뮤니티
오류검토요청
2017-02-20 18:44:00
135
글번호 107040
기교육내용중 수동진입 자동청산 시스템입니다.
조건 : 모의거래중
오류 : 수동진입시 스팟에 편입 메시지 나오지 않음.(물론 청산도 안됩니다.)
[계좌객체명은 Account1으로 설정]
처음이라, 세팅을 잘못했는지도 모르겠습니다. 조언 부탁드리겠습니다.
*금지어설정이 되어있어, 업데이트를 UD로 변경해서 올립니다.
var Nth = 0;
var ItemCode = new Array(10);
var ItemObject = new Array(10);
var ItemHigh = new Array(10);
//종목추가
function Main_OnUDAccount(sAccntNum, sItemCode, lUDID)
{
if (lUDID == 30001)
{
Nth = Nth + 1;//횟수
ItemCode[Nth] = sItemCode;
Main.ReqMarketData(ItemCode[cnt], 0,0);//종목개체 생성요청
Main.MessageList("@_@",Nth,"번째","신규종목편입 ",ItemCode,"> 종목객체요청");
}
}
//종목개체 생성완료
function Main_OnRcvMarketData(MarketData)
{
if(MarketData.code == ItemCode[Nth])
{
ItemObject[Nth] = MarketData;
ItemHigh = 0;
Main.MessageList(Nth,"번째","종목개체생성완료 : ",ItemObject[Nth].code)
}
}
function Main_OnUDMarket(sItemCode, lUDID)
{
for (var i=1 ; i <= Nth; i++) //편입된 종목수 만큼만 수행
{
if (ItemObject[i].code == sItemCode && lUDID ==20001)
{
//잔고세팅
Account1.SetBalanceItem(ItemObject[i].code,0 );
//종목편입이후 최고가 계산
if (ItemObject[i].current > ItemHigh[i])
{
ItemHigh[i]=ItemObject[i].current;
}
if (Account1.Balance.position ==2)
{
if (ItemObject[i].current >= Account1lUDID.Balance.avgUnitCost+ItemObject[i].GetTickSize()*6)//익절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*6)//손절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
if (ItemHigh[i].current >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*4 &&
ItemObject[i].current <= Account1.Balance.avgUnitCost + MarketData1.GetTickSize()*2)//익절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
}
}
}
}
}
- 1. 스팟문의1.JPG (0.22 MB)
답변 1
예스스탁 예스스탁 답변
2017-02-21 12:38:01
안녕하세요
예스스탁입니다.
1
수식에 오류가 있는 부분을 수정했습니다.
이후의 내용은 사용자분이 테스트 하시면서 수정보완해 가셔야 합니다.
2
스팟에 대한 문의는 스팟Q&Q게시판에 올려주시기 바랍니다
이후에는 스팟게시판으로 이동됩니다.
3
수정한 식입니다.
테스트 하면 첨부된 그림과 같이 나오게 됩니다.
var Nth = 0;
var ItemCode = new Array(10);
var ItemObject = new Array(10);
var ItemHigh = new Array(10);
//종목추가
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)
{
if (lUp*dateID == 30001)
{
Nth = Nth + 1;//횟수
ItemCode[Nth] = sItemCode;
Main.ReqMarketData(ItemCode[Nth], 0,0);//종목개체 생성요청
Main.MessageList("@_@",Nth,"번째","신규종목편입 ",ItemCode,"> 종목객체요청");
}
}
//종목개체 생성완료
function Main_OnRcvMarketData(MarketData)
{
if(MarketData.code == ItemCode[Nth])
{
ItemObject[Nth] = MarketData;
ItemHigh[Nth] = 0;
Main.MessageList(Nth,"번째","종목개체생성완료 : ",ItemObject[Nth].code)
}
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)
{
for (var i = 1; i <= Nth; i++) //편입된 종목수 만큼만 수행
{
if (ItemObject[i].code == sItemCode && lUp*dateID ==20001)
{
//잔고세팅
Account1.SetBalanceItem(ItemObject[i].code,0 );
//종목편입이후 최고가 계산
if (ItemObject[i].current > ItemHigh[i])
{
ItemHigh[i]=ItemObject[i].current;
}
if (Account1.Balance.position ==2)
{
if (ItemObject[i].current >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*6)//익절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*6)//손절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
if (ItemHigh[i] >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*4 &&
ItemObject[i].current <= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*2)//익절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
}
}
}
}
즐거운 하루되세요
> 심심00 님이 쓴 글입니다.
> 제목 : 오류검토요청
> 기교육내용중 수동진입 자동청산 시스템입니다.
조건 : 모의거래중
오류 : 수동진입시 스팟에 편입 메시지 나오지 않음.(물론 청산도 안됩니다.)
[계좌객체명은 Account1으로 설정]
처음이라, 세팅을 잘못했는지도 모르겠습니다. 조언 부탁드리겠습니다.
*금지어설정이 되어있어, 업데이트를 UD로 변경해서 올립니다.
var Nth = 0;
var ItemCode = new Array(10);
var ItemObject = new Array(10);
var ItemHigh = new Array(10);
//종목추가
function Main_OnUDAccount(sAccntNum, sItemCode, lUDID)
{
if (lUDID == 30001)
{
Nth = Nth + 1;//횟수
ItemCode[Nth] = sItemCode;
Main.ReqMarketData(ItemCode[cnt], 0,0);//종목개체 생성요청
Main.MessageList("@_@",Nth,"번째","신규종목편입 ",ItemCode,"> 종목객체요청");
}
}
//종목개체 생성완료
function Main_OnRcvMarketData(MarketData)
{
if(MarketData.code == ItemCode[Nth])
{
ItemObject[Nth] = MarketData;
ItemHigh = 0;
Main.MessageList(Nth,"번째","종목개체생성완료 : ",ItemObject[Nth].code)
}
}
function Main_OnUDMarket(sItemCode, lUDID)
{
for (var i=1 ; i <= Nth; i++) //편입된 종목수 만큼만 수행
{
if (ItemObject[i].code == sItemCode && lUDID ==20001)
{
//잔고세팅
Account1.SetBalanceItem(ItemObject[i].code,0 );
//종목편입이후 최고가 계산
if (ItemObject[i].current > ItemHigh[i])
{
ItemHigh[i]=ItemObject[i].current;
}
if (Account1.Balance.position ==2)
{
if (ItemObject[i].current >= Account1lUDID.Balance.avgUnitCost+ItemObject[i].GetTickSize()*6)//익절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*6)//손절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
Main.RemoveMarketData(ItemObject[i]);
}
if (ItemHigh[i].current >= Account1.Balance.avgUnitCost + ItemObject[i].GetTickSize()*4 &&
ItemObject[i].current <= Account1.Balance.avgUnitCost + MarketData1.GetTickSize()*2)//익절
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0, 1);
}
}
}
}
}
다음글
이전글