예스스탁
예스스탁 답변
2025-05-22 14:41:56
안녕하세요
예스스탁입니다.
수식에 value1,value2는 할당된 값이 없습니다.
plot에서 제외하고 수정해 드립니다.
Input:
length(100), mult(1),
TP_Ratio(1.01), SL_Ratio(0.99),
진입수량(1);
Var:
src(0), a(0), b(0), size(0),
var1(0), var2(0),
Condition1(false), Condition2(false),
t1(0), t2(0),
value1(0), value2(0),
진입가(0), TP(0), SL(0),
posFlag(0), tx(0);
// 1. 원본 가격
src = Close;
// 2. size 계산
size = iff((a[1]-a[2]) > 0 or (b[1]-b[2]) < 0 , atr(length) , TrueRange);
// 3. 상승/하락 조건 기간 카운트
if a[1] > a[2] Then
Begin
Condition1 = true;
var1 = 0;
end
Else if Condition1 then
var1 = var1 + 1;
if b[1] < b[2] Then
Begin
Condition2 = true;
var2 = 0;
end
Else if Condition2 then
var2 = var2 + 1;
// 4. 추세선 계산
a = max(src,a[1]) - size/pow(length,2)*(var1*mult);
b = min(src,b[1]) + size/pow(length,2)*(var2*mult);
// 5. 꺾임 방향
t1 = iff(a > a[1], 1, iff(a < a[1], -1, t1[1]));
t2 = iff(b > b[1], 1, iff(b < b[1], -1, t2[1]));
// 6. 꺾임 발생 시 진입
If t1 == -1 and t1 != t1[1] and posFlag == 0 Then
Begin
//Sell("Short",AtMarket);
진입가 = Close;
TP = 진입가 * SL_Ratio; // 숏 전략이므로 SL<진입가
SL = 진입가 * TP_Ratio;
posFlag = -1;
tx = Text_New(sDate, sTime, High, "매도진입");
Text_SetStyle(tx,2,1);
Text_SetColor(tx, Red);
End;
If t2 == -1 and t2 != t2[1] and posFlag == 0 Then
Begin
//Buy("Long",AtMarket);
진입가 = Close;
TP = 진입가 * TP_Ratio;
SL = 진입가 * SL_Ratio;
posFlag = 1;
tx = Text_New(sDate, sTime, Low, "매수진입");
Text_SetStyle(tx,2,0);
Text_SetColor(tx, Blue);
End;
// 7. TP/SL 도달 시 청산
If posFlag == -1 Then
Begin
If Close <= TP or Close >= SL Then
Begin
//exitshort("매도포지션청산",AtMarket);
posFlag = 0;
End;
End;
If posFlag == 1 Then
Begin
If Close >= TP or Close <= SL Then
Begin
//ExitLong("청산",AtMarket);
posFlag = 0;
End;
End;
// 8. 시각화
Plot1(a, "상단추세");
Plot2(b, "하단추세");
//Plot3(value1, "상단꺾임");
//Plot4(value2, "하단꺾임");
즐거운 하루되세요
> 윤호석 님이 쓴 글입니다.
> 제목 : 부탁드립니다 항상 감사합니다
> Input:
length(100), mult(1),
TP_Ratio(1.01), SL_Ratio(0.99),
진입수량(1);
Var:
src(0), a(0), b(0), size(0),
var1(0), var2(0),
Condition1(false), Condition2(false),
t1(0), t2(0),
value1(0), value2(0),
진입가(0), TP(0), SL(0),
posFlag(0), tx(0);
// 1. 원본 가격
src = Close;
// 2. size 계산
size = iff((a[1]-a[2]) > 0 or (b[1]-b[2]) < 0 , atr(length) , TrueRange);
// 3. 상승/하락 조건 기간 카운트
if a[1] > a[2] Then
Begin
Condition1 = true;
var1 = 0;
end
Else if Condition1 then
var1 = var1 + 1;
if b[1] < b[2] Then
Begin
Condition2 = true;
var2 = 0;
end
Else if Condition2 then
var2 = var2 + 1;
// 4. 추세선 계산
a = max(src,a[1]) - size/pow(length,2)*(var1*mult);
b = min(src,b[1]) + size/pow(length,2)*(var2*mult);
// 5. 꺾임 방향
t1 = iff(a > a[1], 1, iff(a < a[1], -1, t1[1]));
t2 = iff(b > b[1], 1, iff(b < b[1], -1, t2[1]));
// 6. 꺾임 발생 시 진입
If t1 == -1 and t1 != t1[1] and posFlag = 0 Then
Begin
SellShort("Short") next bar at market;
진입가 = Close;
TP = 진입가 * SL_Ratio; // 숏 전략이므로 SL<진입가
SL = 진입가 * TP_Ratio;
posFlag = -1;
tx = Text_New(Date, Time, High, "⬇ 매도진입");
Text_SetColor(tx, Red);
End;
If t2 == -1 and t2 != t2[1] and posFlag = 0 Then
Begin
Buy("Long") next bar at market;
진입가 = Close;
TP = 진입가 * TP_Ratio;
SL = 진입가 * SL_Ratio;
posFlag = 1;
tx = Text_New(Date, Time, Low, "⬆ 매수진입");
Text_SetColor(tx, Blue);
End;
// 7. TP/SL 도달 시 청산
If posFlag = -1 Then
Begin
If Close <= TP or Close >= SL Then
Begin
BuyToCover("청산") next bar at market;
posFlag = 0;
End;
End;
If posFlag = 1 Then
Begin
If Close >= TP or Close <= SL Then
Begin
Sell("청산") next bar at market;
posFlag = 0;
End;
End;
// 8. 시각화
Plot1(a, "상단추세");
Plot2(b, "하단추세");
Plot3(value1, "상단꺾임");
Plot4(value2, "하단꺾임");
오류수정부탁드립니다