커뮤니티

Data2에 대한 식으로 변경 부탁드립니다.

프로필 이미지
매버릭
2022-08-21 18:43:09
1457
글번호 161641
답변완료
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)); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

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)); } }