커뮤니티
문의드립니다
안녕하세요?
아래 지표수식에서 노란색 물음표 ? 가 나올때마다 1봉뒤 즉 다음봉시가에서 매수또는 매도 신호가 발생되도록 시스템식으로부탁드립니다
감사합니다
input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),process(0),T(0);
Array:HH[10,2](0),LL[10,2](0);
var : idx(0),TL2(0),LRLv(0),LRSv(0),maxR(0),cnt(0),mid(0);
var : TL21(0),TL22(0),TL23(0);
process = 0;
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{
If LL[1,1] > L Then process = -1;
If HH[1,1] < H Then process = 1;
}
Else If Highest(H,length) == H and lastHiVal <> H Then process = 1;
Else If Lowest(L,length) == L and lastLoVal <> L Then process = -1;
If process == 1 Then
{
T = 1;
lastHiVal = H;
If HH[1,2] < LL[1,2] Then
{
For j = 10 DownTo 2
{
HH[j,1] = HH[j-1,1];
HH[j,2] = HH[j-1,2];
}
}
If HH[1,2] < LL[1,2] or HH[1,1] < H Then
{
HH[1,1] = H;
HH[1,2] = Index;
sBar = Index - LL[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if LL[1,1] > 0 Then
{
TL1 = TL_New(sDate[sBar],sTime[sBar],LL[1,1],sDate[eBar],sTime[eBar],HH[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
Else
{
Text_Delete(text1);
Text1 = Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
Text_SetStyle(Text1, 2, 1);
}
}
If process == -1 Then
{
T = -1;
lastLoVal = L;
If LL[1,2] < HH[1,2] Then
{
For j = 10 DownTo 2
{
LL[j,1] = LL[j-1,1];
LL[j,2] = LL[j-1,2];
}
}
If LL[1,2] < HH[1,2] or LL[1,1] > L Then
{
LL[1,1] = L;
LL[1,2] = Index;
sBar = Index - HH[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if HH[1,1] > 0 Then
{
TL1 = TL_New(sDate[sBar],sTime[sBar],HH[1,1],sDate[eBar],sTime[eBar],LL[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
Else
{
Text_Delete(text1);
Text1 = Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
}
}
if T != T[1] Then
{
if T == 1 Then
{
idx = LL[1,2];
}
if T == -1 Then
{
idx = HH[1,2];
}
TL21 = TL2[1];
TL22 = TL21[1];
TL23 = TL22[1];
TL_Delete(TL23);
}
if idx > 0 Then
{
LRLv = LRL(C,index-idx);
LRSv = LRS(C,Index-idx);
maxR = 0;
For cnt = 0 to Index-idx+1
{
Mid = LRLV-LRSv*cnt;
if abs(L[cnt]-Mid) > maxR Then
maxR = abs(L[cnt]-Mid);
if abs(H[cnt]-Mid) > maxR Then
maxR = abs(H[cnt]-Mid);
}
if T != T[1] Then
{
TL_SetExtRight(TL2,False);
TL2 = TL_New(sDate[Index-idx],sTime[Index-idx],Mid,sDate,sTime,LRLv);
TL_SetExtRight(TL2,true);
TL_SetColor(tL2,Red);
}
Else
{
if T == 1 and HH[1,1] != HH[1,1][1] Then
{
TL_SetBegin(TL2,sDate[Index-idx],sTime[Index-idx],Mid);
TL_SetEnd(TL2,sDate,sTime,LRLv);
}
if T == -1 and LL[1,1] != LL[1,1][1] Then
{
TL_SetBegin(TL2,sDate[Index-idx],sTime[Index-idx],Mid);
TL_SetEnd(TL2,sDate,sTime,LRLv);
}
}
}
//---------------------------------------------
// 검정추세선(TL1)과 빨강추세선(TL2) 교차 감지
//---------------------------------------------
Vars: valTL1(0), valTL2(0), diff(0), LastCrossBar(0), TxtID(0);
If TL1 > 0 and TL2 > 0 Then
Begin
// 각 추세선의 현재 시점 가격값 가져오기
valTL1 = TL_GetValue(TL1, Date, Time);
valTL2 = TL_GetValue(TL2, Date, Time);
If (valTL1 > 0) and (valTL2 > 0) Then
Begin
diff = AbsValue(valTL1 - valTL2);
// 두 선의 가격 차이가 3틱 이하일 때
If diff <= (PriceScale * 3) Then
Begin
// 중복 표시 방지
If LastCrossBar <> Index Then
Begin
TxtID = Text_New(Date, Time, (valTL1 + valTL2) / 2, "?");
Text_SetColor(TxtID, Yellow);
Text_SetSize(TxtID, 20);
Text_Setbold(txtID,10);
LastCrossBar = Index;
End;
End;
End;
End;
//If diff <= (PriceScale * 3) Then
//예:
//*2 → 더 민감하게,
//*5 → 더 느슨하게.
답변 1
예스스탁 예스스탁 답변
2025-10-28 14:12:42