예스스탁
예스스탁 답변
2021-03-11 10:58:26
안녕하세요
예스스탁입니다.
강제청산 함수는 한번 값이 셋팅되면 해당 설정이 유지됩니다.
만기주에만 셋팅이 되고 만기주가 아닐때는 해제되어야 하므로
아래와 같이 mangi==2가 아닐때는 해제되는 내용이 추가되어야 합니다.
if mangi==2 Then
{
#SetStopTrailing(손실범위 , 최소이익 , PointStop);
SetStopTrailing(loss ,profit , percentStop,0);
}
Else
SetStopTrailing(0,0);#해제
또한 해당식이 만기주는 2, 만기일은 3을 리턴합니다.
만기일까지 포함해서 트레일링스탑을 적용하신다면
mangi>=2로 조건이 지정되어야 합니다.
즐거운 하루되세요
> 캣피쉬 님이 쓴 글입니다.
> 제목 : 수식 질문드립니다.
> https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=132355&ref=132315&Sort=&KeyField=Subject&KeyWord=%B8%B8%B1%E2
1. 위 게시판 참조해서 만들려고 해봤는데 잘 안되네요..
만기주일 경우만 stoptrailing 적용하고 싶습니다.
현재 아래식은 stoptrailing 이 만기주 아닌경우도 적용됩니다....
만기주만 되게 가능할까요?
2. 추가로 만기 이후도 날짜 카운트 가능하면 부탁드립니다.
월물 첫날 둘째날 셋째날 이정도 선까지 구분하고 싶습니다.
3. 트리플 만기일 지정가능한지 궁금합니다.
----------------------------
input : StartTime(91000),EndTime(150000);
#Input : shortPeriod(6), longPeriod(50);
Input : s1(5), s2(60);
input : aaa(-0.40),bbb(0.35);
input : 손절(3);
input : 익절(5);
input : sellfilter(0.25);
input : buyfilter(0.65);
input : N(5),MM(0.07);
input : jinpok(8.9);
input : losstick(10);
input : profittick(10);
input : loss(0);
input : profit(0);
#
var : YYYY(0),MMM(0);
var : ThisMonth1(0),ThisMonthXdate(0);
var : NextMonth1(0),NextMonthXdate(0);
var : Thurs(0),cnt(0),remain(0),mangi(0);
var : Tcond(false,Data1);
var : C2(0,Data2);
var : C3(0,Data3);
var : 최소이익(0),손실범위(0);
최소이익 = PriceScale*profittick;
손실범위 = PriceScale*losstick;
#value1 = ma(C, shortPeriod);
#value2 = ma(C, longPeriod);
Value3 = ma(C2, s1);
Value4 = ma(C2, s2);
if index == 0 or sdate != sdate[1] Then
{
YYYY = Floor(sDate / 10000)*10000;
MMM = Floor(FracPortion(sdate/10000)*100)*100;
thisMonth1 = YYYY+MMM+1;
if MMM+100 <= 1200 Then
NextMonth1 = YYYY+(MMM+100)+1;
Else
NextMonth1 = (YYYY+10000)+100+1;
Thurs = 0;
for cnt = 0 to 15
{
if DayOfWeek(thisMonth1+cnt) == 4 Then
{
Thurs = Thurs+1;
if Thurs == 2 Then
thisMonthXdate = thisMonth1+cnt;
}
}
Thurs = 0;
for cnt = 0 to 15
{
if DayOfWeek(NextMonth1+cnt) == 4 Then
{
Thurs = Thurs+1;
if Thurs == 2 Then
NextMonthXdate = NextMonth1+cnt;
}
}
if sdate <= thisMonthXdate then
{
remain = DateToJulian(thisMonthXdate)-DateToJulian(sdate);
}
Else
remain = DateToJulian(NextMonthXdate)-DateToJulian(sdate);
if remain == 0 then
mangi = 3;
else if remain >= 1 and remain <= 3 then
mangi = 2;
else if remain >= 4 and remain <= 10 then
mangi = 1;
Else
mangi = 0;
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
C2 = Data2(c);
C3 = Data3(c);
# 매수/매도청산
if Tcond == true Then
{
If CrossUP(value3, value4) and c3>buyfilter and (DayHigh(0)-DayLow(0)<jinpok) #data2(c) <= aaa and
Then
{
Buy();
if (DayHigh(0)-DayLow(0)>jinpok) and ((DayHigh(0)-(DayHigh(0)-DayLow(0))/2))<c Then ExitLong();
}
If CrossDown(value3, value4) and c3<sellfilter and (DayHigh(0)-DayLow(0)<jinpok) #data2(c) >= bbb and
Then
{
Sell();
if (DayHigh(0)-DayLow(0)>jinpok) and ((DayHigh(0)-(DayHigh(0)-DayLow(0))/2))>c Then ExitShort();
}
}
if Data2(Highest(C2,n) >= Lowest(C2,n)+MM)
and c2[0]<c2[3] Then ExitLong();
if Data2(Highest(C2,n) >= Lowest(C2,n)+MM)
and c2[0]>c2[3] Then exitshort();
SetStopEndofday(EndTime);
SetStoploss(손절,PointStop);
SetStopProfittarget(익절,PointStop);
if mangi==2 Then
{
#SetStopTrailing(손실범위 , 최소이익 , PointStop);
SetStopTrailing(loss ,profit , percentStop,0);
}