항상 감사드립니다.
여러개의 스팟식을 사용해서 포트폴리오 매매를 하고 있습니다.
아래 조건으로 스팟식을 만들고자 합니다.
금일 매매중에 총 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. 아니면 하나의 스팟식에서 변수를 정의하면 동시에 실행하는 다른 스팟식에도 두루 사용할 수 있는지도 궁금합니다.
=======
전화통화로 해결되었습니다. 감사드립니다^^
답변 1
예스스탁
예스스탁 답변
2017-03-15 18:18:14
> 피니트 님이 쓴 글입니다.
> 제목 : 일일손실제한 다음 식을 사용해도 되나요?
> 항상 감사드립니다.
여러개의 스팟식을 사용해서 포트폴리오 매매를 하고 있습니다.
아래 조건으로 스팟식을 만들고자 합니다.
금일 매매중에 총 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. 아니면 하나의 스팟식에서 변수를 정의하면 동시에 실행하는 다른 스팟식에도 두루 사용할 수 있는지도 궁금합니다.
=======
전화통화로 해결되었습니다. 감사드립니다^^