예스스탁
예스스탁 답변
2022-08-22 15:04:59
안녕하세요
예스스탁입니다.
진입/청산신호 함수에 사용한 atstop타입은 지정한 가격과 기본차트의 현재가만 비교합니다.
data2로 변경하시면 모두 봉완성시 신호로 처리하셔야 합니다.
참조데이타를 이용해서는 atstop처리가 가능하지 않습니다.
Input:매물대기간(20),매물대개수(10);
Input:atrlen(14),atrs1(2.7),atrs2(2.7),atrs3(2.2),break(1.9),level(0.3),big(8);
Input:초기자산(2000000);
Var:누적자산(0),진입후최고가(0);
Array:매물대[30,4](0,Data2); // 행번호 = 순위, 열번호 = 1:가격이상,2:가격미만,3:수량,4:비율
var : mav1(0,data2),mav2(0,Data2),v1(0,Data2),cond1(False,Data2);
var : C2(0,Data1),O2(0,Data1),h2(0,Data1),ATR2(0,Data1);
누적자산 = 초기자산 + netprofit;
mav1 = data2(ma(c,5));
mav2 = Data2(ma(C,20));
#V1 = data2(VolProfile(매물대기간,매물대개수,매물대));
Cond1 = data2(mav1 > mav2 and C > 매물대[1,2]); // 단기이평, 중기이평 정배열이고 최대 매물대 지지
H2 = Data2(h);
C2 = Data2(C);
O2 = Data2(O);
ATR2 = Data2(ATR(ATrLen));
If MarketPosition == 0 and Cond1[1] != Cond1 and Cond1 Then
{
Buy("B",AtMarket,int(초기자산/NextBarOpen));
}
If MarketPosition == 1 Then
{
진입후최고가 = Highest(H2,BarsSinceEntry + 1);
IF c2 <= O2[BarsSinceEntry]-ATR2*ATRS1 Then
ExitLong("매수손절");
if c2 <= 진입후최고가-ATR2*atrs2 Then
ExitLong("매수추적");
if c2 <= data2(C[1]) - ATR2 * atrs3 Then
ExitLong("매수변동성");
If 진입후최고가 >= O2[BarsSinceEntry] + ATR2 * break and
c2 <= O2[BarsSinceEntry] + ATR2 * level Then
{
ExitLong("매수손익분기");
}
If 진입후최고가 >= O2[BarsSinceEntry] + ATR2 * big and
c2 <= Data2(lowest(L,3)[1]) Then
{
ExitLong("매수초과수익");
}
}
즐거운 하루되세요
> 매버릭 님이 쓴 글입니다.
> 제목 : Data2에 대한 식으로 변경 부탁드립니다.
> Input:매물대기간(20),매물대개수(10);
Input:atrlen(14),atrs1(2.7),atrs2(2.7),atrs3(2.2),break(1.9),level(0.3),big(8);
Input:초기자산(2000000);
Var:누적자산(0),진입후최고가(0);
Array:매물대[30,4](0); // 행번호 = 순위, 열번호 = 1:가격이상,2:가격미만,3:수량,4:비율
누적자산 = 초기자산 + netprofit;
Value1=VolProfile(매물대기간,매물대개수,매물대);
Condition1 = ma(C,5) > ma(C,20) and C > 매물대[1,2]; // 단기이평, 중기이평 정배열이고 최대 매물대 지지
If Condition1[1] != Condition1 and Condition1 Then
Buy("B",AtMarket,int(초기자산/NextBarOpen));
If MarketPosition == 1 Then {
진입후최고가 = Highest(H,BarsSinceEntry + 1);
ExitLong("매수손절",Atstop,Entryprice - ATR(atrlen) * atrs1);
ExitLong("매수추적",Atstop,진입후최고가 - ATR(atrlen) * atrs2);
ExitLong("매수변동성",Atstop,C[1] - ATR(atrlen) * atrs3);
If 진입후최고가 >= Entryprice + ATR(atrlen) * break Then {
ExitLong("매수손익분기",Atstop,Entryprice + ATR(atrlen) * level);
}
If 진입후최고가 >= Entryprice + ATR(atrlen) * big Then {
ExitLong("매수초과수익",Atstop,Lowest(L,3));
}
}