커뮤니티

수식부탁드립니다========================

프로필 이미지
leekss1
2017-02-22 06:12:28
132
글번호 107111
답변완료
(지표1) 을 (지표2)의 tema1에 적용할수 있나요 ? 있으면 부탁드립니다 (지표1) Input:length(12),X(2); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),tx(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; turnPntBit = ""; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then{ TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); #텍스트 출력 if turnPntArr[1][0] == "Hi" then#저점 tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-PriceScale*X,NumToStr(valArr[2],2)); if turnPntArr[1][0] == "Lo" then #고점 tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+PriceScale*X,NumToStr(valArr[2],2)); Text_SetStyle(tx,2,2); } Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,0.5); TL_SetColor(TL1,BLUE); (지표2) Input: 폭보정(1.5),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05) ,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5) ,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ; var : AsksMA(0),BidsMA(0), Period(1),지수더하기(0),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0); Var : value(0); Var : valuec(0); var : va71(0); var : va80(0); var : va81(0); var : va90(0); var : va91(0); var : va92(0); var : va93(0); var : va94(0); var : va95(0); VAR : TEMA1(0); VAR : TEMA2(0); VAR : TEMA3(0); VAR : vmin(0); VAR : vmax(0); BidsMa = ma(bids,Period); AsksMA = ma(asks,Period); value = ma(bids,period)-ma(asks,period)+29000; Plot2(BidsMA, "매수잔량이평"); Plot3(AsksMA, "매도잔량이평"); Plot4(value, "차"); //************************************************************** //************************************************************* va91=((c-c[1])/c[1]*100)*20000/20000; va93=((value-value[1])/value[1]*90)*125/2500; if Bdate != Bdate[1] Then{ idx = 0; var1 = 100; var2 = 100; plot10(var1); plot11(var2); plot51(var2 ); } Else{ idx = idx+1; var1 = var1+(var1*(va91/100)); var2 = var2+(var2*(va93/100)); plot10(var1 ); plot11(var2 ); plot51(var2 ); TEMA3 = (3 * Ema(var2 ,순매수LENGTH2)) - (3 * Ema(Ema(var2 ,순매수LENGTH2),순매수LENGTH2)) + (Ema(Ema(Ema(var2 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2)); if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1]; if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정); if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1]; if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9); plot52(TEMA3,"순매수테마"); } if var2-var1 > 폭보정 Then var2=var1; if var1-var2 > 폭보정 Then var2=var1; EP = 2/(지수호가테마LENGTH1+1); if idx == 0 Then{ E11 = var1; E21 = var2; } Else{ E11 = var1 * EP + E11 * (1-EP); E21 = var2 * EP + E21 * (1-EP); } if idx <= 1 Then{ E12 = E11; E22 = E21; } Else{ E12 = E11 * EP + E12 * (1-EP); E22 = E21 * EP + E22 * (1-EP); } if idx <= 2 Then{ E13 = E12; E23 = E22; } Else{ E13 = E12 * EP + E13 * (1-EP); E23 = E22 * EP + E23 * (1-EP); } TEMA1 = (3 * E11) - (3 * E12) + (E13); if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1]; if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정); if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1]; if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정); TEMA2 = (3 * E21) - (3 * E22) + (E23); PLOT30(TEMA1 ,"지수테마",iff((TEMA1 )>(TEMA1 )[1]+00,BLACK,iff((TEMA1 )<(TEMA1 )[1]-00,BLACK,BLACK))); PLOT31(TEMA2 ,"호가테마"); vmin = min(TEMA1 ,TEMA1 ,va71); vmax = max(TEMA1 ,TEMA1 ,va71); if TEMA1 > TEMA2 Then{ var80 = (TEMA1 - TEMA2 )*0.5+TEMA2 ; } if TEMA1 < TEMA2 Then{ var80 = (TEMA2 -TEMA1 )*0.5+TEMA1 ; } PLOT17(var80,"지호평균"); //테마합 일정 수량차이상의 급등락 표시 if TEMA3 > TEMA3[1]+ 급변 Then{plot21(vmin-0.05,"급등");} if TEMA3 < TEMA3[1]- 급변 Then{plot22(vmin-0.05,"급락");} va71 =( TEMA2 - TEMA1)+100; if (va71[1] )< (va71)then { PLOT25((va71 )-0.02,"매수예비"); //PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav"); } if (va71[1] )> (va71) Then{ PLOT26((va71 )-0.02,"매도예비"); // PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav"); } PLOT60(va71,"55"); if (TEMA1[1] )< (TEMA1) and (va71[1] )< (va71)then { PLOT45((va71 )-0.02,"매수막대"); PlaySound("C:₩예스트레이더₩data₩Sound₩up.wav"); } if (TEMA1[1] )> (TEMA1) and (va71[1] )> (va71) Then{ PLOT46((va71 )-0.02,"매도막대"); PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav"); } if va71[1]+급변 < va71 Then { PLOT18((va71 )+0.01,"매도"); } if va71[1]-급변 > va71 Then { PLOT19((va71 )+0.01,"매수"); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-02-22 11:20:17

안녕하세요 예스스탁입니다. 가능하지 않습니다. 즐거운 하루되세요 > leekss1 님이 쓴 글입니다. > 제목 : 수식부탁드립니다======================== > (지표1) 을 (지표2)의 tema1에 적용할수 있나요 ? 있으면 부탁드립니다 (지표1) Input:length(12),X(2); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),tx(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; turnPntBit = ""; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then{ TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); #텍스트 출력 if turnPntArr[1][0] == "Hi" then#저점 tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-PriceScale*X,NumToStr(valArr[2],2)); if turnPntArr[1][0] == "Lo" then #고점 tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+PriceScale*X,NumToStr(valArr[2],2)); Text_SetStyle(tx,2,2); } Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,0.5); TL_SetColor(TL1,BLUE); (지표2) Input: 폭보정(1.5),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05) ,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5) ,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ; var : AsksMA(0),BidsMA(0), Period(1),지수더하기(0),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0); Var : value(0); Var : valuec(0); var : va71(0); var : va80(0); var : va81(0); var : va90(0); var : va91(0); var : va92(0); var : va93(0); var : va94(0); var : va95(0); VAR : TEMA1(0); VAR : TEMA2(0); VAR : TEMA3(0); VAR : vmin(0); VAR : vmax(0); BidsMa = ma(bids,Period); AsksMA = ma(asks,Period); value = ma(bids,period)-ma(asks,period)+29000; Plot2(BidsMA, "매수잔량이평"); Plot3(AsksMA, "매도잔량이평"); Plot4(value, "차"); //************************************************************** //************************************************************* va91=((c-c[1])/c[1]*100)*20000/20000; va93=((value-value[1])/value[1]*90)*125/2500; if Bdate != Bdate[1] Then{ idx = 0; var1 = 100; var2 = 100; plot10(var1); plot11(var2); plot51(var2 ); } Else{ idx = idx+1; var1 = var1+(var1*(va91/100)); var2 = var2+(var2*(va93/100)); plot10(var1 ); plot11(var2 ); plot51(var2 ); TEMA3 = (3 * Ema(var2 ,순매수LENGTH2)) - (3 * Ema(Ema(var2 ,순매수LENGTH2),순매수LENGTH2)) + (Ema(Ema(Ema(var2 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2)); if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1]; if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정); if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1]; if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9); plot52(TEMA3,"순매수테마"); } if var2-var1 > 폭보정 Then var2=var1; if var1-var2 > 폭보정 Then var2=var1; EP = 2/(지수호가테마LENGTH1+1); if idx == 0 Then{ E11 = var1; E21 = var2; } Else{ E11 = var1 * EP + E11 * (1-EP); E21 = var2 * EP + E21 * (1-EP); } if idx <= 1 Then{ E12 = E11; E22 = E21; } Else{ E12 = E11 * EP + E12 * (1-EP); E22 = E21 * EP + E22 * (1-EP); } if idx <= 2 Then{ E13 = E12; E23 = E22; } Else{ E13 = E12 * EP + E13 * (1-EP); E23 = E22 * EP + E23 * (1-EP); } TEMA1 = (3 * E11) - (3 * E12) + (E13); if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1]; if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정); if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1]; if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정); TEMA2 = (3 * E21) - (3 * E22) + (E23); PLOT30(TEMA1 ,"지수테마",iff((TEMA1 )>(TEMA1 )[1]+00,BLACK,iff((TEMA1 )<(TEMA1 )[1]-00,BLACK,BLACK))); PLOT31(TEMA2 ,"호가테마"); vmin = min(TEMA1 ,TEMA1 ,va71); vmax = max(TEMA1 ,TEMA1 ,va71); if TEMA1 > TEMA2 Then{ var80 = (TEMA1 - TEMA2 )*0.5+TEMA2 ; } if TEMA1 < TEMA2 Then{ var80 = (TEMA2 -TEMA1 )*0.5+TEMA1 ; } PLOT17(var80,"지호평균"); //테마합 일정 수량차이상의 급등락 표시 if TEMA3 > TEMA3[1]+ 급변 Then{plot21(vmin-0.05,"급등");} if TEMA3 < TEMA3[1]- 급변 Then{plot22(vmin-0.05,"급락");} va71 =( TEMA2 - TEMA1)+100; if (va71[1] )< (va71)then { PLOT25((va71 )-0.02,"매수예비"); //PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav"); } if (va71[1] )> (va71) Then{ PLOT26((va71 )-0.02,"매도예비"); // PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav"); } PLOT60(va71,"55"); if (TEMA1[1] )< (TEMA1) and (va71[1] )< (va71)then { PLOT45((va71 )-0.02,"매수막대"); PlaySound("C:₩예스트레이더₩data₩Sound₩up.wav"); } if (TEMA1[1] )> (TEMA1) and (va71[1] )> (va71) Then{ PLOT46((va71 )-0.02,"매도막대"); PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav"); } if va71[1]+급변 < va71 Then { PLOT18((va71 )+0.01,"매도"); } if va71[1]-급변 > va71 Then { PLOT19((va71 )+0.01,"매수"); }