답변완료
미완성신호 주문
안녕하세요~
다음 수식 부탁드립니다.
YT에서 선물 분봉기준으로
1) 첫봉 dayindex==0 에서 연결선물 당일시가가 전일종가보다 크면 매수,
작으면 매도, 같으면 진입없슴
* 로직상 첫봉에서 미완성신호가 발생되었다면,
첫봉에서 가격 움직임에 상관없이 완성신호가 발생됨을 알 수 있슴
2) 두번째봉부터 1)의 청산 또는 어떤 조건에 의한 진입,청산
3) 14:30 장마감 청산
위의 내용을 YesSpot에서 차트 신호완성 기준으로 test 완료하였습니다.
---------------------------------------------
제가 문의드리고자 하는 것은 2)와 3) 부분은 신호완성 기준으로 하되,
1)의 경우 전일종가와 당일시가가 같지 않은 경우 첫봉에서 매수 또는 매도 미완성신호가
발생하게 되는데, 이시점만큼은 차트의 미완성신호에 의한 매매를 하고 싶습니다.
< 원하는 수식 >
1) YT 당일 첫봉 dayindex==0 에서 미완성신호 발생시,
(1) 미완성신호 발생시점으로부터 30초후 YesSpot에서 매수주문 또는
(2) 만약, 30초이내에 현재가가 '시초가 - 0.3pt'이면 30초이전이라도 매수주문
- 당연히 미완성신호에서 주문발생시 해당 분봉에서 완성신호시에 주문 발생 안함
- 예스스팟에서 dayindex 처리가 안된다면, 당일시초가 발생후 30초와 같은 개념임
2) 첫봉을 제외하고 다른 시점에서는 완성신호에 의한 매수주문
function Main_OnStart()
{
Start = 0;
}
function Chart1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
Start = 1;
Account1.OrderBuy(MarketData1.code,Vol,Signal.price,0);
}
....
..
....
차트 신호발생에 의한 수식중 매수진입부분인데, 이 수식을 위의 설명과 같이
dayindex==0 신호발생시 미완성신호 최초발생후 30초 경과후 매수주문 또는
dayindex==0 신호발생시 미완성신호 최초발생후 30초 이전 '시초가-0.3pt'라면 매수주문
(미완성신호에서 주문 발생시 해당 완성봉에서 주문발생 안함)
첫봉이외에는 완성신호에 의한 주문형태로 수정 부탁드립니다.
4월이 시작되고, 오늘은 봄비가 내리네요...
오늘도 행복한 시간되시기를 바라며,
감사합니다 !!!
2013-04-04
2099
글번호 222293
답변완료
문의
아래 스팟식은 잘 사용중에 있습니다.
약간 응용하여 추가로 문의를 드립니다.
예제)
1. 선물신호에 옵션 매도 주문(2.0에 가장 근접한 종목)
2. 수익신호에는 진입한 옵션 매도 청산
3.손절 신호에만 손절 청산을 하는 게 아니라 반대옵션 매도(반드시 손절 신호에만)
4. 양 매도(포지션)구축이 되면 (손실금-백만 원) 도달시 자동 손절 청산
5. 양매도 구축시 당일 3시 청산
요약해 보면
수익일땐 네이키드 청산.
손절(손실일 땐)엔 양 매도 포지션
===============================================================
//2. 옵션매도
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] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0)
{
PutPrice[ii+UNum] = Option.GetCurrent(1, ii);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = -1;
PutCode[ii+UNum] = -1;
}
}
//buy신호 발생시
if (Signal.signalKind == 1)
{
Start = 1;
PP = -1;
PutOrderCode = -1;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] > PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (PP > 0)
{
Account1.OrderSell(PutOrderCode, 1, 0, 1);
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//exitlong신호 발생시
if ( Start == 1 && Signal.signalKind == 2)
{
Start = 0;
if (PP > 0)
{
Account1.OrderBuy(PutOrderCode, 1, 0, 1);
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//sell신호 발생시
if (Signal.signalKind == 3)
{
Start = -1;
CC = -1;
CallOrderCode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum]
}
}
if (CC > 0)
{
Account1.OrderSell(CallOrderCode, 1, 0, 1);
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
// Exitshort신호 발생시
if (Start == -1 && Signal.signalKind == 4)
{
Start = 0;
if (CC > 0)
{
Account1.OrderBuy(CallOrderCode, 1, 0, 1);
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("S신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
}
2013-04-02
2014
글번호 222291
답변완료
청산식 부탁합니다.
진입은 수동으로하고 포지션이 발생되면 자동으로 아래조건으로 청산할 수 있도록 구현하고 싶습니다.
예스스팟과 자바스크립트 전혀모르니 상세히 설명부탁합니다.
(예스랭귀지 경우 로직입니다.)
#0.5손절 2익절
SetStopLoss(0.5,PointStop);
SetStopProfittarget(2,PointStop);
#진입가대비 0.5단위 트레일링스탑
if MarketPosition == 1 Then{
var1 = int((highest(H,BarsSinceEntry)-EntryPrice)/0.5);
ExitLong("bx",AtStop,(EntryPrice-0.5)+(0.5*var1));
}
if MarketPosition == -1 Then{
var2 = int((EntryPrice-lowest(L,BarsSinceEntry))/0.5);
ExitShort("sx",AtStop,(EntryPrice+0.5)-(0.5*var2));
#2시50분 청산
SetStopEndofday(145000);
2013-03-27
1988
글번호 222286