예스스탁
예스스탁 답변
2023-07-03 17:02:23
안녕하세요
예스스탁입니다.
Input : 손실틱수(200);
input : StartTime(90000),EndTime(230000);
Var : Trade(false);
#종료시간이 시작시간보다 크면 당일청산을 종료시간으로 셋팅
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else #아니면(다음날청산)
{
#날짜 변경시 지정한 시간 당일청산으로 셋팅
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
#종료시간이 되면
#Trade는 False
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Trade = False;
//지정한 시작시간이 되면
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
#종료시간이 시작시간보다 작을때(다음날청산) 당일청산 해제
IF Endtime < starttime Then
{
SetStopEndofday(0);
}
#Trade는 true
Trade = true;
}
#청산발생
if TotalTrades > TotalTrades[1] then
{
#청산명이 bl이나 sl이면 Xcond는 true
if (IsExitName("bl",1) == true or IsExitName("sl",1) == true) then
trade = False;
}
#Trade가 true일때
if Trade == true then
{
#시세가 시초가-50틱 위에서
if MarketPosition <= 0 and L > DayOpen-PriceScale*50 Then
{
#하락해 시초가-50틱에 도달하면 매수1
Buy("b1",AtLimit,DayOpen-PriceScale*50);
#하락해 시초가-100틱에 도달하면 매수2(동시에 한봉에 도달하는 것 대비)
Buy("b2",AtLimit,DayOpen-PriceScale*100);
#하락해 시초가-150틱에 도달하면 매수2(동시에 한봉에 도달하는 것 대비)
Buy("b3",AtLimit,DayOpen-PriceScale*150);
}
//매수후
if MarketPosition == 1 Then
{
#진입후 시초가-100틱 이하에 도달하지 못한 상태에서
#시초가-100틱에 도달하면 매수2
if lowest(L,BarsSinceEntry) > DayOpen-PriceScale*100 Then
Buy("b2.",AtLimit,DayOpen-PriceScale*100);
#진입후 시초가-150틱 이하에 도달하지 못한 상태에서
#시초가-150틱에 도달하면 매수2
if lowest(L,BarsSinceEntry) > DayOpen-PriceScale*150 Then
Buy("b3.",AtLimit,DayOpen-PriceScale*150);
#평단가 대비 현재거래 누적손실이 지정한 틱수이상이면 청산
ExitLong("bl",AtStop,avgEntryPrice-((PriceScale*손실틱수)/CurrentContracts));
}
if MarketPosition >= 0 and H < DayOpen+PriceScale*50 Then
{
Sell("s1",AtLimit,DayOpen+PriceScale*50);
Sell("s2",AtLimit,DayOpen+PriceScale*100);
Sell("s3",AtLimit,DayOpen+PriceScale*150);
}
if MarketPosition == 1 Then
{
if highest(H,BarsSinceEntry) < DayOpen+PriceScale*100 Then
Sell("s2.",AtLimit,DayOpen+PriceScale*100);
if highest(H,BarsSinceEntry) < DayOpen+PriceScale*150 Then
Sell("s3.",AtLimit,DayOpen+PriceScale*150);
ExitShort("sl",AtStop,avgEntryPrice+((PriceScale*손실틱수)/CurrentContracts));
}
}
즐거운 하루되세요
> 카르마다 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 수고많습니다.
시가기준으로 50틱, 100틱, 150틱 내려가거나 오를때마다
B1, B2, B3와 S1, S2, S3로 3계약 분할 진입하는 역매매 진입 시스템에서
9시부터 23시 자동매매가 진행될 때
진입신호 발생후 누적 200틱 손실이면 즉시 손절되면서 당일 매매는 종료되게 하고 싶습니다.
즉, B1, B2든 B1, B2, B3든 진입 신호의 손실을 합산해 누적해서 200틱 손실이 되면 즉시 손절청산되며 당일 매매는 종료되는데 ★ 그전에 진입해서 수익이 나거나 손실이난 부분은 상관없이 해당 진입에서 독립적으로 누적된 200틱 손실 ★ 로 부탁 드리겠습니다. (당일 200틱 누적손실이면 매매 종료가 아닙니다)
하나 더 부탁드리면 B1, B2든 B1, B2, B3가 매수되었는데 진입했던 물량이 익절이든 손절이든 최종적으로 모두 청산되기전에 일부 청산되고서 일부 진입분이 남았는데도 재진입이 되는 경우가 있습니다. 해당 신호로 진입한 모든 진입분이 청산되기전에 청산된 일부 신호가 조건을 만족해도 다시 나오지 못하게 하고 싶습니다.
수식에 대한 간단한 주석도 좀 부탁 드리겠습니다.
미리 노고에 감사드립니다~