예스스탁
예스스탁 답변
2024-11-18 13:35:07
안녕하세요
예스스탁입니다.
Input: Period(42), D(2), period2(0.17);
Input : shortPeriod(12), longPeriod(26);
input : n1(3);//강조표시 없는 구간 진입횟수
input : n2(3);//동시조건 충족 후 진입횟수
input : xbar(12),xtick(1);
Var : BBTop(0), BBMid(0), BBBot(0),Bwidth(0), BWidth2(0), BWidth3(0);
Var : value(0),cnt(0),T(0);
BBTop = BollBandUp(Period,D);
BBMid = ma(C,Period);
BBBot = BollBandDown(Period,D);
BWidth = ((BBTop - BBBot)/ BBMid)*100;
value = MACD(shortPeriod, longPeriod);
#강조조건 만족하면 true 아니면 False
if BWidth<period2 Then
Condition1 = true;
Else
Condition1 = False;
#강조조건 불만족 구간 시작
#T는 1
#cnt는 0으로 초기화
if (Condition1 == False and Condition1 != Condition1[1]) Then
{
T = 1;
cnt = 0;
}
#강조조건 만족 구간 시작
#T는 2
#cnt는 0으로 초기화
if (Condition1 == true and Condition1 != Condition1[1]) Then
{
T = 2;
cnt = 0;
}
If CrossUP(value, 0) Then
{
#횟수카운트
cnt = cnt+1;
#T가 1인구간에서 n1횟수까지만 신호발생, n1이 0이면 신호발생 없음
#T가 2인구간에서 n2횟수까지만 신호발생, n2가 0이면 신호발생 없음
if (n1 > 0 and T == 1 and cnt < n1) or
(n2 > 0 and T == 2 and cnt < n2) Then
Buy("b");
}
If CrossDown(value, 0) Then
{
#횟수카운트
cnt = cnt+1;
#T가 1인구간에서 n1횟수까지만 신호발생, n1이 0이면 신호발생 없음
#T가 2인구간에서 n2횟수까지만 신호발생, n2가 0이면 신호발생 없음
if (n1 > 0 and T == 1 and cnt < n1) or
(n2 > 0 and T == 2 and cnt < n2) Then
Sell("s");
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,lowest(L,xBar)-PriceScale*xtick);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,highest(H,xBar)+PriceScale*xtick);
즐거운 하루되세요
> 정구지 님이 쓴 글입니다.
> 제목 : 손절 기응 추가
> 1 아래 시스템 수식에서 손절값을 추가하고 싶습니다(물론 손절값 전에 반대 신호가 나오면 반대신호로 손절하고 진입합니다)
2. 손절값은 매도 경우 과거봉(일단 12개 봉으로 가정, 변수로 변경가능토록 설정)12개 값의 최대값에서 한틱위에(설정으로 값을 조정할 수 있게)로 매수 경우는 반대입니다.
아래는 시스템 식입니다.
Input: Period(42), D(2), period2(0.17);
Input : shortPeriod(12), longPeriod(26);
input : n1(3);//강조표시 없는 구간 진입횟수
input : n2(3);//동시조건 충족 후 진입횟수
Var : BBTop(0), BBMid(0), BBBot(0),Bwidth(0), BWidth2(0), BWidth3(0);
Var : value(0),cnt(0),T(0);
BBTop = BollBandUp(Period,D);
BBMid = ma(C,Period);
BBBot = BollBandDown(Period,D);
BWidth = ((BBTop - BBBot)/ BBMid)*100;
value = MACD(shortPeriod, longPeriod);
#강조조건 만족하면 true 아니면 False
if BWidth<period2 Then
Condition1 = true;
Else
Condition1 = False;
#강조조건 불만족 구간 시작
#T는 1
#cnt는 0으로 초기화
if (Condition1 == False and Condition1 != Condition1[1]) Then
{
T = 1;
cnt = 0;
}
#강조조건 만족 구간 시작
#T는 2
#cnt는 0으로 초기화
if (Condition1 == true and Condition1 != Condition1[1]) Then
{
T = 2;
cnt = 0;
}
If CrossUP(value, 0) Then
{
#횟수카운트
cnt = cnt+1;
#T가 1인구간에서 n1횟수까지만 신호발생, n1이 0이면 신호발생 없음
#T가 2인구간에서 n2횟수까지만 신호발생, n2가 0이면 신호발생 없음
if (n1 > 0 and T == 1 and cnt < n1) or
(n2 > 0 and T == 2 and cnt < n2) Then
Buy("b");
}
If CrossDown(value, 0) Then
{
#횟수카운트
cnt = cnt+1;
#T가 1인구간에서 n1횟수까지만 신호발생, n1이 0이면 신호발생 없음
#T가 2인구간에서 n2횟수까지만 신호발생, n2가 0이면 신호발생 없음
if (n1 > 0 and T == 1 and cnt < n1) or
(n2 > 0 and T == 2 and cnt < n2) Then
Sell("s");
}