답변완료
질문드립니다.
안녕하세요.
제가 아래와 같이 선물 챠트 신호에 따라 옵션을 매매하는 수식을 작성해 보았는데요.
다음과 같이 청산식을 수정하고자 질문드립니다.
진입 - 기존 수식과 동일
청산1 - 챠트1 그리고 챠트2의 동시매수신호 발생시점의 선물가격이 1pt상승하면... 보유한 콜옵션 3개를 청산한다.
청산2 - 챠트1 또는 챠트2에서 매수익절신호(2) 또는 매도신호(3)이 발생하면 보유한 콜옵션 전량을 청산한다.
감사합니다.
--------------------------------------------------------------------------------------
var S1;
var S2;
var MP;
var Callcode;
function Main_OnStart()
{
S1 = 0;
S2 = 0;
MP = 0;
}
function Chart1_OnRiseSignal(Signal)
{
S1 = Signal.signalKind;
if (S1 == 1 && S2 == 1)
{
Callcode = Option.GetATMCallRecent(2,0);
Account1.OrderBuy(Callcode, 6, Option.GetAskByCode(Callcode, 2), 0);
MP = 1;
}
if (MP == 1 &&(S1 == 2 || S1 == 3))
{
MP = 0;
{
Account1.OrderSell(Callcode, 6, Option.GetBidByCode(Callcode, 2), 0);
}
}
2013-10-01
840
글번호 222597
답변완료
변수조합하여 일괄처리
안녕하세요. 늘 수고하십니다.
질문이 있어 이렇게 또 글을 올립니다.
미리 감사하구요 ^^
질문1: 스팟의 종목개체를 추가하여 , 객체명은 Stock1 ~ Stock10 이렇게 만들고
이 종목의 현재가를 for로 처리하여 배열에 저장하는 수식을 만들려고 했는데
변수에 저장하면 문자열로 인식하여 제대로 작동을 하지 않는것 같네요.
이처럼 일괄로 처리하려면 어떻게 하는지 궁금합니다.
S_CurPrc = new Array(20);
var Adder;
function Main_OnStart()
{
for(i=1; i<=10; i++)
{
Adder = 'Stock'+ i +'.' + 'current';
S_CurPrc[i] = Adder;
S_CurPrc[19] = Stock1.current;
Main.MessageList("조합 i",i, "Adder",Adder
,"S_CurPrc",S_CurPrc[i],"S_CurPrc[19]",S_CurPrc[19]
);
}
}
질문2: 데이터 베이스 처리문제
스팟의 메뉼얼을 보고 선물의 현재가를 MS-SQL 처리 하였는데, 이를 다음을 이용하여
처리하여 배열에 저장할 수 있는지 궁금합니다.
GetFieldValue(nIndex)
설 명 : 현재 레코드의 각 필드별 데이터를 반환합니다.
반 환 값 : 문자열
매개변수 : nIndex – 정수, 필드의 인덱스를 입력합니다.
2013-09-27
922
글번호 222594
답변완료
트레일링 문의 드립니다.
밑에 수식에서 지속적으로 트레일링을 작동 시킬려면 어떻게 해야되나요?
처음 실행할때만 작동이되고 지속적으로 작동이 안되는거 같아서요. ㅜㅜ
var Nth = 0;
var ItemCode = [];
var ItemObject = [];
var ItemHigh = [];
var Bnum;
function Main_OnStart()
{
Nth = 0;
Bnum = Account1.GetTheNumberOfBalances()
Main.MessageList("잔고종목수",Bnum);
if (Bnum > 0)
{
//계좌의 잔고리스트에서 첫번째 잔고 셋팅
Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작
//셋팅된 잔고의 수량이 0이상이면
if (Account1.Balance.count > 0)
{
//1번째 종목객체 생성요청
Main.ReqMarketData(Account1.Balance.code, 0,0);
//ItemCode의 [Nth]번째 방에 종목코드 저장
ItemCode[Nth] = Account1.Balance.code;
Main.MessageList("종목객체요청",Account1.Balance.code);
}
}
}
//요청한 종목객체 수신되면
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList("종목객체수신",MarketData.code);
//수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에
if (MarketData.code == ItemCode[Nth])
{
ItemObject[Nth] = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장
ItemHigh[Nth] = 0; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최고값 계산해 저장할 변수)
Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemObject[Nth].code);
//순번은 1 증가
Nth = Nth+1;
//종목객체 수신완료되면 다음 종목 종목객체 요청
if (Bnum > 0)
{
//계좌의 잔고리스트에서 다음 순번 잔고 셋팅
Account1.SetBalanceIndex(Nth);
//셋팅된 잔고의 수량이 0이상이면
if (Account1.Balance.count > 0)
{
//Nth번째 종목객체 생성요청
Main.ReqMarketData(Account1.Balance.code, 0,0);
//ItemCode의 [Nth]번째 방에 종목코드 저장
ItemCode[Nth] = Account1.Balance.code;
Main.MessageList("종목객체요청",Account1.Balance.code);
}
}
}
}
수식이 써지지 않아 첨부했습니다. ^^;;;;
2013-09-30
875
글번호 222593