커뮤니티

문의드립니다

프로필 이미지
새벽에
2025-10-28 05:38:04
81
글번호 227389
답변완료

안녕하세요? 아래 지표수식에서  노란색 물음표 ? 가  나올때마다  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

안녕하세요. 예스스탁입니다. 피라미딩을 모든진입신호 허용으로 설정하고 적용하시면 됩니다. 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);   Text_SetStyle(txtid,2,1);   LastCrossBar = Index;   if t == 1 Then   Buy("b",AtMarket);   Else   Sell("s",AtMarket);   End;   End;   End; End; //If diff <= (PriceScale * 3) Then //예: //*2 → 더 민감하게, //*5 → 더 느슨하게. 즐거운 하루되세요