예스스탁
예스스탁 답변
2023-05-16 15:52:18
안녕하세요
예스스탁입니다.
1
함수이름은 Mycond로 작성해 드립니다.
다른이름을 지정하시려면 함수명과 수식 마지막에 값저장하는 부분만 변경하시면 됩니다.
2
외부변수는 총 11개 지정해야 합니다.
MyCond(조건,단기기준가격,단기기간,단기이평종류,장기준가격,장기기간,장기이평종류,하단%,상단%,기준시점,검색범위);
1번째 매개변수는 조건입니다.
1과 -1은 돌파로 1은 상향돌파, -1은 하향이탈
2와 -2는 비교로 2는 크다 -2는 작다
3과 -3는 배열로 3는 정배열, -3는 역배열(실제로는 2,-2와 같음)
4는 등락률입니다.
모든 조건은 만족하지 않을 경우 0을 리턴합니다.
그러므로 등락률의 경우 0을 기준으로 하면 혼돈이 있어
다른 조건들과 값을 맞추기 위해서 등락률은 이격도와 같이 100을 기준으로 작성했습니다.
+2%~4%이면 102와 104로 지정하시면 되고 리턴값도 100기준값으로 리턴되고 조건만족하지 않으면 0입니다.
2~4번째 매개변수 단기이평관련 옵션
5~7번째 매개변수 장기이평관련 옵션
8번째~9번째 매개변수는 조건이 4일때 쓰는 상하단%값
10번째 매개변수 기준시점
11번째 매개변수 검색범위
3
사용자함수명 : Mycond로
반환값형 : 숫자형
input : 조건(Numeric);
input : 단기기준가격(Numeric),단기기간(Numeric),단기이평종류(Numeric);
input : 장기기준가격(Numeric),장기기간(Numeric),장기이평종류(Numeric);
input : dnper(Numeric),upPer(Numeric);
input : 기준시점(Numeric),검색범위(Numeric);
var : mav1(0),mav2(0),value(0),cnt(0);
if 단기이평종류 == 1 Then
mav1 = ma(단기기준가격,단기기간);
if 단기이평종류 == 2 Then
mav1 = ema(단기기준가격,단기기간);
if 단기이평종류 == 3 Then
mav1 = wma(단기기준가격,단기기간);
if 장기이평종류 == 1 Then
mav2 = ma(장기기준가격,장기기간);
if 장기이평종류 == 2 Then
mav2 = ema(장기기준가격,장기기간);
if 장기이평종류 == 3 Then
mav2 = wma(장기기준가격,장기기간);
if 조건 == 1 Then
{
if CrossUp(mav1,mav2) Then
value = 1;
Else
value = 0;
}
if 조건 == -1 Then
{
if CrossDown(mav1,mav2) Then
value = 1;
Else
value = 0;
}
if 조건 == 2 Then
{
if mav1 > mav2 Then
value = 1;
Else
value = 0;
}
if 조건 == -2 Then
{
if mav1 < mav2 Then
value = 1;
Else
value = 0;
}
if 조건 == 3 Then
{
if mav1 > mav2 Then
value = 1;
Else
value = 0;
}
if 조건 == -3 Then
{
if mav1 < mav2 Then
value = 1;
Else
value = 0;
}
if 조건 == 3 Then
{
if mav1 > mav2 Then
value = 1;
Else
value = 0;
}
if 조건 == 4 Then
{
var1 = mav1/mav2*100;
if var1 >= dnper and var1 <= upPer Then
value = var1;
Else
value = 0;
}
value1 = 0;
For cnt = 기준시점 to 기준시점+검색범위-1
{
if value1 == 0 and value[cnt] > 0 Then
value1 = value[cnt];
}
MyCond = value1;
즐거운 하루되세요
> 날으는여우 님이 쓴 글입니다.
> 제목 : 크레온의 가격이동평균과 같은 사용자 함수를 만들고자 합니다
> 2개의 이평을 가지고 배열은 true or false로
등락율은 숫자형의 사용자 함수를 4개의 return값이 나오도록 설정 하고 싶읍니다