커뮤니티

이렇게 하면 될까요?

프로필 이미지
마루아빠
2013-10-25 21:13:56
173
글번호 68879
답변완료
/*스크립트시작-----------------------------------------------------*/ var Vol; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; //선물지수 차트의 진입/청산 기준을 이용하여 //프리미엄 3.0 이하의 콜옵션과 풋옵션중에 3.0 에 가장 근접하는 콜/풋 종목을 찾고 //선물지수 차트의 기준에 따라 매매할려고 하는데, //3.0 이하에서 가장 3.0 에 근접하는 종목이 찾아져서 매매에 적용되는지? //또한 적용된 옵션의 진입/청산가격은 선물지수차트의 기준대로 실행되는지를 //검증하려고 다음과 같이 수식을 만들었습니다. //테스트를 해 본 결과 //3.0 이하의 종목중 3.0 에 가장 근접하는 작업은 잘 이루어 지는 듯 한데 //그 진입종목과 진입가격 또는 청산종목과 청산가격이 제대로 출력이 안 되는 듯 합니다. function Main_OnStart() { Main.MessageLog("시작"); } if ( 콜옵션 신규진입조건~~~) { //옵션 3.0 이하 종목 중 3.0 에 가장 가까운 콜/풋 종목을 찾음 UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); // 콜종목 찾기 for (var i = -LNum; i <= UNum; i++) { //값이 3.0 이하이면 if (Option.GetCurrent(0, i) <= 3.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else //값이 3.0 보다 크면 { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } var CC = -1; var CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum]; } } //콜매수(이때 디버깅창에서 진입옵션종목 과 그 진입가격을 확인하고자 //다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를 //메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만 //뜹니다.) if (CC > -1) { Main.MessageList("CALL옵션 매수신호 발생"); Account1.OrderBuy(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0); Main.MessageList("CALL옵션 신규매수 진입",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol); } } if (콜옵션 매수청산 조건~~~) //콜매수 청산 (이때 디버깅창에서 청산되는 옵션종목(진입했던)) 과 그 청산가격을 확인하고자 //다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를 //메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만 //뜹니다.) { Main.MessageList("CALL옵션 매수청산신호 발생"); Account1.OrderSell(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0); Main.MessageList("CALL옵션 매수청산 실행",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-10-28 11:05:41

안녕하세요 예스스탁입니다. 예스스팟 문의는 예스스팟 Q&A에만 올려주시기 바랍니다. 동일 내용을 예스스팟 Q&A에 올려주셨으므로 해당 게시판에서 순차적으로 답변드리겠습니다. 즐거운 하루되세요 > 마루아빠 님이 쓴 글입니다. > 제목 : 이렇게 하면 될까요? > /*스크립트시작-----------------------------------------------------*/ var Vol; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; //선물지수 차트의 진입/청산 기준을 이용하여 //프리미엄 3.0 이하의 콜옵션과 풋옵션중에 3.0 에 가장 근접하는 콜/풋 종목을 찾고 //선물지수 차트의 기준에 따라 매매할려고 하는데, //3.0 이하에서 가장 3.0 에 근접하는 종목이 찾아져서 매매에 적용되는지? //또한 적용된 옵션의 진입/청산가격은 선물지수차트의 기준대로 실행되는지를 //검증하려고 다음과 같이 수식을 만들었습니다. //테스트를 해 본 결과 //3.0 이하의 종목중 3.0 에 가장 근접하는 작업은 잘 이루어 지는 듯 한데 //그 진입종목과 진입가격 또는 청산종목과 청산가격이 제대로 출력이 안 되는 듯 합니다. function Main_OnStart() { Main.MessageLog("시작"); } if ( 콜옵션 신규진입조건~~~) { //옵션 3.0 이하 종목 중 3.0 에 가장 가까운 콜/풋 종목을 찾음 UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); // 콜종목 찾기 for (var i = -LNum; i <= UNum; i++) { //값이 3.0 이하이면 if (Option.GetCurrent(0, i) <= 3.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else //값이 3.0 보다 크면 { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } var CC = -1; var CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum]; } } //콜매수(이때 디버깅창에서 진입옵션종목 과 그 진입가격을 확인하고자 //다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를 //메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만 //뜹니다.) if (CC > -1) { Main.MessageList("CALL옵션 매수신호 발생"); Account1.OrderBuy(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0); Main.MessageList("CALL옵션 신규매수 진입",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol); } } if (콜옵션 매수청산 조건~~~) //콜매수 청산 (이때 디버깅창에서 청산되는 옵션종목(진입했던)) 과 그 청산가격을 확인하고자 //다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를 //메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만 //뜹니다.) { Main.MessageList("CALL옵션 매수청산신호 발생"); Account1.OrderSell(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0); Main.MessageList("CALL옵션 매수청산 실행",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol); } }