먼저 설명을 위해 어떻게 접근해야 될지 저도 난감하군요
엑셀 프로그램의 전반에 대하여 설명하자니 저도 지식이 짧고 엉뚱한 설명에 시간낭비가 될 것 같고 해서 트레이딩하는데 필요한 정도로 설명을 국한해야 할 것 같습니다.
이 방법이 오히려 프로그램을 처음 접하시는 분이 이해하기 쉬울 것 같습니다.
1) 매크로 코딩화면
- 먼저 엑셀을 구동하고 보면 엑셀화면 아래에 sheet1,sheet2... 탭이 보임
- sheet1탭에 마우스를 놓고 오른쪽 마우스버턴을 클릭하면 서브 메뉴가 나타나게 되고
그 메뉴들 중에 "코드보기"를 클릭하면 별도의 창이 아래와 같이 나타나게됨
- 이 화면에서 앞으로 프로그램을 입력 및 수정 등을 하게됨.
2) 엑셀 프로그램의 작성
- 화면의 메뉴에서 삽입메뉴를 선택한 후 "모듈"을 클릭.
- 그러면 붉은 원안의 내용처럼 화면 좌측에 모듈이 생기고 코딩창이 나타남.
- 이 창(Book1 - Moudle1(코드))이 트레이딩을 위한 대부분의 프로그램을 이안에서 작성
하면 되는 것임
- 여기서 모듈이란 하나의 프로그램을 말하며 모듈안에는 여러개의 프로시저(sub, Function)가 있게 되며 프로시저는 모듈안에서
각자의 기능을 수행하게됨.
* 참고로 화면하단에 직접실행창이 있는데 그 곳에 아래의 내용을 복사해서 엔터를 쳐보면 A3셀에 값이 입력된것이 보임
이렇게 간단하게 테스트 해볼 수도 있음
Worksheets("Sheet1").Range("A3").Value = 1
3) 코딩에 필요한 기본 지식
- 변수
-> 변수는 프로그램내에서 쓰일 값의 저장공간(장소)라 이해하면됨.
-> 변수선언은 코딩창의 맨 위에서 “Public 현재가, 시가, 종가 As single”로
선언하면됨
-> 전역변수니 지역변수니 등 여러 가지가 있지만 전역변수(public)로만 활용해도
큰 문제는 없음
-> 변수 선언시 사용되는 변수가 실수형(single)인지 정수형(integer)인지 참거짓
(boolean)등을 명시해야함
-> 변수에 값을 대입하려면
현재가 = 167.50(숫자)
상태 = “굿” (문자)
- 연산순서 :
예 : ((a+b)*c)/d -> a와b를 먼저 더한 다음 c를 곱하고 d로 나눔
- 비교
-> a = b a와b가 같다
-> a > b a가b보다 크다
-> a => b a가 b보다 같거나 크다
-> a <> b a가b가 같지 않다
- 제어문
-> if문 사용방법(a가 b보다 크면 aaa 프로시저를 수행하라)
if a>b then
call aaa
end if
if a>b then
call aaa
else
call bbb
end if
-> for문
for i = 1 to 100
Worksheets("sheet2").Cells(i, 1).Value = Worksheets("sheet1").Cells(i, 1).Value
next i
* sheet1의 A1부터 A100까지 sheet2의 A1부터 A100까지 값을 대입
Cells(i,1)에서 i는 for문에서 반복해서 할당되는 숫자이며 행을 의미하고 1이란
숫자의 의미는 셀주소의 A,B,C의 순서를 의미함. A는 1, B는 2, C는 3 .....
-> Select 문(A값이 얼마냐에 따라 다른 명령 수행)
A = 1
Select Case A
Case Is = 1
call bbb
Case Is = 2
call aaa
Case Is = 3
call ccc
Case Is = 4
call .....
End Select
- 프로시저 : 각각의 기능을 수행하는 할 수 있는 단위 프로그램
-> 작성방법
sub aaa()
작업 수행
end sub
-> 프로시저 호출(실행)
Call aaa
- 주석달기
‘ 이 프로그램은 ......
[']는 그 라인을 무시하고 프로그램을 실행하라는 의미
- 각 셀의 데이터 입력 및 참조
-> 셀의 데이터에 변수를 넣거나 비교하는 방법
if Worksheets("Sheet1").Range("A1").Value > Worksheets("Sheet1").Range("A2").Value then
Worksheets("Sheet1").Range("A3").Value = 현재가
end if
* 워크시트(sheet1)의 A1 셀이 A2셀 보다 크면 A3셀에 변수 현재가의 값을 입력
if 선물현재가 > 전고가 then
call 매수
end if
* 변수인 선물현재가의 값이 전고가의 값 보다 크면 매수 프로시저를 실행
- and or의 사용법
- > and
if 선물현재가 > 전고가 and 이평선값 < 선물현재가 then
call 매수
end if
* 변수인 선물현재가의 값이 전고가의 값 보다 크고 이편선값 보다 선물현재가가 크면 매수 프로시저를 실행
- > or
if 선물현재가 > 전고가 or 이평선값 > 선물현재가 then
call 매수
end if
* 변수인 선물현재가의 값이 전고가의 값 보다 크거나 이편선값 보다 선물현재가가 크면 매수 프로시저를
실행
설명이 부족하지만 이정도만 먼저 이해하면 앞으로 프로그램 설명을 해나가는데 문제없을 것 같습니다. 자세한 사항은
예제를 풀면서 그때그때 설명해 나가도록 하겠습니다.
프로그램을 아시는 분들은 허접할 수 도 있고 빈약한 내용이라 할 수 있지만 처음 접하시는 분들의 이해를 돕기위해 꼭 필요한 부분만 설명하였습니다.
감사합니다.
출처: fntec 동남풍님
[출처] 엑셀 프로그램의 이해|작성자 초남자



