Q&A

  • 함수를 만들려고 합니다. 방법 좀 갈켜주세요.
죄송합니다. 왕왕 초보입니다.

혹 용어에 안맞는 말을 하더라도 이해해 주십시요.



AVERAGE(A,5)라는 주식분석용 이동평균함수를 만들려고합니다.



그런데 여기서 A라는 값은 매일매일의 시초가(OPEN), 고가(HIGH), 저가(LOW),

종가(CLOSE)(메모리에 보관되어 있음)의 배합으로 구해지는 값입니다.

그리고 5는 5일간의 A값의 이동평균값을 구하라는 것입니다.



즉, "A=(HIGH+LOW)/2"

또는 "A=OPEN의 5일간의 표준표차값" 등과 같습니다.



그런데 문제는 A를 구하는 식이 일정치 않고 주식시장에 따라 하루에도

수시로 (무한대)로 바뀐다는 것입니다.



델파이를 잘아는 사람한테 물어본 결과 델파이에서는 A의 식을 복사(?)하는 기능이

없어서 불가능하다고 합니다.

한가지 방법이 있다면 예를들어

"A=OPEN-LOW"라는 식을 문자로 인식시킨다음에 이를 복사하여 숫자로 다시

바꾸는 방법이 있다고는 하는데 이방법은 굉장히 불안정하기 때문에 권장하지를

않습니다.



혹시 좋은 방법이 있으면 가르쳐주십시요

꼭 부탁드리겠습니다.

5  COMMENTS
  • Profile
    어린왕자 2000.08.08 03:43
    안녕하세요..

    님의 말씀은 이런거죠...

    어떤식이 있는데..

    상황에 따라서 그식이 변한다는거죠..



    예를 들어..

    어떤 특정상황에선..A=B+C두 되구..

    또 어떤 특정상황에선 A=(B+C)/2두 되구..

    그런다는 거죠?



    맞나요?



    그렇다면 꼭 수식을 A에다 넣어줄 필요는 없죠..

    계산된 값만 넣어주면 되져..



    if문을 써서 특정 상황에서는 A=B+C

    또 if 문을 써서 특정 상황은 A=(B+C)/2



    음..이렇게 표현할려면..특정상황들 모두를 번호를 매겨서..

    Case문을 쓰시구..



    Case CalType of

    1: A:=B+C; // 1번 특정상황

    2: A:=B*C; // 2번 특정상황

    end;

    showmessage('결과값='+intToStr(A));



    이렇게 말이죠..



    이렇게 하면 식 자체를 복사하구..그런 필요가 없져..

    A라는 변수에 결과값만 잘 넣어주고 출력만 해주면 되져..



    음..이런말이 아닌가용???

    아니면 다시 질문 올려주세요..









    brucehan wrote:

    > 죄송합니다. 왕왕 초보입니다.

    > 혹 용어에 안맞는 말을 하더라도 이해해 주십시요.

    >

    > AVERAGE(A,5)라는 주식분석용 이동평균함수를 만들려고합니다.

    >

    > 그런데 여기서 A라는 값은 매일매일의 시초가(OPEN), 고가(HIGH), 저가(LOW),

    > 종가(CLOSE)(메모리에 보관되어 있음)의 배합으로 구해지는 값입니다.

    > 그리고 5는 5일간의 A값의 이동평균값을 구하라는 것입니다.

    >

    > 즉, "A=(HIGH+LOW)/2"

    > 또는 "A=OPEN의 5일간의 표준표차값" 등과 같습니다.

    >

    > 그런데 문제는 A를 구하는 식이 일정치 않고 주식시장에 따라 하루에도

    > 수시로 (무한대)로 바뀐다는 것입니다.

    >

    > 델파이를 잘아는 사람한테 물어본 결과 델파이에서는 A의 식을 복사(?)하는 기능이

    > 없어서 불가능하다고 합니다.

    > 한가지 방법이 있다면 예를들어

    > "A=OPEN-LOW"라는 식을 문자로 인식시킨다음에 이를 복사하여 숫자로 다시

    > 바꾸는 방법이 있다고는 하는데 이방법은 굉장히 불안정하기 때문에 권장하지를

    > 않습니다.

    >

    > 혹시 좋은 방법이 있으면 가르쳐주십시요

    > 꼭 부탁드리겠습니다.

  • Profile
    Hoon Reader 2000.08.07 10:34
    하고자 하는 바를 충분히 이해합니다.



    님이 이해하기 어렵게 좀 어렵게 설명하겠습니다.

    그런 것이 될려면 Call by Name 형식의 Parameter를 넘길 수 있어야하는데

    이 방법을 지원하는 언어는 포트란과 자바(자바의 경우는 조금은 달라 보임)입니다.



    C 언어는 Call By Value만이 지원하고(이저에서 보면 C는 많이 비교적 뒤떨어진 언어죠), C++ 과 Pascal, 그리고 비주얼 배이직은 Call By Value와 Call By Reference를 지원합니다.

    델파이는 파스칼 언어이므로 Call by Name 형식의 Parameter를 넘길 수는 없죠.



    그래서 하는 수 없이 거추장 스럽지만 의미를 부여한 임의의 숫자를 파라미터로 넘기고 함수 내부에서 Case(or Select, switch)문으로 나누어서 처리를 해야합니다.

    오직 이런 방법뿐입니다.



    수식이 패턴이 없고 그야말로 실시간으로 변하는 그런 수식이라면 이 방법도 불가능한데, 이 경우에는 할 수 없이 수식을 인지하는 Parsing 루틴을 만들어야 합니다.

    즉 파라미터로 수식 문자열을 넣고 함수 내부에서 Parsing해서 처리를 하는거죠.



    이동 평균선 구하는 것은 기껏해야 사칙연산과 Sqrt정도 사용할 것이므로 Parsing 루틴을 만드는 것이 그리 어렵지는 않으리라 생각이 됩니다.



    컴파일러 책 또는 PL(프로그래밍 랭귀지) 책을 보면 파싱하는 방법이 있으니 보고 구현하면 되실겁니다.



    구현된 소스도 흔합니다. 인터넷을 잘 뒤져 보세요.





  • Profile
    강인규 2000.08.07 00:54
    뭘만드시려는지는 잘 모르겠지만 함 적어봅니다.





    > AVERAGE(A,5)라는 주식분석용 이동평균함수를 만들려고합니다.

    > 그런데 여기서 A라는 값은 매일매일의 시초가(OPEN), 고가(HIGH), 저가(LOW),

    > 종가(CLOSE)(메모리에 보관되어 있음)의 배합으로 구해지는 값입니다.

    > 그리고 5는 5일간의 A값의 이동평균값을 구하라는 것입니다.



    함수를 만드시려면 모든 데이타를 입력하셔야겠죠?

    이런식으루......

    pundave(OPEN,HIGH,LOW,CLOSE,일자,주식시장의 상황);







    > 즉, "A=(HIGH+LOW)/2"

    > 또는 "A=OPEN의 5일간의 표준표차값" 등과 같습니다.

    >

    > 그런데 문제는 A를 구하는 식이 일정치 않고 주식시장에 따라 하루에도

    > 수시로 (무한대)로 바뀐다는 것입니다.





    > 델파이를 잘아는 사람한테 물어본 결과 델파이에서는 A의 식을 복사(?)하는 기능이

    > 없어서 불가능하다고 합니다.

    > 한가지 방법이 있다면 예를들어

    > "A=OPEN-LOW"라는 식을 문자로 인식시킨다음에 이를 복사하여 숫자로 다시

    > 바꾸는 방법이 있다고는 하는데 이방법은 굉장히 불안정하기 때문에 권장하지를

    > 않습니다.



    식도 복사(?) 할 수 있지만 조건이 한정적이라면 함수에 조건을 거는게 나은 방법이 아닐까하는 초보의 사견입니다.



    function pundave(op,hi,lo,clo : real; il,sang : word) : real;

    begin

    case sang of

    1 : result := (hi+lo)/2;

    2 : result := ({뭐 5일간의 평균}op*5)/il;

    3 : result := 10; //등등등......

    end;

    end;



    이런식으루 사용하심 됩니다. 아무래도 질문내용이 이게 아니신거 가타요.

    procedure TForm1.Button1Click(Sender: TObject);

    var

    op1,hi1,lo1,clo1 : real;

    il1,sang1 : word;

    begin

    op1 := strtofloat(edit1.text);

    hi1 := strtofloat(edit2.text);

    lo1 := strtofloat(edit3.text);

    clo1 := strtofloat(edit4.text);

    il1 := strtoint(edit5.text);

    sang1 := ComboBox1.ItemIndex+1;

    button1.Caption := floattostr(pundave(op1,hi1,lo1,clo1,il1,sang1));

    end;

























  • Profile
    노을 2000.08.06 23:39
    안녕하세요 노 을 입니다.



    음 식의 복사?.. 라는 의미를 모르겠내요...



    일단



    Average(A,5);



    요렇게 놓고 이 함수를 만든 다는 것은..



    Function Average(A:Integer,Count:Integer):Integer;



    이것 아닙니까?..



    A 를 구하는 식이야 어떻게 바뀌든..



    그건 함수 밖의 일 같은데요 --;..



    만약 A가 값이 아니라 저런 문장이라면 ...



    차라리 분석기라고 불러야 맞겠내요 --;...



    음.. 좀더 정확한 내용을 부탁드립니다...



    꾸벅...



    꼭대기에 오르지 못한이에겐 꿈이 있기에 행복하다

    늘 푸르고 큰 꿈을 가지고 살아가는 사나이 노 을







  • Profile
    타락천사 2000.08.06 23:24
    안녕하세여. 타락임다...^^



    질문만 가지곤 어떻게 구현해야 할지 모르겠지만...



    델파이에서 안된다구여? 픽~ ^^ 당근!! 됩니다.



    팁모아에 "[^^] CallBack 함수 ?_?" 를 보시면 함수포인터 쓰는 예가 나와여..



    함수 포인터 쓸려면 포인터를 잘 이해해야 하는데....ㅠㅠ



    VC++ 쓸때 쓴 "포인터 강좌" 중에 함수 포인터에 대한 내용이 있는데 보내드릴까여?



    델파이로 포팅해 달라구여? 제가 마튼 프로젝트가 빠듯해 도저히 시간이 안나네여..



    즐푸하세여..



    타락천사......



    • Hoon Reader
      2000.08.07 09:41
      날자가 문자 타입이면 숫자로 Casting하는건 불가능하죠. '-'를 찾아서 없애고 다시 Long으로 캐스팅을 ...
    • 강호규
      2000.08.07 04:05
      박동원 wrote: > 파라독스 DB를 사용하고 있습니다. > 쿼리를 사용하여 두날짜의 차이를 구하고자 합니다...
    • 빈거울
    • 2000.08.07 00:56
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 모승열
      2000.08.08 20:46
      빈거울 wrote: > 안녕하세요. > WM_COPYDATA 를 사용해서 데이타를 주고 받을 때. > 데이타를 던진 쪽을...
    • Hoon Reader
      2000.08.07 09:56
      일단 Data는 제대로 받는지 궁금합니다. CopyMemory(@data, Message.CopyDataStruct^.lpData, SizeOf(T...
    • 빈거울
      2000.08.07 18:25
      FindWindow에서 잘 찾습니다. 그리고 데이타도 잘 넘어 오고요. 그리고. 받는 부분을 메인에 놓은 것이 ...
    • 한비광
    • 2000.08.07 00:18
    • 3 COMMENTS
    • /
    • 0 LIKES
    • Hoon Reader
      2000.08.07 10:16
      ord는 byte 크기 밖에 지원안합니다. 즉, 256이 최고수라는 거죠. byte 크기는 Byte, Char 그리고 순...
    • 4master
      2000.08.07 03:41
      한비광 wrote: > 안녕하세요 > > 델파이 시작 한지 하루 된 왕초보 델피언 입니다 > > 자꾸 기본 ...
    • 모승열
      2000.08.07 03:22
      한비광 wrote: > 안녕하세요 > > 델파이 시작 한지 하루 된 왕초보 델피언 입니다 > > 자꾸 기본 ...
    • 이병돈
    • 2000.08.06 22:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Hoon Reader
      2000.08.07 10:44
      델파이 4.0 버젼에서는 Table에 DBComboBox와 연결이 잘 안되었음. 엄청나게 테스트 해보았는데도 잘 안되...
    • 4master
      2000.08.06 22:37
      이병돈 wrote: > dbcombobox를 사용해서 table의 특정 field 값을 선택할수 있도록 할려고 하는데.. > co...
    • 대희
    • 2000.08.06 21:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Hoon Reader
      2000.08.07 10:38
      garbage value (쓰레기값) 이라 부릅니다. 즉 초기화를 안하면 이전의 어떤 프로그램이 사용하던 그 값이 ...
    • 4master
      2000.08.06 22:32
      한비광 wrote: > 질문이 하나 더 있는데요 > > count := 0; > > 이런 식으로 초기화를 않해 주면 ...
    • 한비광
    • 2000.08.06 20:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 노을
      2000.08.06 23:21
      안녕하세요 노 을 입니다. 아래 답변을 보니 Block 을 나타낸다고 했죠? ^^.. 저는 추가적으로 좀더 ...
    • 4master
      2000.08.06 22:22
      한비광 wrote: > 중첩 for 문에서 보면 > 첫번째 for 에서는 begin 을 쓰는데 두번째 for 에서는 begin ...
    • parkisu
    • 2000.08.06 08:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • brucehan
    • 2000.08.06 06:52
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.08.08 03:43
      안녕하세요.. 님의 말씀은 이런거죠... 어떤식이 있는데.. 상황에 따라서 그식이 변한다는거죠.. 예...
    • Hoon Reader
      2000.08.07 10:34
      하고자 하는 바를 충분히 이해합니다. 님이 이해하기 어렵게 좀 어렵게 설명하겠습니다. 그런 것이 ...
    • 강인규
      2000.08.07 00:54
      뭘만드시려는지는 잘 모르겠지만 함 적어봅니다. > AVERAGE(A,5)라는 주식분석용 이동평균함수를 만...
    • 노을
      2000.08.06 23:39
      안녕하세요 노 을 입니다. 음 식의 복사?.. 라는 의미를 모르겠내요... 일단 Average(A,5); ...
    • 타락천사
      2000.08.06 23:24
      안녕하세여. 타락임다...^^ 질문만 가지곤 어떻게 구현해야 할지 모르겠지만... 델파이에서 안된다구...
    • 김미좌
    • 2000.08.06 06:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 4master
      2000.08.06 07:20
      김미좌 wrote: > query를사용하여 선택된 값을 메모에 입력시키는데... > > query1.open > 1) > memo...
    • 김미좌
      2000.08.06 07:41
      4master wrote: > 김미좌 wrote: > > query를사용하여 선택된 값을 메모에 입력시키는데... > > > > q...
    • 4master
      2000.08.06 07:24
      지친초보 wrote: > 파라독스7.0 델파이4.0 win98 > > 단순하게 전에 있던 데이터베이스의 필드를 다른 ...
    • 4master
      2000.08.06 07:35
      왕초보 wrote: > Key 값이 중복되지도 않구요. Key Violation Error 가 난 후에 다시 들어가보면 > 데이...
    • 강호규
      2000.08.06 00:57
      이럴 수도 있습니다. Key Violation Error 가 났다는 것은 대상 테이블에 중복된 값을 입력하려 할 때 발...
    • 이명근
    • 2000.08.06 00:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강호규
      2000.08.06 00:52
      저도 이곳에서 자료를 찾아 어제 완성한 부분인데요.. 시간이 없어 코드를 그냥 올립니다. 양해바랍니다. ...
    • 소금이
      2000.08.07 19:04
      강호규 wrote: > [질문] > 일반적으로 오라클DB에 접속하여 쿼리를 하게 되면 > 커서가 "모래시계+SQL"...
    • 강호규
      2000.08.09 05:24
      소금이 wrote: > 강호규 wrote: > > [질문] > > 일반적으로 오라클DB에 접속하여 쿼리를 하게 되면 > >...
    • 김일영
      2000.08.09 12:04
      상당히 어렵지 않나 싶네요. 제가 예전에 찾아본 기억으론 커서 바꾸는 부분이 TQuery의 멤버 함수 내에 ...
    • 권오정
    • 2000.08.05 23:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황선희
      2000.08.06 00:27
      권오정 wrote: > data가 > aaa a 100 > bbb a 100 > ccc b 200 > ddd c 100 > 이 ...
    • 호야
    • 2000.08.05 21:08
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.08.05 21:23
      호야 wrote: > 스트링그리드에서 여러행을 선택해서 > 붙여넣기를 할려고 합니다. > 이사이트를 밤세서 ...
    • 호야
      2000.08.08 01:28
      타락천사 wrote: > 호야 wrote: > > 스트링그리드에서 여러행을 선택해서 > > 붙여넣기를 할려고 합니다...
    • 타락천사
      2000.08.09 08:54
      즐거운 하루 되세여.. 지가 넘 바뻐서뤼...^^ 타락천사......
    • 호야
      2000.08.07 03:25
      뻥이 아닙니다. 제목이 뭐죠? 한라인을 추가/삭제하는걸 말하는 겁니까? 타락천사 wrote: > 호야 wro...
    • 김만성
    • 2000.08.05 21:01
    • 3 COMMENTS
    • /
    • 0 LIKES
    • parkisu
      2000.08.06 07:40
      김만성 wrote: > > 안녕하세요...~ 델피 가족 여러분.. > 오늘 또 질문 하나 올립니다.. > 이런건...
    • 타락천사
      2000.08.05 21:25
      김만성 wrote: > > 안녕하세요...~ 델피 가족 여러분.. > 오늘 또 질문 하나 올립니다.. > 이런건...
    • 김만성
      2000.08.06 04:24
      좀더 자세히 설명을 해주시겠어요.. " 쿼리를 하나 더 만드세요.. " 이 한마디만으로는 감이 오질...
    • azure
    • 2000.08.05 20:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.08.05 21:27
      안녕하세여.. 타락임다...^^ ADO를 쓰셨나여? 직접 Excel로 보는것 보단, ODBC가 빠르고, 그거보단 ...