Q&A 게시판 HOME > Q&A 게시판
작성자 : 예스스탁 작성일 : 2021-12-20 09:30:04 조회수 : 1255
Re:ATR을 이용한 추적 청산 지표를 자동매매 시스템 식으로 변환?
안녕하세요? 

트랜드선을 상향돌파하면 매수하고, 하향이탈하면 매수청산하는 식입니다.

input : factor(3), AtrPeriod(10);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); 
var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0);  

if CurrentBar > 1 Then {
src = (H+L)/2;
// ATR계산(ATR 계산시 지수가중이동평균(rma)이용)
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV = alpha * source + (1 - alpha) * ATrV[1];

upperBand = src + factor * AtrV;
lowerBand = src - factor * AtrV;
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];

if lowerBand > prevLowerBand or close[1] < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;

if upperBand < prevUpperBand or close[1] > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;

prevSuperTrend = superTrend[1];

if prevSuperTrend == prevUpperBand Then {
if close > upperBand Then 
direction = -1;
Else
direction = 1;
}
Else {
if close < lowerBand Then
direction = 1;
Else
direction = -1;
}

if direction == -1 Then
superTrend = lowerBand;
Else
superTrend = upperBand;
}

if CrossUp(C , superTrend) Then 
Buy();

if CrossDown(C , superTrend) Then 
ExitLong();



감사합니다.





>> 풀잎향기 님이 쓴 글입니다.

>> 제목 : ATR을 이용한 추적 청산 지표를 자동매매 시스템 식으로 변환?게시글에 올라온 아래 지표를 이용하여 자동매매에 활용하고 싶습니다.
가능하다면 시스템 식으로 부탁 드립니다. 



input : factor(3), AtrPeriod(10);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); 
var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(0);  
if CurrentBar > 1 Then {
 src = (H+L)/2;
 // ATR계산(ATR 계산시 지수가중이동평균(rma)이용)
 alpha = 1 / AtrPeriod ;
 source = max(high - low, abs(high - close[1]), abs(low - close[1]));
 ATrV = alpha * source + (1 - alpha) * ATrV[1];
 
 upperBand = src + factor * AtrV;
 lowerBand = src - factor * AtrV;
 prevLowerBand = lowerBand[1];
 prevUpperBand = upperBand[1];
 
 if lowerBand > prevLowerBand or close[1] < prevLowerBand Then
  lowerBand = lowerBand;
 Else
  lowerBand = prevLowerBand;
 
 if upperBand < prevUpperBand or close[1] > prevUpperBand Then
  upperBand = upperBand;
 Else
  upperBand = prevUpperBand;
 
 prevSuperTrend = superTrend[1]; 
 
 if prevSuperTrend == prevUpperBand Then {

if close > upperBand Then 
   direction = -1;
  Else
   direction = 1;
 }
 Else {
  if close < lowerBand Then
   direction = 1;
  Else
   direction = -1;   
 }
 
 if direction == -1 Then
  superTrend = lowerBand;
 Else
  superTrend = upperBand;
}
Plot1(C,"종가");
plot2(superTrend,"superTrend",IFf(C > superTrend, green, REd), 0, 1);
목록 답변