예스스탁
예스스탁 답변
2021-09-28 16:09:58
안녕하세요
예스스탁입니다.
진입카운트에 문제가 있어 수정했습니다.
기존식이 분할청산시 첫청산의 이름이 리턴되어 직전거래의 마지막 청산명을 이용하게 수정해 드립니다.
input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000);
input : 투자금액1(1000000),투자금액2(2000000);
var : entry(0),HH(0),H1(0);
if Bdate != Bdate[1] Then
{
entry = 0;
#5개의 타점중 시가보다 작은것 중에 젤 큰값 계산
HH = 0;
H1 = 0;
if 타점1 < DayOpen*0.99 and 타점1 < DayClose(1) and 타점1 > HH Then
{
HH = 타점1;
H1 = 타점2;
}
if 타점2 < DayOpen*0.99 and 타점2 < DayClose(1) and 타점2 > HH Then
{
HH = 타점2;
H1 = 타점3;
}
if 타점3 < DayOpen*0.99 and 타점3 < DayClose(1) and 타점3 > HH Then
{
HH = 타점3;
H1 = 타점4;
}
if 타점4 < DayOpen*0.99 and 타점4 < DayClose(1) and 타점4 > HH Then
{
HH = 타점4;
H1 = 타점5;
}
if 타점5 < DayOpen*0.99 and 타점5 < DayClose(1) and 타점5 > HH Then
{
HH = 타점5;
}
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and sTime < 133000 and entry == 0 Then
{
Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH)));
}
if MarketPosition == 1 and entry == 1 Then
{
Buy("2차매수",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974)));
}
if MarketPosition == 0 and entry == 1 and LatestExitName(1) == "1차매수 2프로익절" and H1 > 0 Then
{
Buy("2차매수A",AtLimit,H1,Floor(투자금액2/min(NextBarOpen,HH*0.974)));
}
if MarketPosition == 1 Then
{
if MaxEntries == 1 and IsEntryName("1차매수",0) == true Then
{
ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4));
ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02);
}
if MaxEntries == 2 and IsEntryName("1차매수",0) == true Then
{
ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5));
ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005);
}
if MaxEntries == 1 and IsEntryName("2차매수A",0) == true Then
{
ExitLong("2차매수A 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5));
ExitLong("2차매수A 0.5익절",AtLimit,avgEntryPrice*1.005);
}
ExitLong("손절",AtStop,HH*0.96);
}
즐거운 하루되세요
> 맴맴잉 님이 쓴 글입니다.
> 제목 : 시스템식 문의 드립니다.
> 여러번 질문드려 죄송합니다.ㅜ.ㅜ
아침에 송부해주신 식을 기준으로 다시 시뮬레이션을 돌려봤더니..
예를들어 아시아나 항공으로
1차 타점 : 28350
2차 타점 : 27800
3차 타점 : 27300
이렇게 타점을 걸어두고 매매를 진행되었을때
제가 생각하는 시뮬레이션은
28350에 매수해서 2프로 익절하고 , 그다음 27800원에 매수해서 2프로 익절하고,
27300원에서 매수해서 2프로 익절하는 식을 생각했었는데
아래의 그림을 보시면, 28350에 매수해서 2프로 익절후에 또 다시, 28350원에
진입하는걸 볼수 있습니다.
다시하면 조건을 적는다면..
요청조건은
-------------------------------------------------------------------
여기서 추가하고자 하는 조건은
전부다 동일한 조건으로 진행되는데, 1차매수 2프로 익절 했을 경우에만,
다음타점으로 매수진행되도록 조건을 추가하고 싶습니다.
예를들어 5000원에 매수해서 2프로 익절까지 했을경우, 다음 4500원이 매수타점으로 되어 진행되도록
조건을 추가하고자 합니다.
-------------------------------------------------------------------
입니다.
그럼 부탁드리겠습니다. 감사합니다.
요청식
-------------------------------------------------------------------
안녕하세요
예스스탁입니다.
기존식은 기존의 2차진입가격을 그대로 적용했습니다.
첫타점 다음가격으로 지정해 드립니다.
첫타점이 타점5이면 다음가격이 없어 진입할 수 없습니다.
input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000);
input : 투자금액1(1000000),투자금액2(2000000);
var : entry(0),HH(0),H1(0);
if Bdate != Bdate[1] Then
{
entry = 0;
#5개의 타점중 시가보다 작은것 중에 젤 큰값 계산
HH = 0;
H1 = 0;
if 타점1 < DayOpen*0.99 and 타점1 < DayClose(1) and 타점1 > HH Then
{
HH = 타점1;
H1 = 타점2;
}
if 타점2 < DayOpen*0.99 and 타점2 < DayClose(1) and 타점2 > HH Then
{
HH = 타점2;
H1 = 타점3;
}
if 타점3 < DayOpen*0.99 and 타점3 < DayClose(1) and 타점3 > HH Then
{
HH = 타점3;
H1 = 타점4;
}
if 타점4 < DayOpen*0.99 and 타점4 < DayClose(1) and 타점4 > HH Then
{
HH = 타점4;
H1 = 타점5;
}
if 타점5 < DayOpen*0.99 and 타점5 < DayClose(1) and 타점5 > HH Then
{
HH = 타점5;
}
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) and
(MarketPosition != MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and sTime < 133000 and entry == 0 Then
{
Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH)));
}
if MarketPosition == 1 and entry == 1 Then
{
Buy("2차매수",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974)));
}
if MarketPosition == 0 and sTime < 133000 and entry == 1 and IsexitName("1차매수 2프로익절",1) == true and H1 > 0 Then
{
Buy("2차매수A",AtLimit,H1,Floor(투자금액2/min(NextBarOpen,HH*0.974)));
}
if MarketPosition == 1 Then
{
if MaxEntries == 1 and IsEntryName("1차매수",0) == true Then
{
ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4));
ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02);
}
if MaxEntries == 2 and IsEntryName("1차매수",0) == true Then
{
ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5));
ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005);
}
if MaxEntries == 1 and IsEntryName("2차매수A",0) == true Then
{
ExitLong("2차매수A 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5));
ExitLong("2차매수A 0.5익절",AtLimit,avgEntryPrice*1.005);
}
ExitLong("손절",AtStop,HH*0.96);
}