마이크로소프트에서 제공하는 코드를 그대로 무작정 따라해보기 (아래 링크에 테스트 파일도 다 있음)

dotnet.microsoft.com/learn/ml-dotnet/get-started-tutorial/intro

 

테스트 대상 : 해당 문장이 긍정 인지 부정인지 판단하기

 - 원래 목표인 주식 자동 trading 을 하기위해 뉴스 기사의 제목이 긍정인지 부정인지 판단 할수 있도록 다듬어 갈 예정

 - 예제는 영문으로 작성 되어있어 영문으로 테스트 시작 -> 한글문장 까지 확대

 

 

1. 프로젝트 생성 

 - 나중에 화면에서 내가 입력한 문장이 긍정 인지 부정 판단 하는것을 보기위해 윈폼 으로 프로젝트 생성

2. Machine Learning

 

3. Text Classification

4. Local -> Data 

 

5. 파일 불러오기

Predict 컬럼 0(부정) or 1(긍정) 이 있는 컬럼 선택 => 트레이닝 시작

6. 트레이닝 하기

 - 컨텐츠에 따라 트레이닝 시간 다름 (How long should I train for? 클릭해서 확인)

7. 트레이닝 완료 

 - 대충 최대 81.91% 정확도

 

8. 평가하기 

 - 테스트 문장 넣고 Predict. -> Result 에 긍정 / 부정 가능성을 %로 표기해준다

9. 코드 생성 

 - Add Project 눌러서 코스 생성

 

10. 윈폼 화면 꾸미고

 - 여기서 부터는 마이크로소프트 링크에 없으니. 각자 응용필요

 

11. 윈폼 프로젝트에 ML.NET NuGet 추가

 

12. 버튼에 이벤트 및 코드 추가

 

13. 테스트 해보기

 - 99.8%라니 뭔가 잘 맞는듯 하다. 

 - 다른 쉬운문장 으로 해보니 잘 안 맞는다... 학습 데이터가 부족했던 모양이다.

 

 

다음 편에서는 문장 하나씩 테스트 해 가며 학습 시키는 기능 추가 예정

 

블로그 이미지

okgood0412

소프트웨어 개발을 즐기는 사람 입니다.

,

요즘 가장 핫 한 주제중에 하나인 주식과 관련해서 나 대신 적절히? 매수/매도를 해주는 프로그램을 만들어 보기로 한다.

이미 만들어진 AI 프로그램의 수익율이 10%도 되지 않는다고는 하지만, 재미 있을것 같아서 시도 해보려고 한다

아래와 같은것들이 일단 필요 할 예정이고 몰랐거나 도움이 될만한 자동화 기능이 더 늘어날수도 있을것 같음.

 

1. 뉴스 수집 : 크롤링 (crawling)

  - 관심종목별 기사 수집

  - 환율, 각종 지수

 

2. 수집된 기사 DB에 저장하기 : 데이터베이스 구축 

  - PostgreSQL 로 해볼 생각임

  

3. 기사 제목 긍/부정 체크 : 약간의 Machine Learning 

  - 수집된 기사의 제목이 긍정적 인지 부정적 인지 판단하기

 

4. 키움증권 API 신청

 

5. 거래 프로그램 개발 

  - C#으로 진행

  - 정해진 시간에 PC가 켜지고, 정해진 시간에 PC가 꺼지도록 할것임

  - 거래 성사시 알람 (메일) 기능 등등 여러가지 

  - 모든 transaction은 저장

 

 

 

언제 첫 transaction이 발생할지 나도 궁금함

 

 

 

 

'Project > Stock Trading (Private)' 카테고리의 다른 글

ML.NET 으로 머신 러닝 해보기 #1  (2) 2021.03.09
블로그 이미지

okgood0412

소프트웨어 개발을 즐기는 사람 입니다.

,

WCF 게시 중. 에러

 

 

 

Dot Net Framework 가 Server에 설치 되어 있지 않을경우 발생했음. full버전.

아래 경로에서 확인가능.

 

 

 

 

'C# > Web' 카테고리의 다른 글

C# WCF data 송/수신 buffer 설정  (0) 2016.09.12
블로그 이미지

okgood0412

소프트웨어 개발을 즐기는 사람 입니다.

,

Visual Studio C#에서 기본 제공하는 WebBrowser 컴포넌트는 구 버전인 Internet Explorer 7 엔진을 사용 하므로, 차세대 웹 기술인 HTML5 또는 Google map v3 최신 버전 등을 지원하지 못하는 문제가 있다. 


구글링으로 알아본 바로, 해결 방법으로는 3 party component 를 사용는 방법과 프로그램에 Registry 를 조작하는 코드를 심어 놓고 프로그램 구동시 설치된 IE버전과 같은 버전으로 셋팅하는 방법등이 있다.


두번째, Registry 조작(등록) 방법!

  - 현재 PC에 Install 된 IE 버전을 사용하도록 Registry 등록.


* Visual Studio 2015 버전 사용.

* 아래 링크를 참조 하여 테스트 하였습니다. 

1. http://stackoverflow.com/questions/23356194/cannot-force-webbrowser-control-to-render-using-current-version-of-ie


2. http://stackoverflow.com/questions/17922308/use-latest-version-of-ie-in-webbrowser-control



1. Winform Project 생성




2. Program.cs 파일에 소스추가.

  


namespace WebBrowserIEVersionTest

{

    static class Program

    {

        static Mutex mutex = new System.Threading.Mutex(false, "jMutex");


        /// <summary>

        /// The main entry point for the application.

        /// </summary>

        [STAThread]

        static void Main()

        {

            if(!mutex.WaitOne(TimeSpan.FromSeconds(2), false))

            {

                //another application instance is running

                return;

            }


            try

            {

                Application.EnableVisualStyles();

                Application.SetCompatibleTextRenderingDefault(false);


                var targetApplication = Process.GetCurrentProcess().ProcessName + ".exe";

                int browserver = 7;

                int ie_emulation = 11999;


                using (WebBrowser wb = new WebBrowser())

                {

                    browserver = wb.Version.Major;



                    if (browserver >= 11)

                        ie_emulation = 11001;

                    else if (browserver == 10)

                        ie_emulation = 10001;

                    else if (browserver == 9)

                        ie_emulation = 9999;

                    else if (browserver == 8)

                        ie_emulation = 8888;

                    else

                        ie_emulation = 7000;

                }


                try

                {

                    //string tmp = Properties.Settings.Default.Properties.

                    SetIEVersioneKeyforWebBrowserControl(targetApplication, ie_emulation);

                    Application.Run(new Form1());


                }

                catch (Exception ex1)

                {


                }


            }

            catch (Exception ex2)

            {


                

            } finally

            {

                mutex.ReleaseMutex();

            }            

        }


        private static void SetIEVersioneKeyforWebBrowserControl(string appName, int ieval)

        {

            RegistryKey Regkey = null;

            try

            {

                Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);


                //If the path is not correct or 

                //If user't have priviledges to access registry 

                if (Regkey == null)

                {

                    MessageBox.Show("Application FEATURE_BROWSER_EMULATION Failed - Registry key Not found");

                    return;

                }


                string FindAppkey = Convert.ToString(Regkey.GetValue(appName));


                //Check if key is already present 

                if (FindAppkey == ieval.ToString())

                {

                    MessageBox.Show("Application FEATURE_BROWSER_EMULATION already set to " + ieval);

                    Regkey.Close();

                    return;

                }


                //If key is not present or different from desired, add/modify the key , key value 

                Regkey.SetValue(appName, unchecked((int)ieval), RegistryValueKind.DWord);


                //check for the key after adding 

                FindAppkey = Convert.ToString(Regkey.GetValue(appName));


                if (FindAppkey == ieval.ToString())

                {

                    MessageBox.Show("Application FEATURE_BROWSER_EMULATION changed to " + ieval + "; changes will be visible at application restart");

                }

                else

                {

                    MessageBox.Show("Application FEATURE_BROWSER_EMULATION setting failed; current value is  " + ieval);

                }

            }

            catch (Exception ex)

            {

                MessageBox.Show("Application FEATURE_BROWSER_EMULATION setting failed; " + ex.Message);

            }

            finally

            {

                //Close the Registry 

                if (Regkey != null)

                    Regkey.Close();

            }

        }

    }

}


3. 실행결과.

  - 처음 실행시, 변경 됐음을 알림.


  - 동일한 프로그램 재 실행시 이미 변경되었다고 알림.


  - 기존 Default 버전 WebBrowser component 에서 발생했던 Script error가 이 방법을 통해 나타나지 않는것을 확인함!! 




'C# > WinForm' 카테고리의 다른 글

Google Calendar 연동 하기 (Schedule Sync)  (0) 2017.10.04
CefSharp install  (0) 2016.09.06
블로그 이미지

okgood0412

소프트웨어 개발을 즐기는 사람 입니다.

,

CefSharp install

C#/WinForm 2016. 9. 6. 06:00

Visual Studio C#에서 기본 제공하는 WebBrowser 컴포넌트는 구 버전인 Internet Explorer 7 엔진을 사용 하므로, 차세대 웹 기술인 HTML5 또는 Google map v3 최신 버전 등을 지원하지 못하는 문제가 있다. 


구글링으로 알아본 바로, 해결 방법으로는 3 party component 를 사용는 방법과 프로그램에 Registry 를 조작하는 코드를 심어 놓고 프로그램 구동시 설치된 IE버전과 같은 버전으로 셋팅하는 방법등이 있다.


먼저, CefCharp 설치 방법 확인.



* Visual Studio 2015 버전 사용.

* 아래 링크를 참조 하여 테스트 하였습니다. 

1. http://ourcodeworld.com/articles/read/173/how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application 


2. https://www.nuget.org/packages/CefSharp.WinForms/




1. Test Project 생성 (File -> New -> Project)



2. CefSharp 설치 (Tools -> NuGet Package Manager -> Manage NuGet Package Solution...)

  2.1. 먼저 CefSharp.Common 을 설치


 CefSharp.Common 이 참조하는 아래 패키지도 같이 설치됨.



Output에 Finished 가 나오면 끝.


2.2. 동일한 방법으로 CefSharp.WinForms 설치.



2.3. 최종 설치 목록 확인


3. Solution Platform 변경.

  - CefSharp 는 Any CPU 를 지원하지 않으며, x86 또는 x64만 중 성택해야함.

  - 아래 와 같이 Any CPU만 있을경우 target Platform을 생성해줌.



  - x64 추가



4. Project에 Library 추가




Project 경로 내에 packages/Cefsharp.WinForms.dll 추가



5. Source code 추가




6. Compile & Running





7 Trouble shooting

  1. DLL 간에 버전이 맞지 않으면, InitializeChromium() 호출시 에러 발생.

  2. 출력물 폴더에 DLL 이 복사 되지 않으면, DLL을 찾을수 없다는 에러 발생.

    - 아래 Cef 관련 DLL 목록 확인

  3. 관련 DLL이 모두 포함되어 있지만 DLL을 찾을수 없다는 에러가 발생하면

    - 수동으로 한번더 설치해 준다.

  





'C# > WinForm' 카테고리의 다른 글

Google Calendar 연동 하기 (Schedule Sync)  (0) 2017.10.04
C# WebBrowser version 변경  (0) 2016.09.07
블로그 이미지

okgood0412

소프트웨어 개발을 즐기는 사람 입니다.

,