예스스탁
예스스탁 답변
2021-03-18 14:24:27
안녕하세요
예스스탁입니다.
죄송합니다. 수식 일부가 제외되서 답변이 올라갔습니다.
청산 추가된 수식입니다.
input : 비율(5),진입횟수(1);
var : 매수기준가(0),매도기준가(0);
input : StartTime(70000),EndTime(065000);
var : Tcond(false),entry(0);
var : Year(0),V1(0),V2(0),V3(0),V4(0),Summer(False),ST(0),ET(0);
if sDate != sDate[1] Then
{
SetStopEndofday(Endtime);
//썸머타임체크
Year = Floor(sdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜
Summer = bdate > (10000 * Year) + (100 * 3) + v2
And bdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = StartTime;
ET = EndTime;
}
Else
{
ST = StartTime+10000;
ET = EndTime+10000;
}
}
if (sdate != sdate[1] and stime >= ET) or
(sdate == sdate[1] and stime >= ET and stime[1] < ET) Then
Tcond = False;
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
{
Tcond = true;
SetStopEndofday(0);
entry = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if NextBarStime >= ST and sTime < ST Then
{
var1 = Floor(NextBarOpen*(1-비율/100)*10)/10;
Var2 = Ceiling(NextBarOpen*(1+비율/100)*10)/10;
Buy("b1",AtLimit,var1);
Sell("s1",AtLimit,var2);
}
else
{
if Tcond == true and entry < 진입횟수 Then
{
매수기준가 = Floor(DayOpen*(1-비율/100)*10)/10;
매도기준가 = Ceiling(DayOpen*(1+비율/100)*10)/10;
if MarketPosition <= 0 and L > 매수기준가 Then
Buy("b",AtLimit,매수기준가);
if MarketPosition >= 0 and H < 매도기준가 Then
Sell("s",AtLimit,매도기준가);
}
}
if MarketPosition == 1 and entry == 진입횟수 Then
ExitLong("bx",AtLimit,매도기준가);
if MarketPosition == -1 and entry == 진입횟수 Then
ExitShort("sx",AtLimit,매수기준가);
즐거운 하루되세요
> 후니러비 님이 쓴 글입니다.
> 제목 : 재문의 드립니다
> 올려주신 수식이 매수기준가 매도기준가 진입 다 정확히 맞습니다
그런데 청산이 종가청산으로만 되어있어
보내주신 수식 맨밑에
if MarketPosition==1 and h==매도기준가 Then ExitLong("매수청산");
if MarketPosition==-1 and l==매수기준가 Then ExitShort("매도청산");
요것만 추가를 했는데요
매도기준가 가격에 청산을 하고 싶은데, 봉이 완성된 가격에 체결이 되네요
atstop,atlimit 이리저리 해보았는데 다음봉에서 신호가 뜨네요.
진입가는 수식에 맞게 정확하게 진입이 되는데
청산은 자꾸 오차가 생겨서..
청산을 매수기준가나 매도기준가에 터치하는 즉시 청산하는 방법이 있을런지요?
어제 유선전화로 친절히 설명해주셔서 다시한번 감사드립니다.
----------------------------------------------------------
안녕하세요
예스스탁입니다.
매수기준가와 매도기준가 그리는 지표식도 같이 올려드립니다
1
input : 비율(5),진입횟수(1);
var : 매수기준가(0),매도기준가(0);
input : StartTime(70000),EndTime(065000);
var : Tcond(false),entry(0);
var : Year(0),V1(0),V2(0),V3(0),V4(0),Summer(False),ST(0),ET(0);
if sDate != sDate[1] Then
{
SetStopEndofday(Endtime);
//썸머타임체크
Year = Floor(sdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜
Summer = bdate > (10000 * Year) + (100 * 3) + v2
And bdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = StartTime;
ET = EndTime;
}
Else
{
ST = StartTime+10000;
ET = EndTime+10000;
}
}
if (sdate != sdate[1] and stime >= ET) or
(sdate == sdate[1] and stime >= ET and stime[1] < ET) Then
Tcond = False;
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
{
Tcond = true;
SetStopEndofday(0);
entry = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if NextBarStime >= ST and sTime < ST Then
{
var1 = Floor(NextBarOpen*(1-비율/100)*10)/10;
Var2 = Ceiling(NextBarOpen*(1+비율/100)*10)/10;
Buy("b1",AtLimit,var1);
Sell("s1",AtLimit,var2);
}
else
{
if Tcond == true and entry < 진입횟수 Then
{
매수기준가 = Floor(DayOpen*(1-비율/100)*10)/10;
매도기준가 = Ceiling(DayOpen*(1+비율/100)*10)/10;
if MarketPosition <= 0 and L > 매수기준가 Then
Buy("b",AtLimit,매수기준가);
if MarketPosition >= 0 and H < 매도기준가 Then
Sell("s",AtLimit,매도기준가);
}
}