예스스탁
예스스탁 답변
2021-05-06 10:34:00
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 식 완성해 사용하시기 바랍니다
숏진입 익절이 P라는 값보다 같거나 클 때 시장가 매도로 되어 있습니다. 내용이 좀 모호합니다.
P값 이상의 시세발생하면 청산하게 작성해 드립니다.
input : 미국시작(223000),미국종료(060000);
input : 아시아시작(70000),아시아종료(160000);
Input : 당일수익틱수(30);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false),dd(0);
var : Tcond1(false),Tcond2(false),Trade(False),XT(0),XD(0);
if (sdate != sdate[1] and stime >= 미국종료) or
(sdate == sdate[1] and stime >= 미국종료 and stime[1] < 미국종료) Then
{
Tcond1 = False;
}
if (sdate != sdate[1] and stime >= 미국시작) or
(sdate == sdate[1] and stime >= 미국시작 and stime[1] < 미국시작) Then
{
dd = dd+1;
Tcond1 = true;
N1 = NetProfit;
if XD == 0 or (XD > 0 and XT == 1 and DD >= XD+1) or (XD > 0 and XT == 2 and DD >= XD+2) Then
Xcond = false;
}
if (sdate != sdate[1] and stime >= 아시아종료) or
(sdate == sdate[1] and stime >= 아시아종료 and stime[1] < 아시아종료) Then
{
Tcond2 = False;
Trade = False;
}
if (sdate != sdate[1] and stime >= 아시아시작) or
(sdate == sdate[1] and stime >= 아시아시작 and stime[1] < 아시아시작) Then
{
Tcond2 = true;
Trade = False;
}
당일수익 = PriceScale*당일수익틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 Then
{
Xcond = true;
XD = dd;
XT = 0;
if Tcond1 == true Then
XT = 1;
if Tcond2 == true Then
XT = 2;
}
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
{
Xcond = true;
XD = dd;
XT = 0;
if Tcond1 == true Then
XT = 1;
if Tcond2 == true Then
XT = 2;
}
}
if Tcond2 == true and X Then
Trade = true;
if (Tcond1 == true or (Tcond2 == true and Trade == true)) and Xcond == False Then
{
if MarketPosition >= 0 and y Then
Sell("s",OnClose,DEf,1);
if MarketPosition == -1 and IsEntryName("s") == true Then
{
ExitShort("sx",AtStop,P);
Buy("sb",AtStop,EntryPrice-PriceScale*200,1);
}
if MarketPosition == 1 Then
{
ExitLong("sbx1",AtStop,EntryPrice-PriceScale*5,"sb");
ExitLong("sbx2",AtLimit,EntryPrice+PriceScale*10,"sb");
if IsEntryName("b") == true and CurrentContracts == MaxContracts Then
ExitLong("bx1",AtLimit,EntryPrice+(abs(C[BarsSinceEntry+1]-O[BarsSinceEntry+1])));
if IsEntryName("b") == true and CurrentContracts < MaxContracts Then
ExitLong("bx2",AtStop,L[2]);
}
if MarketPosition >= 0 and w Then
{
Buy("b",AtStop,C+PriceScale*1,2);
}
if MarketPosition == 1 then{
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
}
}
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 수식 작성 부탁드립니다.
> 종목 : 오일 선물
1. 미국 정규장에서만 작동. 그러나 X라는 이벤트 발생시 아시아장에서도 매매 시작.
ㄱ. 정규장에서 작동 시작했을경우 - 프로그램 작동 시작 이후, 30틱 이상 익절 시(한 매매에서 30틱 익절 아닙니다. 5틱이든, 10틱이든, 프로그램 시작 이후 잔고에 진입 손실과 수익 포함 +30틱 이상의 수익이 발생했을 경우입니다), 다음 정규장 시작하기 전까지 매매 금지. 다음 정규장 시작하면 자동으로 다시 매매 시작.
ㄴ. X라는 이벤트 발생후 아시아장에서 작동 시작했을 경우 - 위와 동일하나 아시아장 이후에 이어지는 정규장에서도 매매 금지입니다. 그 이후에 있는 정규장에서 다시 매매 시작.
---------------
매매
숏 진입 로직 (1계약)
Y 발생 시 매도 진입.(봉 마감 이후 진입입니다)
익절은 현재가(Best Bid? 또는 H?)가 P라는 값보다 같거나 클 때 곧바로 시장가 매도 (봉 마감 이후가 아니라 실시간으로요)
스탑로스는 200틱
만약 숏 진입 이후 스탑로스를 건들면 곧바로 매수로 스위칭 했으면 좋겠습니다. 해당 스위칭 오더의 경우, 10틱 익절, 5틱 손절로 세팅해주세요.
롱 진입 로직 (2계약)
W가 발생하고, 해당 봉이 마감하자마자 C[1] + 1틱에 매수 stop order
익절의 경우,
1. 진입가 + 진입 바로 전 봉의 몸통의 값에 1차 매도,
2. 2차 매도는 진입 봉 2개 전의 저가에 위치시키기. 봉이 계속 생겨날수록 2차 매도 값도 계속 변해야합니다(200틱 스탑로스처럼 고정이 아님)
-------------
이상입니다 부탁드립니다.
하다 막힌 부분이 있다면 안된다 하지 마시고 그냥 되는 것만 쭉 로직으로라도 짜주시길 부탁드립니다.
고맙습니다