답변완료
수정문의
검증시 에러메세지가 뜨는데 확인부탁드립니다
감사합니다,
var Start;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
function Main_OnStart()
{
Start = 0;
}
function Chart1_OnRiseSignal(Signal)
{
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) <= 3.0 && Option.GetCurrent(0, i) >= 1.5)/
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = 9999999;
CallCode[i+LNum] = 9999999;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(1, ii) <= 3.0 && Option.GetCurrent(1, ii) >= 1.5)
{
PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.3);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = 9999999;
PutCode[ii+UNum] = 9999999;
}
}
//buy신호 발생시
if (Signal.signalKind == 1)
{
Start = 1;
CC = 9999999;
CallOrderCode = 9999999;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] < CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum]
}
}
if (CC < 9999999)
{
Account1.OrderSell(CallOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
// Exitlong신호 발생시
if (Start == 1 && Signal.signalKind == 2)
{
Start = 0;
if (CC > 0)
{
Account1.OrderBuy(CallOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//sell신호 발생시
if (Signal.signalKind == 3)
{
Start = -1;
PP = 9999999;
PutOrderCode = 9999999;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] < PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (PP < 9999999)
{
Account1.OrderSellPutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//exitshort신호 발생시
if ( Start == -1 && Signal.signalKind == 4)
{
Start = 0;
if (PP > 0)
{
Account1.OrderBuy(PutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
}
2013-11-18
810
글번호 222713
답변완료
문의
아래는 몇일전에 수정해주신 옵션매수식 인데요,
이것을 옵션매도로 바꾸고싶네요.
옵션가격 1.5 ~ 3 사이중 (2.3)에 가장 가까운 옵션매도로 수정 부탁드립니다.
감사합니다.
var Start;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
function Main_OnStart()
{
Start = 0;
}
function Chart1_OnRiseSignal(Signal)
{
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) <= 2.0 && Option.GetCurrent(0, i) >= 1.0)
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.5);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = 9999999;
CallCode[i+LNum] = 9999999;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0)
{
PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-1.5);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = 9999999;
PutCode[ii+UNum] = 9999999;
}
}
//buy신호 발생시
if (Signal.signalKind == 1)
{
Start = 1;
CC = 9999999;
CallOrderCode = 9999999;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] < CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum]
}
}
if (CC < 9999999)
{
Account1.OrderBuy(CallOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
// Exitlong신호 발생시
if (Start == 1 && Signal.signalKind == 2)
{
Start = 0;
if (CC > 0)
{
Account1.OrderSell(CallOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//sell신호 발생시
if (Signal.signalKind == 3)
{
Start = -1;
PP = 9999999;
PutOrderCode = 9999999;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] < PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (PP < 9999999)
{
Account1.OrderBuy(PutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//exitshort신호 발생시
if ( Start == -1 && Signal.signalKind == 4)
{
Start = 0;
if (PP > 0)
{
Account1.OrderSell(PutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
}
2013-11-08
856
글번호 222705
답변완료
문의번호 759 관련입니다.
안녕하세요? 항상 수고 많으십니다.
저는 차트의 데이터를 GetIndicatorData(~~~)를 사용해서,완성신호가 아닌
지표검색으로 스팟수식을 작성하고 이를 수동매매하던 스캘핑에 적용하려고,
계속 시험적용으로 검토하고 있습니다.
저의 매매기준대로 지금의 스팟수식은 스캘핑을 위한 신속한 진입은 잘 이루어 지고 있어서,
감사드립니다.
하지만, 스캘핑의 속성상 STOP 매매를 해야 할 때가 허다합니다.
저의 매매기준이 잘 못 고안되어서 발생하는 청산손실은 제가 감수해야만 합니다만,
진입은 잘 이루어 지고 또한, 적절한 수익을 찍고도,
저항에 밀려서 손실로 청산되는 것을 방지하고 싶습니다.
그래서, 스탑(일정한 수익틱을 정해 놓고)을 적용하려고
귀사의 질의응답의 내용으로 시험적용해 봤습니다만,
원만한 결과물을 도출하지 못했습니다.
실 거래가 아닌 시험적용에서는
//계좌에 선물 종목이 편입될 때
function Main_OnUp*dateAccount(sAccntNum,sItemCode,IUp*dateID) 과
//선물종목 시세 업데이트가 되면 잔고 셋팅
function Main_OnUp*dateMarket(sItemCode,IUp*dateID) 이 작동하지 않는 건가요?
시험적용에서 작동하지 않는다면 검증해 보지 못 한 것을 실 거래에 적용할 수 없으니,
얼른 포기하려구요.
만일, 시험적용에서 검증할 방도가 있다면, 제가 만들어 놓은 수식으로 다시 질의드리려고
합니다.
감사합니다.
2013-11-08
798
글번호 222704