안녕하세요 아래 조건을 만족하는 수식부탁드립니다.
1분봉 선물 진입신호 발생하면 옵션 매수하는 수식입니다
1) 챠트에서 완성된 신호이전에 미완성 신호발생 즉시 1개 포지션 매수
진입은 선물이 아닌 옵션이며 매도는 하지않고 매수만 함
2) 매수후에 10틱 하락하면 1개 추가매수
3) 옵션행사가는 2.0 이상 3.0 이하만 매수함.
4) 챠트에서 청산신호 나오기전에 평균 매수가 대비 30틱 상승하면 청산
청산후에는 손익에 상관없이 더이상 거래 금지
수고하십시요..
답변 1
예스스탁
예스스탁 답변
2013-03-20 16:17:59
안녕하세요
예스스탁입니다.
문의하신 부분은 예스랭귀지로 가능하지 않고
예스스팟으로 처리하셔야 합니다.
예스스팟은 구동확인이 실시간에서만 가능하며
작성에 많은 시간이 소모되어 저희쪽에서 답변을 드리기에는 어려운 부분이 있습니다.
또한 주문과 관계된 사항들이 많으므로
사용자분이 직접 확인하시면서 작성해서 사용하셔야 합니다.
문의하신 내용 중 미완성 신호시 주문까지만 작성해 드립니다.
매신호마다 종목이 변경될수 있으므로 추가매수나 손절, 익절부분은
직접 작성해 사용하셔야 합니다.
아래식 참고하셔서 수정/보강하셔서 사용하시기 바랍니다.
미완성 신호시에 매수미완성은 콜매수, 매도미완성은 풋매수로 작성한 식입니다.
미완성신호는 포지션 상태와 무관하게 하나의 봉에서 매수와 매도가
동시에 발생할수도 있고 완성시 까지 수차례 발생하게 됩니다.
차트가 무포지션이면 buy나 sell신호 중 먼저 발생한 미완성신호에 따라 주문하며
차트가 매수포지션이면 해당봉에서 처음 발생한 sell미완성신호일때 주문
차트가 매도포지션이면 해당봉에서 처음 발생한 buy미완성신호일때 주문합니다.
하나의 봉에서 마지막 미완성은 판단할수가 없어 작성가능하지 않습니다.
스크립트 객체화면에 옵션객체, 계좌객체, 차트객체가 필요합니다.
계좌객체명 : Account1
차트객체명 : Chart1
var Start = 0;
var IncompleteCount = 0;
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_OnBarAppended(nData)
{
IncompleteCount = 0; //시가 발생하면 0으로 초기화
Start = 0;
}
function Chart1_OnRiseIncompleteSignal(IncompleteSignal)
{
//3.0~2.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++)
{
if (Option.GetCurrent(0, i) <= 3.0 && Option.GetCurrent(0, i) >= 2.0)
{
CallPrice[i+LNum] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = 9999;
CallCode[i+LNum] = 9999;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(0, i) <= 3.0 && Option.GetCurrent(0, i) >= 2.0)
{
PutPrice[ii+UNum] = Option.GetCurrent(1, ii);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = 9999;
PutCode[ii+UNum] = 9999;
}
}
var CC = 9999;
var CallOrderCode = 9999;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] < CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum]
}
}
var PP = 9999;
var PutOrderCode = 9999;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] < PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (Start == 1)
{
if (Chart1.GetOpenContracts()== 0 ) //차트상 무포지션일때
{
IncompleteCount = IncompleteCount+1; //모든 미완성 신호 카운트
if (IncompleteCount == 1)
{
if (IncompleteSignal.Signal == 1 && CC != 9999 )
Account1.OrderBuy(CallOrderCode, 1, 0, 1);
if (IncompleteSignal.Signal == 3 && PP != 9999)
Account1.OrderBuy(PutOrderCode, 1, 0, 1);
}
}
if (Chart1.GetOpenContracts() > 0 ) //차트상 매수포지션일때
{
if (IncompleteSignal.Signal == 3) // sell 미완성 신호만 카운트
IncompleteCount = IncompleteCount+1;
if (IncompleteCount == 1) //첫번째 미완성 신호일때
Account1.OrderBuy(PutOrderCode, 1, 0, 1);
}
if (Chart1.GetOpenContracts() < 0 ) //차트상 매도포지션일때
{
if (IncompleteSignal.Signal == 1) //buy 미완성신호일때만 카운트
IncompleteCount = IncompleteCount+1;
if (IncompleteCount == 1) //첫번째 미완성 신호일때
Account1.OrderBuy(CallOrderCode, 1, 0, 1);
}
}
}
즐거운 하루되세요
> bigdeal 님이 쓴 글입니다.
> 제목 : 시스템 수식 부탁드립니다.
> 안녕하세요 아래 조건을 만족하는 수식부탁드립니다.
1분봉 선물 진입신호 발생하면 옵션 매수하는 수식입니다
1) 챠트에서 완성된 신호이전에 미완성 신호발생 즉시 1개 포지션 매수
진입은 선물이 아닌 옵션이며 매도는 하지않고 매수만 함
2) 매수후에 10틱 하락하면 1개 추가매수
3) 옵션행사가는 2.0 이상 3.0 이하만 매수함.
4) 챠트에서 청산신호 나오기전에 평균 매수가 대비 30틱 상승하면 청산
청산후에는 손익에 상관없이 더이상 거래 금지
수고하십시요..