예스스탁
예스스탁 답변
2024-09-03 16:00:44
안녕하세요
예스스탁입니다.
1
현재봉에서 각 라인을 동시돌파하는 내용이면 아래와 같이 작성하시면 됩니다.
if TL_GetValue(TLH,sDate,stime) > 0 and
TL_GetValue(TLH1,sDate,stime) > 0 and
TL_GetValue(TLH2,sDate,stime) > 0 and
TL_GetValue(TLH3,sDate,stime) > 0 Then
{
value1 = TL_GetValue(TLH,sDate,stime);
value2 = TL_GetValue(TLH,sDate,stime);
value3 = TL_GetValue(TLH,sDate,stime);
value4 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value1) Then
Condition1 = true;
Else
Condition1 = False;
if CrossUp(c,Value2) Then
Condition2 = true;
Else
Condition2 = False;
if CrossUp(c,Value3) Then
Condition3 = true;
Else
Condition3 = False;
if CrossUp(c,Value4) Then
Condition4 = true;
Else
Condition4 = False;
if Condition1 == true and Condition2 == true and Condition3 ==true and Condition4 == true Then
Find(1);
}
2
COUNTIF은 봉수를 지정해 최근 n개봉 동안 만족한 횟수를 리턴합니다.
예를들어 동시돌파가 최근 5개봉 이내에 1회이상 발생한것을 찾으시면
countif함수로 아래와 같이 처리하시면 됩니다.
if CountIf(Condition1 == true and Condition2 == true and Condition3 ==true and Condition4 == true,5) >= 1 Then
Find(1);
3
동시돌파가 아닌 각라인을 상향돌파해서 최종적으로 모든 라인보다 커진 상태를 찾으시면 아래와 같습니다.
if TL_GetValue(TLH,sDate,stime) > 0 and
TL_GetValue(TLH1,sDate,stime) > 0 and
TL_GetValue(TLH2,sDate,stime) > 0 and
TL_GetValue(TLH3,sDate,stime) > 0 Then
{
value1 = TL_GetValue(TLH,sDate,stime);
value2 = TL_GetValue(TLH,sDate,stime);
value3 = TL_GetValue(TLH,sDate,stime);
value4 = TL_GetValue(TLH,sDate,stime);
Condition1 = C > max(value1,Value2,Value3,Value4);
if Condition1 == true and Condition1[1] == False Then
Find(1);
}
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 추가 문의드립니다
> 먼저 지난 문의 답변을 해주셔서 감사드립니다
알려주신 수식을 검색으로 적용을 해보고 싶은데요
FIND(1) 을 IF 문마다 여러번 작성하면 AND 관계로 검색이 되는건지 궁금합니다,
if TL_GetValue(TLH,sDate,stime) > 0 then
{
value1 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value1) Then CONDITION1= TRUE;
}
하나로 묶어서 하려고 이런식으로 논리형 변수로 TRUE 를 주고 마지막에
IF CONDITION1=TRUE AND CONDITION2=TRUE ... AND CONDITION4=TRUE THEN FIND (1) ; 으로 하니까 에러가 나오네요
그리고 검색식에 적용을 하면 당일에 해당되는것만 나오게 되는건가요??? 검색할때 봉은 500개로 적용했습니다.
예를들어 이평선 CROSSUP 한 조건을 검색하면 오늘 현재만 나오게 되고
COUNTIF 조건으로 5회 이상 이라고 하면 차트 전체를 대상으로 찾게 되나요??
일단 아래처럼 해봤습니다 조금 더 나은 방법이 있는지 궁금합니다
if TL_GetValue(TLH,sDate,stime) > 0 then
{
value1 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value1) Then Find(1);
}
if TL_GetValue(TLH1,sDate,stime) > 0 then
{
value2 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value2) Then Find(1);
}
if TL_GetValue(TLH2,sDate,stime) > 0 then
{
value3 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value3) Then Find(1);
}
if TL_GetValue(TLH3,sDate,stime) > 0 then
{
value4 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value4) Then Find(1);
}
아래는 수식 전체입니다
input : n(10);
var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),TXpaa(0),nline(0),tl2(0);
var : txx(0),TXper1(0);
var : hd(0),ht(0),hd1(0),ht1(0),hv(0),hv1(0), LD(0), LT(0), LV (0), LD1(0), LT1(0),LV1(0), TLL(0);
var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(0);
if CountIf(H >= L*1.08,n) >= 1 Then
{
hh = 0;
hb = 0;
ll = 0;
lb = 0;
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
}
}
if hB < lB AND ll *1.4 >H and (hh != Var3 and ll != Var4) Then
{
hd = sDate[hb];
ht = sTime[hb];
hv = hh;
hd1 = hd[1];
ht1 = ht[1];
hv1 = hv[1];
if hv1 > 0 Then
{
TLH1 = TLH[1];
TLH2 = TLH1[1];
TLH3 = TLH2[1];
TLH4 = TLH3[1];
//이전 출력된 추세선 중 이전 4번째는 연장선 해제
TL_SetExtRight(TLH4,False);
TLH = TL_new(hd1,ht1,hv1,hd,ht,hv);
//추세선 연장선 적용
TL_SetExtRight(TLH,True);
TL_SetStylE(TLH,2);
IF (HV > HV1*0.9 AND HV < HV1*1.09) OR (HV1 > HV*0.9 AND HV1 <HV*1.09) TheN
TL_SetColoR(TLH,LightGreen);
}
LD = sDatE[LB];
LT = sTimE[LB];
LV = LL;
LD1 = LD[1];
LT1 = LT[1];
LV1 = LV[1];
IF LV1 > 0 TheN
{
TL_SetExtRighT(TLL,FalsE);
TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV);
TL_SetExtRighT(TLL,TRUE);
TL_SetStylE(TLL,3);
# TL_SetColoR(TLL,LightReD);
}
VAR3 = hh;
VAR4 = ll;
VAR1 = Index[lb];
VAR2 = VAR1[1];
#PLOT22(HH,"고가HH라인",YelloW);
if VAR2 > 0 Then
{
VAR5 = 0;
For cnt = Index-var1 to Index-var2
{
if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then
Var5 = h[cnt];
}
}
if var1 >= Var2 Then
{
TXper= text_new(sDate[lb],sTime[lb],ll,"★");
Text_SetStyle(txper,2,0);
Text_SetSizE(TXPER,18);
Text_SetColor(txper,MagentA);
TXpaa= text_new(sDate[HB],sTime[HB],HH,"★");
Text_SetStyle(TXPAA,2,0);
Text_SetSizE(TXPAA,15);
Text_SetColor(tXPAA,LightGreen);
}
}
}
If VAR5 > 0 Then
{
#plot35(VAR5,"INTER TL HH",Tomato);
# IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN);
}
#PLOT11(VAR1,"IndeX",LightGreeN);
#PLOT12(IndeX,"IndeXHB",OrangE);
if TL_GetValue(TLH,sDate,stime) > 0 then
{
value1 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value1) Then FinD(1);
}
if TL_GetValue(TLH1,sDate,stime) > 0 then
{
value2 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value2) Then FinD(1);
}
if TL_GetValue(TLH2,sDate,stime) > 0 then
{
value3 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value3) Then Find(1);
}
if TL_GetValue(TLH3,sDate,stime) > 0 then
{
value4 = TL_GetValue(TLH,sDate,stime);
if CrossUp(c,Value4) Then Find(1);
}