본문 바로가기

키보드 매크로

원하는 금액 이상이 되면 액션을 이동할 수 있는 매크로 만들기. (코인, 주식, 선물 매매 호가창 비교 분석.)

반응형

무료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product1&wr_id=32 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순구매매크로 #이미지서치매크로 #한글매크로

  • 엔지엠 무료: 무료 (전체 기능의 50프로)
  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 에디터에서 [ OCR 체크 ]와 [ 변수 ] 그리고, [ 숫자 체크 ] 액션을 이용해서 주식 또는 코인의 호가창을 모니터링할 수 있습니다. 하지만, 복잡하게 로직을 구성해야 하는 경우 여러가지 액션을 사용해서 복잡도를 올릴 필요는 없죠^^; 그래서, 내가 매매할 금액을 설정하고 호가창에서 주식이나 코인 가격이 설정한 금액보다 크거나 작으면 매매할 수 있는 커스텀 모듈을 만들어봤습니다.

 

 

실시간으로 변화하는 코인 가격을 체크하고 있습니다. 설정 값은 79,950,000원입니다. 이 값보다 코인 가격이 크면 True로 이동하게 됩니다. 현재 이 글을 작성하고 있는 시점에 코인이 8천만원을 넘어섰네요. 코인에 투자하시는 분들은 정말 엄청난 수익을 내고 있을거 같아 부럽습니다^^; 자동 매매 관련된 내용은 홈페이지에 많이 있으므로, 참고하셔서 스크립트를 완성하면 됩니다. 이 커스텀 모듈을 만들기 위한 전체 코드는 아래와 같습니다.

using NGM.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CustomNumberCheckModule
{
    [Serializable]
    public class NumberCheckModel : NGM.Models.Interface.BaseCustomConditionFunctionModel
    {
        /// <summary>
        /// 도구 상자에 표시될 카테고리 이름을 가져옵니다.
        /// </summary>
        public override string DisplayCategory => "NGMsoftware";

        /// <summary>
        /// 도구 상자에 표시될 액션 이름을 가져옵니다.
        /// </summary>
        public override string DisplayName => "숫자 체크 타이머";

        private Rectangle ControlWindowRectangle { get; set; }

        [Category("Data")]
        [DisplayName("결과 값")]
        [Description("사용자가 설정한 조건에 맞는 값을 표시합니다.")]
        [Browsable(true)]
        [DefaultValue(0)]
        [ReadOnly(true)]
        public double Result { get; set; }

        /// <summary>
        /// 최대값 최소값을 계산하기 위해 데이터를 수집하는 시간입니다.
        /// </summary>
        [Category("Action")]
        [DisplayName("판단 시간")]
        [Description("설정한 시간동안 숫자를 판단합니다. 제한 시간 없이 판단하려면 -1을 입력하세요. (단위: 초)")]
        [Browsable(true)]
        [DefaultValue(60)]
        public int CheckTime { get; set; } = 60;

        [Category("Action")]
        [DisplayName("모델 선택")]
        [Description("문자 판독에 사용되는 모델을 선택합니다.")]
        [Browsable(true)]
        [DefaultValue(typeof(NGM.Definition.OcrModel), "Normal")]
        public NGM.Definition.OcrModel ModelOption { get; set; } = NGM.Definition.OcrModel.Normal;

        [Category("Action")]
        [DisplayName("OCR 영역")]
        [Description("OCR 문자 판독 영역을 설정하세요.")]
        [Browsable(true)]
        [DefaultValue(typeof(System.Drawing.Rectangle), "0,0,0,0")]
        [Editor(typeof(NGM.Models.TypeEditor.AreaCaptureEditor), typeof(System.Drawing.Design.UITypeEditor))]
        public Rectangle SearchArea { get; set; }

        [Category("Action")]
        [DisplayName("비교 값")]
        [Description("인식한 숫자 값이 이 값보다 크면 같음(True) 속성에 설정한 아이디로 이동합니다.")]
        [Browsable(true)]
        [DefaultValue(0.0)]
        public double CheckNumber { get; set; }

        public override bool? Execute(IMainView mainView, IPlayer player)
        {
            if (SearchArea.IsEmpty)
            {
                mainView.WriteOutput("필수 입력값이 누락되었습니다. OCR 영역을 선택하세요.");
                return null;
            }

            Image Target = null;
            Result = 0;

            DateTime checkTime = DateTime.Now;

            if (CheckTime < 0)
                checkTime = DateTime.MaxValue;
            else
                checkTime = DateTime.Now.AddSeconds(CheckTime);

            while (checkTime > DateTime.Now)
            {
                if (player.MainHandle == IntPtr.Zero)
                    Target = NGM.Utility.ScreenCaptureManager.ScreenShot.GetActiveImage(SearchArea, player);
                else
                    Target = NGM.Utility.ScreenCaptureManager.ScreenShot.GetInactiveImage(player, ControlWindowRectangle, SearchArea, true);

                if (Target == null)
                    continue;

                string number = NGM.Utility.OCRManager.Converter.ImageToText(
                    (Image)Target.Clone(),
                    NGM.Definition.Language.English,
                    ModelOption,
                    NGM.Definition.TesseractEngine.Default,
                    NGM.Definition.PageSegMode.SingleBlock,
                    false,
                    null,
                    null);

                Target?.Dispose();
                Target = null;

                if (!string.IsNullOrEmpty(number) && double.TryParse(System.Text.RegularExpressions.Regex.Replace(number, @"[^0-9.]", ""), out double n))
                {
                    if (n > CheckNumber)
                    {
                        Result = n;
                        return true;
                    }
                }
            }

            return false;
        }
    }
}

 

커스텀 모듈 사용 방법을 모르시는 분은 [ 여기 ] 학습 및 예제를 참고하세요.

커스텀 모듈을 다운로드 하려면 [ 여기 ]를 참고하세요.

 

이 커스텀 모듈을 약간 손보면 서버 시간과 동기화해서 뭔가 실행할 수 있는 모듈을 만들 수 있을겁니다. 네이버 시계나 엔코 시계를 판독하면 됩니다. 제 컴퓨터 기준으로 1분에 약 470회 정도 문자를 판독해서 읽어들일 수 있었습니다. 만약, 플레이어로 한다면 500회 이상 체크해서 루틴을 이동할 수 있겠죠^^;

 

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로

반응형