아래식을 이용해서 수정하고 싶습니다.
한 계좌에서 해외선물 여러종목을 동시에 매매할껀데요
계좌의 감시를 하다가 여려 종목들의 합산 수익이 20만원이 되면 모든종목청산
합산손실이 -20만원이면 모든종목청산을 하고 싶습니다.
아래식을 이용해서 위 전략을 작성할수 있나요
아래식을 이용하면 종목당 틱가치나 틱단위가 서로 달라서 문제가 있을것 같은데요...
도움 부탁드리겠습니다.
function Main_OnStart()
{
Main.MessageList("계좌감시 시작");
//타이머 셋팅
Main.SetTimer(1, 5000);
//스팟시작시 잔고가 있으면 true
if (Account1.GetTheNumberOfBalances() >= 1)
Exit = true;
else// 아니면 false
Exit = false;
}
function Main_OnTimer(nEventID)
{
var num = Account1.GetTheNumberOfBalances();
//Exit은 true이고 계좌에 1종목이상 있음
if (Exit == true && num >= 1)
{
var sum1 = 0;
var sum2 = 0;
var PL = 0;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
sum1 = sum1 + Account1.Balance.avgUnitCost * Account1.Balance.count; //평단가 곱하기 수량
sum2 = sum2 + Account1.Balance.current * Account1.Balance.count; //현재가 곱하기 수량
PL = PL + (sum2-sum1); //손익
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
sum1 = sum1 + Account1.Balance.avgUnitCost * Account1.Balance.count;
sum2 = sum2 + Account1.Balance.current * Account1.Balance.count;
PL = PL + (sum1-sum2);
}
}
//전체종목의 손익이 -이고 평단가기준 총평가금액의 10% 이상이면 전체종목 청산
//Exit은 false로
if (PL < 0 && Math.abs(PL) >= sum1*0.10)
{
Exit = false;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
}
}
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거
{
//잔고에 새로운 종목이 추가되면 true로 변경하고 타이머 셋팅
if (Exit == false && sAccntNum == Account1.number && lUp*dateID == 30001)//*제거
{
Exit = true;
}
}
답변 1
예스스탁
예스스탁 답변
2018-02-06 14:13:51
안녕하세요
예스스탁입니다.
문의하신 내용은 가능하지 않습니다.
국내선물의 경우도 마찬가지이지만 해외선물도
계좌 잔고에 해당 종목이 틱가치가 제공되지 않습니다.
국내 선물이나 옵션의 경우에는 1포인트당 모두 25만원이기에
당일 손익을 원화로 계산이 가능하지만
해외선물은 각 종목의 한틱의 값도 다르고 환율정보도 없어
수식에서 계산이 되지않습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 수다리 님이 쓴 글입니다.
> 제목 : 스팟 문의드립니다.
> 아래식을 이용해서 수정하고 싶습니다.
한 계좌에서 해외선물 여러종목을 동시에 매매할껀데요
계좌의 감시를 하다가 여려 종목들의 합산 수익이 20만원이 되면 모든종목청산
합산손실이 -20만원이면 모든종목청산을 하고 싶습니다.
아래식을 이용해서 위 전략을 작성할수 있나요
아래식을 이용하면 종목당 틱가치나 틱단위가 서로 달라서 문제가 있을것 같은데요...
도움 부탁드리겠습니다.
function Main_OnStart()
{
Main.MessageList("계좌감시 시작");
//타이머 셋팅
Main.SetTimer(1, 5000);
//스팟시작시 잔고가 있으면 true
if (Account1.GetTheNumberOfBalances() >= 1)
Exit = true;
else// 아니면 false
Exit = false;
}
function Main_OnTimer(nEventID)
{
var num = Account1.GetTheNumberOfBalances();
//Exit은 true이고 계좌에 1종목이상 있음
if (Exit == true && num >= 1)
{
var sum1 = 0;
var sum2 = 0;
var PL = 0;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
sum1 = sum1 + Account1.Balance.avgUnitCost * Account1.Balance.count; //평단가 곱하기 수량
sum2 = sum2 + Account1.Balance.current * Account1.Balance.count; //현재가 곱하기 수량
PL = PL + (sum2-sum1); //손익
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
sum1 = sum1 + Account1.Balance.avgUnitCost * Account1.Balance.count;
sum2 = sum2 + Account1.Balance.current * Account1.Balance.count;
PL = PL + (sum1-sum2);
}
}
//전체종목의 손익이 -이고 평단가기준 총평가금액의 10% 이상이면 전체종목 청산
//Exit은 false로
if (PL < 0 && Math.abs(PL) >= sum1*0.10)
{
Exit = false;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
}
}
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거
{
//잔고에 새로운 종목이 추가되면 true로 변경하고 타이머 셋팅
if (Exit == false && sAccntNum == Account1.number && lUp*dateID == 30001)//*제거
{
Exit = true;
}
}