답변완료
일일손실제한 다음 식을 사용해도 되나요?
항상 감사드립니다.
여러개의 스팟식을 사용해서 포트폴리오 매매를 하고 있습니다.
아래 조건으로 스팟식을 만들고자 합니다.
금일 매매중에 총 100만원 손실 보고 있을시 모든 포지션 청산하고 + 금일은 추가 매매금지
var i1;
var X;
var dayloss = 1000000;
//스팟 시작시
function Main_OnStart()
{
//i1에 예수금/예탁총액 저장
i1 = ACC.GetBalanceETCinfo(0);
X = 0;
Main.SetTimer(1, 5000);//5초 타이머 셋팅
}
function Main_OnTimer(nEventID)
{
// 현재 정산금이 스팟시작시값보다 ""dayloss"" 이상 감소했으면
if (nEventID == 1 && ACC.GetBalanceETCinfo(100) <= i1-dayloss)
{
//타이머 중지
Main.KillTimer(1);
var Bnum = ACC.GetTheNumberOfBalances();
for(var i = 0; i < Bnum; i++)
{
ACC.SetBalance(i);
//콜이나 풋이면
if (ACC.Balance.code.substring(0,1) == "2" || ACC.Balance.code.substring(0,1) == "3")
{
// 포지션 청산
if (ACC.Balance.position == 1)
ACC.OrderBuy(ACC.Balance.code,ACC.Balance.count,0,1);
if (ACC.Balance.position == 2)
ACC.OrderSell(ACC.Balance.code,ACC.Balance.count,0,1);
}
}
X = 1;
}
}
1. 위의 식에 오류는 없나요?
2. 812글 답변에 보면
//현재 예수금/예탁총액이 스팟시작시값보다 20% 이상 감소했으면
if (nEventID == 1 && Account1.GetBalanceETCinfo(0) <= i1*0.8)
{
이라는 부분이 나옵니다.GetBalanceETCinfo(0) 값은 "예수금"인데 , 0 대신 100 "정산금" 값이 실시간 값 아닌지요?
3. 다른 스팟 주문식에 && X ==0 을 넣으라고 하셨는데 , 이 때 그 주문식에도 var X; 라고 정의를 해야 하나요?
4. 만일 3개의 스팟식을 운영한다고 할 때 저 조건식을 3개의 스팟식에 모두 넣어야 하는지요?
5. 아니면 하나의 스팟식에서 변수를 정의하면 동시에 실행하는 다른 스팟식에도 두루 사용할 수 있는지도 궁금합니다.
=======
전화통화로 해결되었습니다. 감사드립니다^^
2017-03-03
2484
글번호 224131
답변완료
시스템적용후 강제청산시 에라
1.시스템은
수동진입 시스템청산 으로 되어있습니다.
그런데, 수동진입후, 불가피하게 수동청산을 하게되는경우가 있는데, 다시 수동 재 진입하게 되면,
"TypeError :cannot read property 'code'of undefined
메시지가 출력되며,멈추게 됩니다.
처리를 어떻게 해야할까요?
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)
{
for (var i=1 ; i <= Nth ; i++) //편입된 종목수 만큼만 수행
{
if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)
2. 수동주문에 대해 OCO 주문발생 하는 방법
아래처럼, 주문취소식을 넣었으나, 수동주문한 것에 대한 취소가 되지 않습니다.
강제 취소할 수 있는 방법은 없는지요?
예) 272.0 매수진입, 로스컷 0.20 , 손주문 272.30 예약
로스컷 발생전 손주문한 272.30 주문 취소.
if (ItemObject[i].current <= Account1.Balance.avgUnitCost - ItemObject[i].GetTickSize()*LosscutTick)//손절
{
//매수청산하려는데 매수익걸 매도주문 미체결 있으면 취소
Account1.SetUnfill(SellNum);
if (Account1.Unfill.count > 0)
{
Account1.OrderCancel(SellNum);
}
BuyAvg = Account1.Balance.avgUnitCost;
BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, ItemObject[i].Bid(1), 2);
T = 1;
Main.MessageLog("매수손절");
2017-02-21
2603
글번호 224124
답변완료
SendInterests 와 GetItemCountOfInterest 가 오작동합니다.
Main.SendInterests(name, codesToAdd, true);
- 이 끝에 인자를 false로 바꿔서 종목 코드들을 대체하려고 하면
예스트레이더가 멈춥니다.
다시 켜서 해당 관심종목에 들어가보면 대체가 아니라 추가되어 있습니다.
- 또한, 기존에 있는 관심종목에 true 로 추가하는 코드를 사용해도
두세번 이상 하다보면 트레이더가 멈춥니다.
Main.GetItemCountOfInterest(name);
- SendInterests 를 실행해서 새로 만들어진 관심종목을 읽을 때
예스트레이더가 멈추는 현상이 발생합니다.
2017-02-07
2685
글번호 224113