<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>DeepDukHoo</title>
    <link>https://deepdukhoo.tistory.com/</link>
    <description>개인적으로 관심 있는 주제를 정하고, 깊게 탐구하는 과정을 공유하는 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 23 Jun 2026 11:33:18 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>deepdukhoo</managingEditor>
    <image>
      <title>DeepDukHoo</title>
      <url>https://tistory1.daumcdn.net/tistory/8331652/attach/a2071e43572949b19415dcc2ba8a623e</url>
      <link>https://deepdukhoo.tistory.com</link>
    </image>
    <item>
      <title>나만의 비트코인 자동매매 프로그램 만들기 &amp;ndash; 4편(이평선/거래량 폭팔매매)</title>
      <link>https://deepdukhoo.tistory.com/4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=x7u6tqLtTYM&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=x7u6tqLtTYM&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=x7u6tqLtTYM&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bve2tw/hyZKQJZcF0/FC8jRUKz1L3bKZMN2Y9hsK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/DzXcQ/hyZLns92YZ/k5gKvap2j6DWCbqAQO3MKk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;나만의 비트코인 자동매매 프로그램 개발하기-4편(이평선/거래량 폭팔매매)&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/x7u6tqLtTYM&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;매매옵션: 엔진을 똑똑하게 움직이는 규칙&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 편은 &lt;b&gt;매매옵션&lt;/b&gt;을 중심으로, 엔진이 언제 달리고 언제 멈출지를 결정하는 &lt;b&gt;규칙 설계&lt;/b&gt;에 대해 정리합니다. 직감과 감정을 배제하고, 내가 원하는 전략을 &lt;b&gt;문장&amp;rarr;숫자&amp;rarr;코드&lt;/b&gt;로 바꾸는 과정이 핵심입니다. 이전 편의 시황검사(전일대비, MA 위치, 상승비율)를 &lt;b&gt;게이트&lt;/b&gt;로 삼고, 차트 신호(이평 돌파&amp;middot;거래량 폭발)를 &lt;b&gt;트리거&lt;/b&gt;로 두어, &amp;ldquo;좋은 시장에서만 기회에 반응하는&amp;rdquo; 구조를 만듭니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;왜 매매옵션인가?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동매매의 힘은 &lt;b&gt;일관성&lt;/b&gt;에 있습니다. 사람이면 흔들릴 장면에서도, 프로그램은 같은 규칙을 같은 방식으로 적용합니다. 특히 코인 시장은 24시간 열려 있고 변동성이 큽니다. 장이 나쁜데도 충동적으로 진입하거나, 반대로 장이 좋은데도 두려워서 멈추는 순간이 반복되면 수익성은 나빠지기 마련입니다. 매매옵션은 이런 비효율을 줄입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 &lt;b&gt;시황&lt;/b&gt;이 좋을 때만 매수 스위치를 켜고, 나쁘면 끄는 것으로 과도한 진입을 막습니다.&lt;/li&gt;
&lt;li&gt;그다음 &lt;b&gt;차트 트리거&lt;/b&gt;로 개별 종목의 타이밍을 잡습니다.&lt;/li&gt;
&lt;li&gt;모든 의사결정은 로그로 남아, 나중에 &amp;ldquo;어떤 환경+옵션 조합에서 성과가 났는지&amp;rdquo;를 냉정하게 복기하게 해줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 매매옵션은 &lt;b&gt;리스크 관리와 기회 포착을 동시에 자동화&lt;/b&gt;하는 장치입니다. 뼈대만 잘 세워도 심리&amp;middot;체력 부담이 크게 줄고, 전략의 반복 가능성이 올라갑니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매매옵션 전체 구조를 한눈에&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;옵션1(시황 연동 = 게이트)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;BTC 전일대비 등락률 임계치(예: &amp;ge; +0.5%)&lt;/li&gt;
&lt;li&gt;BTC 현재가 vs MA(n) (예: 현재가 &amp;gt; 60MA)&lt;/li&gt;
&lt;li&gt;상승 종목 비율(예: &amp;ge; 55%)&lt;/li&gt;
&lt;li&gt;&amp;rarr; &lt;b&gt;모두 충족 시 매수 스위치 ON&lt;/b&gt;, 하나라도 깨지면 OFF(선택: 자동 급매도)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;옵션2(차트 트리거 = 실행)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이평선(MA) 돌파&lt;/b&gt;: 연속 하방 캔들 뒤 상방 돌파 시 진입&lt;/li&gt;
&lt;li&gt;&lt;b&gt;거래량 폭발&lt;/b&gt;: 평균 대비 x배 이상 급증 시 진입(이례치 허용치로 왜곡 방지)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;합성&lt;/b&gt;: (이평 OR 폭발) 또는 (이평 AND 폭발) 등 조합 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;엔진 사이클&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;UI에서 옵션 읽기 &amp;rarr; 2) 시황 검사 &amp;rarr; 3) 게이트 판정 &amp;rarr;&lt;/li&gt;
&lt;li&gt;트리거 탐지 &amp;rarr; 5) 주문 &amp;rarr; 6) 로그 &amp;rarr; 7) 반복(Stop/F12 대기)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매매옵션1(시황 연동): 문지기를 세워라&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BTC가 어제보다 &lt;b&gt;분명히&lt;/b&gt; 강하고(전일대비 +), 구조적으로 &lt;b&gt;위쪽&lt;/b&gt;에 있고(MA 상방), 시장 전체가 &lt;b&gt;동조&lt;/b&gt;하고 있다(상승 비율 &amp;uarr;)&amp;mdash;이 세 가지가 동시에 성립될 때만 매수 스위치를 켠다면, 나쁜 날의 불필요한 진입은 자연스럽게 줄어듭니다. 반대로 조건이 깨지는 순간 스위치를 끄고, 필요하면 &lt;b&gt;자동 All Sell&lt;/b&gt;로 리스크를 잘라낼 수 있습니다.&lt;br /&gt;임계값은 시장 상황에 따라 달라집니다. 그래서 가상매매로 충분히 돌려보고, 로그를 근거로 조정해야 합니다. 오늘의 &amp;ldquo;보수적&amp;rdquo;이 내일의 &amp;ldquo;과도한 방어&amp;rdquo;가 될 수도, 오늘의 &amp;ldquo;공격적&amp;rdquo;이 내일의 &amp;ldquo;무모함&amp;rdquo;이 될 수도 있으니까요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추천 시작값(참고용)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전일대비: &lt;b&gt;+0.3% ~ +1.0%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;MA 조건: &lt;b&gt;현재가 &amp;gt; 20/50/60/120MA&lt;/b&gt; 중 1~2개&lt;/li&gt;
&lt;li&gt;상승 비율: &lt;b&gt;&amp;ge; 50~60%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;조합 예시
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보수형: (BTC +0.8%&amp;uarr;) AND (현재가 &amp;gt; 60MA) AND (상승&amp;ge;55%)&lt;/li&gt;
&lt;li&gt;공격형: (BTC +0.3%&amp;uarr;) AND (현재가 &amp;gt; 20MA) OR (상승&amp;ge;50%)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매매옵션2(차트 트리거): 신호를 정교하게&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이평선 돌파(핵심 포인트)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분봉: 1분(노이즈 크면 3/5/15분)&lt;/li&gt;
&lt;li&gt;MA: 단기(20/30/40), 중기(60/120)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;연속 하방 캔들 수&lt;/b&gt; 필터(예: 60~120): 중간에 한 번이라도 터치하면 &lt;b&gt;무효&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;진입: &amp;ldquo;연속 하방 유지 + 현재가가 MA 위로 종가 기준 돌파&amp;rdquo;&lt;/li&gt;
&lt;li&gt;청산: 고정 손익절(예: &amp;plusmn;0.5%) 또는 반대 시그널(재하락) 시 부분/전량&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;거래량 폭발(핵심 포인트)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평균 구간: 30~60개 캔들&lt;/li&gt;
&lt;li&gt;배수 임계: 5~30배(종목&amp;middot;시간대별 튜닝)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이례치 허용치&lt;/b&gt;: 5~15%로 평균 왜곡 방지&lt;/li&gt;
&lt;li&gt;진입: &amp;ldquo;최근 캔들 거래량 &amp;ge; 평균&amp;times;배수&amp;rdquo; &lt;b&gt;AND&lt;/b&gt; (양봉/이평 위치 조건)&lt;/li&gt;
&lt;li&gt;페이크 컷: &amp;ldquo;폭발+음봉&amp;rdquo; 제외, 연속 폭발 1~2캔들 요구 등 &lt;b&gt;확증 필터&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 중 무엇을 쓰든, 또는 어떻게 합성하든 &lt;b&gt;정답은 없습니다&lt;/b&gt;. 다만 &amp;ldquo;연속 하방 캔들 수&amp;rdquo;나 &amp;ldquo;이례치 허용치&amp;rdquo; 같은 노이즈 필터는 신호의 &lt;b&gt;품질을 끌어올리는 장치&lt;/b&gt;로 매우 유효합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매매옵션 운영&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI는 시황 패널과 옵션 패널을 나란히 두고, 활성/비활성 상태를 색과 아이콘으로 분명하게 표현합니다. Virtual 잔고로 안전하게 테스트하며, &amp;ldquo;It is bad timing to trade&amp;rdquo;가 반복되는 동안은 게이트가 닫혀 있음을 직관적으로 확인할 수 있습니다. 임계값을 약간 완화하면 어느 순간 스위치가 켜지고, &lt;b&gt;Full scan&amp;hellip;&lt;/b&gt; 로그가 뜬 뒤, 조건을 만족한 종목에서 &lt;b&gt;매수 로그&lt;/b&gt;가 발생합니다. 손익절에 닿거나 반대 시그널이 뜨면 &lt;b&gt;매도 로그&lt;/b&gt;가 이어지고, 거래소와 프로그램의 잔고&amp;middot;체결 내역이 일치하는지 바로 확인합니다.&lt;br /&gt;무엇보다 중요한 건 &lt;b&gt;로그&lt;/b&gt;입니다. 매수 시점의 시황 값, 당시 MA/거래량 상태, 매도 사유와 손익까지 전부 남습니다. 이 기록이 다음 임계값 조정의 근거가 됩니다. 전략은 데이터로 말하게 하세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[구현하기] 이평선(5 MA) 구하기 샘플 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1760105805060&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyupbit
import pandas as pd

df = pyupbit.get_ohlcv(&quot;KRW-BTC&quot;, count=10, interval=&quot;minute1&quot;)

df['ma_5'] = 0.0
for i in range(4, len(df)):  # i의 루프 범위는 4 ~ 9 즉, 5번째 데이터부터 MA 계산 가능
    ma_5_sum = df.iloc[i-4:i+1]['close'].sum()  # 5개 종가('close') 합계
    df.iloc[i, df.columns.get_loc('ma_5')] = ma_5_sum / 5 # # MA(이동평균) 값을 직접 계산
print(df)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;[구현하기] 거래량 폭팔 감지 샘플 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1760105761181&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyupbit
import pandas as pd

df = pyupbit.get_ohlcv(&quot;KRW-BTC&quot;, count=10, interval=&quot;minute1&quot;)
print(df)

latest_volume = df.iloc[9]['volume']   # 가장 최근 캔들 거래량 (마지막 캔들)
prev_9_volume_sum = df.iloc[0:8]['volume'].sum()  # 이전 9개 캔들 거래량 합계
avg_prev_9_volume = prev_9_volume_sum / 9 # 이전 9개 거래량의 평균 계산
is_volume_surge = latest_volume &amp;gt;= (avg_prev_9_volume * 10) # 10배 이상 높은지 확인

print(f&quot;-최근 거래량: {latest_volume}&quot;)
print(f&quot;-이전 9개 평균 거래량: {avg_prev_9_volume}&quot;)
print(f&quot;-배수: {latest_volume/avg_prev_9_volume}배&quot;)
print(f&quot;-10배 이상 폭증 여부: {'  YES (폭증!)' if is_volume_surge else '❌ NO'}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;구현과 안정성 체크&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;데이터 최적화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재가: 티커 100개 &lt;b&gt;청크 요청&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;전일가: &lt;b&gt;09:00 이후 1회 갱신/캐시&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;루프 제어&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start(F3): g_is_trade_running=True&lt;/li&gt;
&lt;li&gt;Stop(F4): 즉시 False 반영, 빠른 종료&lt;/li&gt;
&lt;li&gt;F12: &lt;b&gt;모두 매도(긴급 브레이크)&lt;/b&gt; 항상 대기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주문 안전장치&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;buy/sell_market_order 결과 None/에러 문자열 감지 &amp;rarr; &lt;b&gt;재시도+백오프&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;부분체결 잔량 재처리, 수수료 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스크 레일&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최대 동시 포지션 수, 종목당 최대 할당, 동일 티커 &lt;b&gt;쿨다운&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;거래소 잔고 &amp;harr; 내부 상태 &lt;b&gt;정합성 재동기화&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;튜닝과 실전 전환&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가상매매에서 &lt;b&gt;2~4주 이상&lt;/b&gt; 무중단으로 돌려 보세요. 장이 급변한 날, 횡보한 날, 잠잠한 날을 모두 통과해 봐야 임계값이 살아 있는지 알 수 있습니다. 그 과정에서 &amp;ldquo;너무 안 산다/너무 자주 산다&amp;rdquo; 같은 체감을 로그와 함께 분석해 조절합니다. 실전 전환은 &lt;b&gt;소액&lt;/b&gt;부터 단계적으로, 리스크 레일이 실제로 작동하는지(급매도&amp;middot;정합성 복구&amp;middot;중복진입 방지 등) 확인하면서 사이즈를 키우는 것이 안전합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출발선 프리셋(참고용, 바로 써보고 로그로 조정)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;옵션1(시황 게이트)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전일대비 &lt;b&gt;&amp;ge; +0.5%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;현재가 &lt;b&gt;&amp;gt; 60MA&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;상승비율 &lt;b&gt;&amp;ge; 55%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;옵션2(트리거)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(이평) 1분봉&amp;middot;&lt;b&gt;60MA&lt;/b&gt;, 연속 하방 &lt;b&gt;90개&lt;/b&gt; 후 상방 돌파&lt;/li&gt;
&lt;li&gt;(거래량) 1분봉&amp;middot;평균 &lt;b&gt;60&lt;/b&gt;, 배수 &lt;b&gt;&amp;ge; 20&lt;/b&gt;, 이례치 &lt;b&gt;10%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;청산&lt;/b&gt;: 손익절 &lt;b&gt;&amp;plusmn;0.5%&lt;/b&gt;, 또는 반대 시그널 시 부분/전량&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스크&lt;/b&gt;: 종목당 &lt;b&gt;100만 KRW&lt;/b&gt;, 동시 포지션 &lt;b&gt;3~5개&lt;/b&gt;, 쿨다운 &lt;b&gt;n분&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의: 위 값은 &amp;ldquo;시작점&amp;rdquo;일 뿐입니다. 계정&amp;middot;시간대&amp;middot;종목 성격에 따라 반드시 로그로 조정하세요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Next&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매매옵션은 전략의 &lt;b&gt;언어&lt;/b&gt;입니다. &amp;ldquo;좋을 때만 공격하고, 나쁠 때는 쉰다&amp;rdquo;는 우리의 직감을 숫자로 번역해 엔진에 새기는 일, 그것이 자동매매의 본질입니다. 시황(게이트)과 차트 트리거(실행자)의 균형을 잡고, 로그&amp;rarr;회고&amp;rarr;튜닝을 반복하면 전략은 점점 &lt;b&gt;나만의 습관&lt;/b&gt;이 됩니다. 다음 편에서는 여기에 &lt;b&gt;AI 보조 판단&lt;/b&gt;을 얹는 방법을 소개하겠습니다. 룰 기반에 AI를 더하면 무엇이 좋아지고 무엇을 조심해야 하는지, 실제 파이프라인과 함께 풀어 보겠습니다. 읽어주셔서 감사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;교육 관련 안내사항&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760098162514&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot; data-og-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&amp;amp;usp=embed_facebook&quot; data-og-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-og-host=&quot;docs.google.com&quot; data-og-description=&quot;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&quot; data-og-title=&quot;DeepDukHook 자동매매 프로그램 교육&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;
&lt;div style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;DeepDukHook 자동매매 프로그램 교육&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;자동매매&amp;nbsp;프로그램&amp;nbsp;교육&amp;nbsp;및&amp;nbsp;구매&amp;nbsp;문의&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760098162515&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot; data-og-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform?usp=embed_facebook&quot; data-og-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-og-host=&quot;docs.google.com&quot; data-og-description=&quot;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&quot; data-og-title=&quot;자동매매 프로그램 교육 및 구매 문의&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;
&lt;div style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;자동매매 프로그램 교육 및 구매 문의&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>가상자산</category>
      <category>BITCOIN</category>
      <category>UPbit</category>
      <category>개발하기</category>
      <category>교육</category>
      <category>비트코인</category>
      <category>업비트</category>
      <category>자동매매</category>
      <category>자동매매 프로그램</category>
      <category>직접 만들기</category>
      <category>코인</category>
      <author>deepdukhoo</author>
      <guid isPermaLink="true">https://deepdukhoo.tistory.com/4</guid>
      <comments>https://deepdukhoo.tistory.com/4#entry4comment</comments>
      <pubDate>Fri, 10 Oct 2025 21:19:25 +0900</pubDate>
    </item>
    <item>
      <title>나만의 비트코인 자동매매 프로그램 만들기 &amp;ndash; 3편(매매엔진)</title>
      <link>https://deepdukhoo.tistory.com/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=e_kt9F8PDVY&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=e_kt9F8PDVY&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=e_kt9F8PDVY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/Fz0yP/hyZLa8pNCh/ty2hRjoDwVarV8s4MbUYSk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/HAKAZ/hyZKFBF2QM/GQyO2ErAg0H26CEkLKHJIK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;나만의 비트코인 자동매매 프로그램 개발하기-3편(매매엔진)&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/e_kt9F8PDVY&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;매매 엔진(Engine): 시작&amp;middot;정지&amp;middot;주문&amp;middot;안전장치까지 한 번에 정리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요, DeepDukhoo입니다. 1편에서 &lt;b&gt;API 인증&amp;middot;잔고&amp;middot;로그&lt;/b&gt;, 2편에서 &lt;b&gt;시황 검사(전일대비&amp;middot;MA&amp;middot;상승비율)&lt;/b&gt; 를 다뤘다면, 3편은 실제로 &lt;b&gt;사고&amp;middot;파는 &amp;lsquo;엔진&amp;rsquo;&lt;/b&gt; 을 어떻게 설계하고 굴리는지에 집중합니다.&lt;br /&gt;이번 편의 핵심은 단 하나입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;엔진은 조건을 읽고 판단을 반복한다. 조건이 성립하면 정확히 사고/팔고, 아니면 아무것도 하지 않는다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래를 읽고 나면, 스스로 엔진을 켜고(F3) 끄는(F4) 흐름을 이해하고, 매수&amp;middot;매도&amp;middot;급매도(모두 매도)를 &lt;b&gt;안전하게&lt;/b&gt; 수행하는 구조가 머릿속에 그려질 겁니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매매 엔진, 무엇을 &amp;lsquo;엔진&amp;rsquo;이라 부르나?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차에서 엔진이 &lt;b&gt;연소&amp;rarr;피스톤 운동&lt;/b&gt;을 반복하며 출력을 만들듯, 자동매매 엔진은 &lt;b&gt;옵션 읽기&amp;rarr;시황 확인&amp;rarr;진입 판단&amp;rarr;주문 실행&lt;/b&gt;의 사이클을 끊임없이 반복합니다. 코드 관점에서 이 루프가 바로 trade_thread_routine() 입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Start(F3)&lt;/b&gt;: 루프 시작 &amp;rarr; 옵션/시황을 읽어 판단 &amp;rarr; 매수/매도 실행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stop(F4)&lt;/b&gt;: 루프 종료 &amp;rarr; 더 이상 판단/주문을 수행하지 않음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그&lt;/b&gt;: 매수/매도/시황 변동 사항을 모두 기록해 &amp;ldquo;나중에 왜 그렇게 됐는가&amp;rdquo;를 복기 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 포인트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;엔진은 &amp;ldquo;조건이 충족됐을 때만&amp;rdquo; 움직입니다.&lt;/li&gt;
&lt;li&gt;조건은 &lt;b&gt;UI에서 실시간&lt;/b&gt;으로 바꾸고, 바뀐 값은 다음 루프에서 즉시 반영됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가상(Virtual) / 실전(Real)&lt;/b&gt; 모드를 분리해 리스크를 통제합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;화면 &amp;amp; 실행 흐름&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초기 설정&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모드: Real 또는 Virtual&lt;/li&gt;
&lt;li&gt;예수금(예: 1,010,000원), 1종목 할당금(예: 1,000,000원), 수수료(예: 0.05%)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;매수/매도&amp;rdquo; 체크박스&lt;/li&gt;
&lt;li&gt;이번 데모는 &lt;b&gt;시황 검사 반영 OFF&lt;/b&gt;, &lt;b&gt;이평선 돌파 감지만 ON&lt;/b&gt; 으로 빠르게 동작 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Login(F2)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Upbit 로그인 성공 시, 좌측(거래소)과 우측(프로그램)의 &lt;b&gt;잔고 동기화&lt;/b&gt; 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Start(F3)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;엔진이 &amp;ldquo;부릉부릉&amp;rdquo; 돌기 시작&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Full Scan&amp;hellip;&lt;/b&gt; 로그로 감시 틱커 순회가 보임&lt;/li&gt;
&lt;li&gt;조건 충족 시 &lt;b&gt;매수 로그&lt;/b&gt;, 반대 조건 충족 시 &lt;b&gt;매도 로그&lt;/b&gt;가 즉시 쌓임&lt;/li&gt;
&lt;li&gt;실제 계정과 프로그램의 &lt;b&gt;보유 종목/잔고/수수료&lt;/b&gt; 변화가 일치하는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Stop(F4)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;루프 종료, 엔진 정지&lt;/li&gt;
&lt;li&gt;필요 시 &lt;b&gt;F12(급매도)&lt;/b&gt; 로 강제 정리(손절/리스크 차단) 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데모 목적: &amp;ldquo;엔진이 사고팔고를 제대로 하는가&amp;rdquo;를 빠르게 검증하기 위해 전략을 단순화(예: 10MA 돌파 + &amp;plusmn;0.2% 변동 시 즉시 청산)했습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;동작 방식(아키텍처)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;옵션 읽기&lt;/b&gt;: UI에서 &amp;ldquo;매수/매도/감지 파라미터(이평&amp;middot;거래량&amp;middot;임계치)&amp;rdquo; 등을 읽어 메모리에 저장&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시황 검사&lt;/b&gt;: 2편의 3대 지표(BTC 전일대비, MA 상하, 상승 비율)를 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;판단 &amp;amp; 실행&lt;/b&gt;: &amp;ldquo;지금이 매수/매도 타이밍인가?&amp;rdquo; &amp;rarr; 맞으면 &lt;b&gt;FullScanTradeTicker()&lt;/b&gt; 로 진입 &amp;rarr; 필요 시 &lt;b&gt;주문 함수&lt;/b&gt;(buy/sell)를 호출, 아니면 Skip&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 1)~3) 사이클이 &lt;b&gt;반복&lt;/b&gt;되다가, Stop(F4) 누르면 즉시 종료됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Mode&amp;middot;Start&amp;middot;Stop &amp;ndash; 옵션 읽기와 루프 제어&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;옵션 읽기 함수들&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;get_trademode_fromUI() : &lt;b&gt;Virtual/Real&lt;/b&gt; 모드&lt;/li&gt;
&lt;li&gt;get_tradeflags_fromUI() : &lt;b&gt;매수/매도&lt;/b&gt; 스위치&lt;/li&gt;
&lt;li&gt;get_market_sensing_info_fromUI() : 시황 검사 반영 방식(ON/OFF/임계치)&lt;/li&gt;
&lt;li&gt;get_ma/volume_options_fromUI() : 이평선/거래량 폭발 감지 파라미터(주기, 기간, 배수 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI에서 체크/입력된 값을 표준화된 자료구조(예: dataclass/tuple/dict)에 담아 엔진 루프가 쉽게 소비하도록 정리하는 것이 중요합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;루프 제어&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;trade_thread_routine() 내부의 while g_is_trade_running:&lt;/li&gt;
&lt;li&gt;Start(F3) &amp;rarr; g_is_trade_running=True&lt;/li&gt;
&lt;li&gt;Stop(F4) &amp;rarr; g_is_trade_running=False 로 바꾸고 루프 탈출&lt;/li&gt;
&lt;li&gt;반복 주기(딜레이)는 &lt;b&gt;API 레이트리밋&lt;/b&gt;과 시스템 부하를 고려해 조정&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;시황 검사 결과의 활용(게이트 역할)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵션에 &amp;ldquo;&lt;b&gt;시황검사 결과를 매매에 반영&lt;/b&gt;&amp;rdquo;이 켜져 있으면, 엔진은 아래와 같은 &lt;b&gt;게이트&lt;/b&gt;를 통과했을 때만 매매를 허용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;BTC 전일대비 +x% 이상&lt;/li&gt;
&lt;li&gt;BTC 현재가 &amp;gt; MA(n)&lt;/li&gt;
&lt;li&gt;상승 종목 비율 &amp;ge; y%&lt;/li&gt;
&lt;li&gt;&amp;rarr; 위 3개 중 2개 이상 충족 시 &lt;b&gt;매수 허용&lt;/b&gt;(AND/OR 조합 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시장이 나쁠 때 &lt;b&gt;자동으로 브레이크&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;높은 변동성에 휘둘리는 것을 방지&lt;/li&gt;
&lt;li&gt;전략의 &amp;ldquo;&lt;b&gt;언제 쉬어야 하나&lt;/b&gt;&amp;rdquo;를 매매엔진이 대신 지켜줌&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실제 거래 실행: FullScanTradeTicker()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수는 엔진이 &amp;ldquo;&lt;b&gt;이제 살 준비 됐다&lt;/b&gt;&amp;rdquo;라고 판단됐을 때 각 감시 종목을 도는 &lt;b&gt;현장 감독&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;매수 스위치 확인&lt;/b&gt;: tradebuy == True 인 경우만 진입&lt;/li&gt;
&lt;li&gt;&lt;b&gt;감지 로직 수행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Detect_HighVolume() : 거래량 폭발(평균 x배 등) 감지 &amp;rarr; True/False&lt;/li&gt;
&lt;li&gt;Detect_Over_LastMA() : 지정 MA 돌파 여부 감지 &amp;rarr; True/False&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;하나라도 True면 buy_order() 호출&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보유 종목에 대해 Sell 조건 충족 시 sell_order() 호출&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: 익절/손절 임계치 도달, 시간 기반 청산, 시황 악화 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 건 중복 매수/매도 방지, 이미 보유한 티커의 재진입 정책, 최대 동시 포지션 수 같은 리스크 레일을 반드시 두는 겁니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주문 함수 &amp;ndash; buy/sell의 안전한 패턴&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;매수(buy)&lt;/h3&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;# 개념 예시 (실전은 예외/재시도/로그 강화!)
try:
    buy_result = g_upbit.buy_market_order(ticker, volume)  # KRW 지정 금액
    if not buy_result or &quot;error&quot; in str(buy_result).lower():
        log_error(&quot;매수 실패, 재시도&quot;)
        # 재시도 정책(최대 횟수/백오프) 적용
    else:
        log_status(f&quot;매수 체결: {ticker}, KRW {volume}&quot;)
except Exception as e:
    log_error(f&quot;buy_market_order 예외: {e}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;체결 결과 유효성 검사&lt;/b&gt;(None/에러 메시지)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;재시도 정책&lt;/b&gt;(최대 횟수&amp;middot;백오프) + &lt;b&gt;레이트리밋&lt;/b&gt;(짧은 sleep)&lt;/li&gt;
&lt;li&gt;체결 후 &lt;b&gt;보유 종목/잔고/수수료 동기화&lt;/b&gt; 및 &lt;b&gt;로그 기록&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;매도(sell)&lt;/h3&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;try:
    sell_result = g_upbit.sell_market_order(ticker, qty)  # 수량 지정
    if not sell_result or &quot;error&quot; in str(sell_result).lower():
        log_error(&quot;매도 실패, 재시도&quot;)
    else:
        log_status(f&quot;매도 체결: {ticker}, qty {qty}&quot;)
except Exception as e:
    log_error(f&quot;sell_market_order 예외: {e}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;수량 단위&lt;/b&gt;(거래 최소 수량&amp;middot;소수점)에 유의&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부분 체결&lt;/b&gt; 대비 로직(남은 수량 재매도)&lt;/li&gt;
&lt;li&gt;최종 체결 후 &lt;b&gt;보유 수량 0 확인&lt;/b&gt; &amp;rarr; UI/DB 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;급매도(ALL SELL) &amp;ndash; F12로 한 번에 브레이크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동매매를 하다 보면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파라미터 실수&lt;/li&gt;
&lt;li&gt;시황 급변(뉴스&amp;middot;김프&amp;middot;급락)&lt;/li&gt;
&lt;li&gt;네트워크/API 이상&lt;br /&gt;같은 변수가 언제든 발생합니다. 그래서 &lt;b&gt;사용자 개입으로 즉시 포지션을 정리&lt;/b&gt;하는 핫키가 필수입니다.&lt;/li&gt;
&lt;li&gt;F12 누르면:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 &lt;b&gt;보유 중인 모든 종목&lt;/b&gt;을 순회&lt;/li&gt;
&lt;li&gt;이번 매도가 &lt;b&gt;엔진에 의한 자동 매도&lt;/b&gt;인지, &lt;b&gt;사용자 강제 매도&lt;/b&gt;인지 &lt;b&gt;구분&lt;/b&gt;해 기록&lt;/li&gt;
&lt;li&gt;sell_order() 로 일괄 청산&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;장점: &lt;b&gt;리스크 콜&lt;/b&gt;(Risk Call) 상황에서 &lt;b&gt;손실 확정&lt;/b&gt;을 빠르게 수행해 더 큰 리스크를 막음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;엔진 운영 체크리스트(실전 전 필수)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Virtual로 충분히 검증&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;진입 조건이 과도하게 느슨/빡센가?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;중복 진입/중복 청산은 없는가?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;수수료 반영 후에도 기대 성과가 나는가?&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시황 반영 모드&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;BTC 전일대비 / MA / 상승비율 임계치가 지금 시장에 맞는가?&lt;/li&gt;
&lt;li&gt;AND/OR 조합을 바꿔 보며 &lt;b&gt;최적 범위&lt;/b&gt; 찾기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스크 레일&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1종목당 최대 할당 KRW, 최대 동시 포지션, 최소 간격(쿨다운)&lt;/li&gt;
&lt;li&gt;단일 티커 연속 재진입 방지&lt;/li&gt;
&lt;li&gt;최악의 경우 F12 동작 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그&amp;middot;모니터링&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상태/에러 로그가 &lt;b&gt;사건 흐름&lt;/b&gt;을 재구성할 수 있을 만큼 충분한가?&lt;/li&gt;
&lt;li&gt;파일 롤링/용량 관리, 타임스탬프/식별자 포함 여부 점검&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;API/네트워크&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 실패 시 &lt;b&gt;재시도&lt;/b&gt; 횟수와 딜레이&lt;/li&gt;
&lt;li&gt;과호출 방지(배치 요청, 청크 분할)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정합성&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Upbit 측 보유/체결과 프로그램 내부 상태가 어긋나면 &lt;b&gt;즉시 재동기화&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;예외 발생 시 &lt;b&gt;엔진 자동정지 or 안전모드&lt;/b&gt;로 전환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;한눈에 보는 엔진 샘플 코드&lt;/h2&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;on F3 (Start):
  g_is_trade_running = True
  while g_is_trade_running:
    opts  = read_options_from_UI()
    mrkt  = run_market_sensing_if_enabled(opts)
    if not is_trade_allowed(mrkt, opts):
        continue
    FullScanTradeTicker(opts)

on F4 (Stop):
  g_is_trade_running = False

FullScanTradeTicker(opts):
  for ticker in watchlist:
    if opts.tradebuy and (OverMA(ticker, opts) or HighVolume(ticker, opts)):
        buy_order(ticker, size_by_rule)
    if should_sell(ticker, opts):
        sell_order(ticker, qty_all_or_partial)

on F12 (Sell All):
  for ticker in my_positions:
    sell_order(ticker, full_qty, reason=&quot;user_emergency&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;ldquo;엔진은 심플할수록 강하다&amp;rdquo;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔진의 본질은 &lt;b&gt;반복과 판별&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;옵션을 읽고,&lt;/li&gt;
&lt;li&gt;시황을 보고,&lt;/li&gt;
&lt;li&gt;조건이면 &lt;b&gt;정밀하게&lt;/b&gt; 실행하고,&lt;/li&gt;
&lt;li&gt;아니면 &lt;b&gt;냉정히&lt;/b&gt; 넘어갑니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;심플함&lt;/b&gt;은 곧 &lt;b&gt;안정성&lt;/b&gt;입니다.&lt;br /&gt;리스크 레일&amp;middot;로그&amp;middot;예외처리를 갖춘 &lt;b&gt;단단한 엔진&lt;/b&gt;에, 다음 편부터 설명할 &lt;b&gt;매매 옵션(전략)&lt;/b&gt; 을 얹으면 실제로 &lt;b&gt;24/7 돌아가는 개인 자동매매&lt;/b&gt;의 뼈대가 완성됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Next&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매매옵션 1 - 시황 결과(전일대비&amp;middot;MA&amp;middot;상승비율)를 &lt;b&gt;매매 옵션과 어떻게 연결&lt;/b&gt;할 것인가&lt;/li&gt;
&lt;li&gt;매매옵션 2 - 이평선 돌파 감지 매매 / 거래량&amp;nbsp;폭팔&amp;nbsp;감지&amp;nbsp;매매&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;교육 관련 안내사항&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760092706743&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot; data-og-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&amp;amp;usp=embed_facebook&quot; data-og-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-og-host=&quot;docs.google.com&quot; data-og-description=&quot;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&quot; data-og-title=&quot;DeepDukHook 자동매매 프로그램 교육&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;
&lt;div style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;DeepDukHook 자동매매 프로그램 교육&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;자동매매&amp;nbsp;프로그램&amp;nbsp;교육&amp;nbsp;및&amp;nbsp;구매&amp;nbsp;문의&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760092706744&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot; data-og-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform?usp=embed_facebook&quot; data-og-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-og-host=&quot;docs.google.com&quot; data-og-description=&quot;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&quot; data-og-title=&quot;자동매매 프로그램 교육 및 구매 문의&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;
&lt;div style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;자동매매 프로그램 교육 및 구매 문의&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>가상자산</category>
      <category>BITCOIN</category>
      <category>UPbit</category>
      <category>개발하기</category>
      <category>교육</category>
      <category>비트코인</category>
      <category>업비트</category>
      <category>자동매매</category>
      <category>자동매매 프로그램</category>
      <category>직접 만들기</category>
      <category>코인</category>
      <author>deepdukhoo</author>
      <guid isPermaLink="true">https://deepdukhoo.tistory.com/3</guid>
      <comments>https://deepdukhoo.tistory.com/3#entry3comment</comments>
      <pubDate>Fri, 10 Oct 2025 19:52:03 +0900</pubDate>
    </item>
    <item>
      <title>나만의 비트코인 자동매매 프로그램 만들기 &amp;ndash; 2편(시황검사)</title>
      <link>https://deepdukhoo.tistory.com/2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/CB5Rffgu_jk&quot;&gt;https://youtu.be/CB5Rffgu_jk&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=CB5Rffgu_jk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/BkHtC/hyZKLu598q/kXQto4Kp0M5zm1qONkjlO1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/65zaJ/hyZKF9vHBh/OD46qzkDH8bKuyf1QUkYbK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;나만의 비트코인 자동매매 프로그램 개발하기-2편(시황검사)&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/CB5Rffgu_jk&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&amp;ldquo;지금 시장을 읽어라: 시황 검사 기능&amp;rdquo;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요, DeepDukhoo입니다. 1편에서 자동매매의 큰 그림과 기본 동작(로그인&amp;middot;잔고&amp;middot;로그)을 살펴봤다면, 2편은 &lt;b&gt;자동으로 &amp;lsquo;매수 스위치&amp;rsquo;를 켤지 말지 결정하는 핵심 지표&lt;/b&gt;를 어떻게 프로그램화했는지에 집중합니다.&lt;br /&gt;핵심 메시지는 단순합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;알트가 아무리 날아도 결국 모든 코인은 비트코인을 따라간다.&amp;rdquo;&lt;br /&gt;그래서 우리는 BTC의 현 위치와 시장 전체의 흐름을 먼저 읽고 나서, 매수/매도 로직에 반영합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시황 검사 기능, 왜 필요한가?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람이 손으로 수십&amp;middot;수백 개 코인을 동시에 보긴 어렵습니다. 반면 프로그램은 가능하죠. 게다가 &amp;ldquo;&lt;b&gt;좋은 시황일 때만 공격적으로, 나쁠 때는 방어적으로&lt;/b&gt;&amp;rdquo;라는 리스크 관리가 자동화되면 괜한 추격 매수&amp;middot;감정 매매가 줄어듭니다. 본 프로그램의 시황 검사는 다음 &lt;b&gt;3가지 축&lt;/b&gt;으로 구성됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;BTC 전일 대비 등락률&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BTC의 지정 MA(이평선) 돌파 여부&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전체 코인 중 &amp;lsquo;어제보다 오른 종목&amp;rsquo;의 비율&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 3가지 축을 조합해 &lt;b&gt;매매 옵션&lt;/b&gt;이 켜질 조건을 만족하면 자동으로 스위치 ON, 아니면 OFF가 되도록 설계했습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기준 시점: 왜 &amp;ldquo;오전 9시&amp;rdquo;인가?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Upbit 기준으로 &amp;ldquo;전일/금일&amp;rdquo; 경계는 &lt;b&gt;자정이 아니라 오전 9시(KST)&lt;/b&gt; 입니다. 전 세계 표준 시간인 &lt;b&gt;UTC 0시&lt;/b&gt;가 한국 시간으로 &lt;b&gt;오전 9시&lt;/b&gt;이기 때문이죠. 실전에서 9시 전후에는 시세&amp;middot;지표가 바뀌는 일이 잦습니다. 따라서 전일 대비 지표를 계산할 때 &lt;b&gt;&amp;lsquo;전일 종가&amp;rsquo; = KST 기준 오전 9시에 바뀐 기준값&lt;/b&gt;으로 보시면 헷갈림이 없습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시황 검사 ① &amp;ndash; BTC 전일 대비 &amp;uarr;/&amp;darr;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무엇을 보나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 시점 BTC 가격이 &lt;b&gt;어제(전일 기준가)&lt;/b&gt; 대비 몇 % 상승/하락했는지.&lt;/li&gt;
&lt;li&gt;상승이면 녹색, 하락이면 회색 등으로 &lt;b&gt;UI에서 바로 해석&lt;/b&gt;할 수 있게 표현.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;어떻게 계산하나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Get_yesterday_closed_price('KRW-BTC') 로 전일 종가를 구합니다. 내부적으로 pyupbit.get_ohlcv(ticker, count=2)의 &lt;b&gt;첫 번째 row&lt;/b&gt;에서 종가를 사용합니다(9시 경계).&lt;/li&gt;
&lt;li&gt;pyupbit.get_current_price('KRW-BTC') 로 현재가를 받아 등락률을 계산합니다.&lt;/li&gt;
&lt;li&gt;공식: gab = round((현재가 - 전일종가) / 전일종가 * 100, 2)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;등락률 임계치(예: +1.0% 이상 or -1.0% 이하)를 별도로 둬서, &lt;b&gt;강한 방향성&lt;/b&gt;이 나올 때만 매수 스위치를 열도록 만들면 허수 신호를 줄일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시황 검사 ② &amp;ndash; BTC 이평선(MA) 돌파&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무엇을 보나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내가 설정한 &lt;b&gt;MA 값(예: 20/60/120)&lt;/b&gt; 을 기준으로 &lt;b&gt;BTC 현재가가 MA 위인가, 아래인가&lt;/b&gt;를 실시간 확인합니다.&lt;/li&gt;
&lt;li&gt;프로그램에서는 &lt;b&gt;1분봉&lt;/b&gt; 기준으로 MA를 잡고, &lt;b&gt;화살표(&amp;uarr;/&amp;darr;)&lt;/b&gt; 로 직관적으로 보여줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;어떻게 계산하나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pyupbit.get_ohlcv('KRW-BTC', interval='minute1')로 1분봉 데이터를 가져옵니다.&lt;/li&gt;
&lt;li&gt;최근 200개 봉을 기준으로 MA를 계산하고 &lt;b&gt;가장 마지막 값&lt;/b&gt;을 last_MA_value로 반환합니다.&lt;/li&gt;
&lt;li&gt;비교: 현재가 &amp;gt; last_MA_value이면 &lt;b&gt;&amp;uarr;(상방)&lt;/b&gt;, 아니면 &lt;b&gt;&amp;darr;(하방)&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;MA 주기&lt;/b&gt;는 전략 취향입니다. 단기 매매는 20/40, 스윙은 60/120처럼 테스트하시고, &lt;b&gt;시장 국면&lt;/b&gt;(상승장&amp;middot;횡보장&amp;middot;하락장)에 따라 교체할 수 있게 UI에서 변경 가능하게 설정하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시황 검사 ③ &amp;ndash; 어제 대비 &amp;lsquo;상승 종목&amp;rsquo; 비율&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무엇을 보나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;KRW 마켓 전체(약 170여 종목) 중에서 &lt;b&gt;현재가가 전일 종가보다 높은 종목 비율&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;예: 170개 중 102개 상승 &amp;rarr; &lt;b&gt;60%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;어떻게 계산하나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pyupbit.get_tickers(fiat='KRW')로 전체 티커를 가져옵니다.&lt;/li&gt;
&lt;li&gt;100개 단위로 쪼개 pyupbit.get_current_price()를 호출해 &lt;b&gt;대량 현재가&lt;/b&gt;를 효율적으로 수집합니다.&lt;/li&gt;
&lt;li&gt;각 티커에 대해 Get_yesterday_closed_price(ticker)로 전일 종가를 받아 현재가와 비교, &lt;b&gt;상승/하락 카운팅&lt;/b&gt;을 누적합니다.&lt;/li&gt;
&lt;li&gt;마지막에 &lt;b&gt;상승 비율 = 상승개수 / 전체개수 &amp;times; 100&lt;/b&gt; 으로 계산합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 비율이 &lt;b&gt;50% 이상&lt;/b&gt;이면 최소한 &amp;ldquo;전체 시장이 약하지는 않다&amp;rdquo;는 신호로 볼 수 있습니다. 저는 상승 비율 임계값을 &lt;b&gt;50~60%&lt;/b&gt; 구간에서 두고, BTC쪽 조건과 함께 &lt;b&gt;교차 허용&lt;/b&gt;(AND/OR)을 걸어 매수 스위치를 제어합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;화면&amp;middot;동작: 어떻게 보이고, 어떻게 쓰나?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI는 최대한 단순하게 배치했습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;BTC 전일 대비 등락률&lt;/b&gt;: BTC(+x.xx%) 같은 형태로 값과 함께 &lt;b&gt;배경색&lt;/b&gt;(상승=녹색, 하락=회색)으로 즉시 판단.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BTC MA 돌파 여부&lt;/b&gt;: 입력한 MA 값 옆에 &lt;b&gt;&amp;uarr;/&amp;darr;&lt;/b&gt; 아이콘.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상승 종목 비율&lt;/b&gt;: [Today&amp;uarr;/ALL] 58% (=101/175) 식으로 &lt;b&gt;비율과 분자/분모&lt;/b&gt;를 같이 표기.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그 창&lt;/b&gt;: 위 3가지 값이 바뀔 때마다 &lt;b&gt;히스토리&lt;/b&gt;를 남겨, 장중에 무슨 변화가 있었는지 복기할 수 있게 했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 순서는 간단합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그인(F2) &amp;rarr; &lt;b&gt;가상 거래(Virtual)&lt;/b&gt; 모드/또는 Real 선택 &amp;rarr; &lt;b&gt;매매(F3)&lt;/b&gt; 시작 &amp;rarr; 시황 검사가 &lt;b&gt;주기적으로 갱신&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;MA 값, 등락률 임계치, 비율 임계치는 &lt;b&gt;UI에서 즉시 변경&lt;/b&gt; 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;구현 핵심 요약 (개발 관점)&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;전일 종가&lt;/b&gt;: get_ohlcv(count=2) &amp;rarr; iloc[0]['close'] 사용 (Upbit 09:00 기준)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;현재가&lt;/b&gt;: get_current_price(ticker)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MA 계산&lt;/b&gt;: 최근 200봉 불러와 사용자 MA 주기로 단순 이동평균 &amp;rarr; 마지막 값 사용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대량 현재가&lt;/b&gt;: 티커 목록을 100개씩 &lt;b&gt;chunk&lt;/b&gt; 로 나눠 한 번에 요청&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캐싱/최적화&lt;/b&gt;: 전일가(어제 종가)는 &lt;b&gt;하루 1회&lt;/b&gt; 저장 후 사용(09시 이후 갱신)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예외 처리&lt;/b&gt;: API 실패/None 반환 시 안전하게 continue 또는 기본값 처리 + 로그 기록&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UI 갱신&lt;/b&gt;: 값 변동 시에만 TextBox 업데이트(불필요한 깜박임/리소스 낭비 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;전략에 어떻게 녹여 쓰나? (매수 스위치의 예)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 조건(AND 조합):&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;BTC 전일 대비 +1% 이상&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BTC 현재가 &amp;gt; MA(60)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상승 종목 비율 &amp;ge; 55%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 세 항목이 동시에 충족되면 매수 허용(Switch=ON). 하나라도 깨지면 OFF로 둡니다. 이렇게 &lt;b&gt;시황 &amp;rarr; 매매옵션&lt;/b&gt; 경로가 연결되면, 장이 꺾였을 때 자동으로 브레이크가 걸립니다. 반대로 &lt;b&gt;좋을 때만&lt;/b&gt; 공격적인 진입이 가능하죠.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실무에서 자주 묻는 질문(FAQ)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q1. 전일가가 0이거나 None이면?&lt;/b&gt;&lt;br /&gt;A. 신규 상장/데이터 공백일 가능성이 큽니다. 해당 티커는 &lt;b&gt;건너뛰고&lt;/b&gt; 로그에 기록하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q2. 임계치 추천이 있나요?&lt;/b&gt;&lt;br /&gt;A. 시장 환경에 따라 달라집니다. 백테스트&amp;middot;가상 거래를 통해 &lt;b&gt;본인 계정의 체감&lt;/b&gt;에 맞는 숫자를 찾는 것이 답입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q3. MA 주기는 몇 분봉이 좋나요?&lt;/b&gt;&lt;br /&gt;A. 본 예시는 1분봉으로 설명했지만, &lt;b&gt;5분/15분&lt;/b&gt;도 충분히 유효합니다. 진입 빈도&amp;middot;노이즈 허용도에 따라 선택하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q4. 계산이 느려요.&lt;/b&gt;&lt;br /&gt;A. 대량 현재가는 &lt;b&gt;청크&lt;/b&gt; 로 요청, 전일가는 &lt;b&gt;하루 1회 갱신 캐싱&lt;/b&gt;으로 속도를 끌어올리세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시황을 읽는 습관이 곧 리스크 관리다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동매매에서 가장 위험한 순간은 &lt;b&gt;시황이 나쁜데도 계속 매수하는 상황&lt;/b&gt;입니다. 본 편에서 구현한 3가지 지표는 &lt;b&gt;과열&amp;middot;과매도, 위험&amp;middot;안전&lt;/b&gt;을 가르는 기본 파운데이션입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;BTC 방향&lt;/b&gt;(전일 대비)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BTC 위치&lt;/b&gt;(MA 상/하)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시장 폭 넓이&lt;/b&gt;(상승 종목 비율)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 세 가지를 &lt;b&gt;데이터로 묶어&lt;/b&gt; 항상 같은 기준으로 판단하세요. &amp;ldquo;오늘은 느낌이 좋아서&amp;rdquo; 같은 주관이 끼어들 틈이 줄어듭니다. 또한 본 프로그램은 &lt;b&gt;가상 거래&lt;/b&gt;로 충분히 검증해 둔 뒤, 동일한 매개변수로 실전에 태울 수 있게 설계되어 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편(3편)에서는 시황검사에서 켜고/끄는 &lt;b&gt;매수 스위치&lt;/b&gt;를 실제 주문 로직에 어떻게 연결하는지 다룹니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;매매 모드&lt;/b&gt; (사기/팔기 스위치)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;매매 시작/중지&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모두 급매도(ALL SELL)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;체결&amp;middot;슬리피지&amp;middot;수수료&amp;middot;실수 방지 플로우까지 한 번에 정리하겠습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;교육 관련 안내사항&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760088081484&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot; data-og-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&amp;amp;usp=embed_facebook&quot; data-og-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-og-host=&quot;docs.google.com&quot; data-og-description=&quot;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&quot; data-og-title=&quot;DeepDukHook 자동매매 프로그램 교육&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;
&lt;div style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;DeepDukHook 자동매매 프로그램 교육&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;자동매매&amp;nbsp;프로그램&amp;nbsp;교육&amp;nbsp;및&amp;nbsp;구매&amp;nbsp;문의&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760088081485&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot; data-og-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform?usp=embed_facebook&quot; data-og-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-og-host=&quot;docs.google.com&quot; data-og-description=&quot;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&quot; data-og-title=&quot;자동매매 프로그램 교육 및 구매 문의&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;
&lt;div style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;자동매매 프로그램 교육 및 구매 문의&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>가상자산</category>
      <category>BITCOIN</category>
      <category>UPbit</category>
      <category>개발하기</category>
      <category>교육</category>
      <category>비트코인</category>
      <category>업비트</category>
      <category>자동매매</category>
      <category>자동매매 프로그램</category>
      <category>직접 만들기</category>
      <category>코인</category>
      <author>deepdukhoo</author>
      <guid isPermaLink="true">https://deepdukhoo.tistory.com/2</guid>
      <comments>https://deepdukhoo.tistory.com/2#entry2comment</comments>
      <pubDate>Fri, 10 Oct 2025 18:36:05 +0900</pubDate>
    </item>
    <item>
      <title>나만의 비트코인 자동매매 프로그램 만들기 &amp;ndash; 1편</title>
      <link>https://deepdukhoo.tistory.com/1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/P0cu-MQNQ4E&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/P0cu-MQNQ4E&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=P0cu-MQNQ4E&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/npSNN/hyZKaCbQHL/ncFvNesrtkmQxkpNID6Dd1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/dpawSb/hyZKJcXHd1/PNiL9rdJZRLRarUNCtWmfK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;나만의 비트코인 자동매매 프로그램 개발하기-1편&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/P0cu-MQNQ4E&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;왜 직접 만들어야 하고, 첫걸음은 무엇인가&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;프로젝트의 방향&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 &lt;b&gt;개발자 출신 IT 엔지니어&lt;/b&gt;로, 대기업과 스타트업을 오가며 10년 이상 현업을 경험했습니다. 개인적으로는 20대부터 &lt;b&gt;국내주식과 가상자산&lt;/b&gt;을 꾸준히 병행해 왔고, 최근에는 창업을 통해 IT 컨설팅과 개인 프로젝트를 병행하고 있습니다.&lt;br /&gt;이 시리즈의 방향은 분명합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;개인용 자동매매 프로그램을 내 스스로 직접 만든다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;남이 만든 위탁형 매매봇을 쓰기보단, &lt;b&gt;내 전략을 코드로 구현&lt;/b&gt;하고 수익/손실에 대한 &lt;b&gt;책임/권리까지 모두 내 몫&lt;/b&gt;으로 가져간다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 이 시리즈는 &amp;ldquo;&lt;b&gt;내 손으로 만드는 법&lt;/b&gt;&amp;rdquo;을 다룹니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 &amp;lsquo;직접&amp;rsquo; 자동매매를 만들어야 할까?&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;직장인의 현실: 시간이 없다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전업 투자자가 아닌 이상 &lt;b&gt;시장에 붙어 있기 어렵습니다.&lt;/b&gt; 출근, 미팅, 퇴근, 가족 일정&amp;hellip; 앱을 열어 호가창을 보는 것조차 꾸준히 하기 힘들죠. 가끔 알림을 보고 예약 매수/매도만 하는 수준으로는 장기적 성과를 내기가 어렵습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;거래소 앱의 구조적 한계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거래소 앱은 본질적으로 &lt;b&gt;안정성&amp;middot;성능&amp;middot;보안&lt;/b&gt;에 집중합니다. 그게 맞습니다. 하지만 사용자가 원하는 &lt;b&gt;세밀한 전략(예: 거래량 폭발 인지 후 조건부 분할매수, 시황 지표와 연동한 필터링, 대규모 종목 동시 스캐닝)&lt;/b&gt; 은 기본 앱만으로 구현이 어렵습니다. 결국 &lt;b&gt;거래소 API&lt;/b&gt;를 이용해 직접 개발해야 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;외부 위탁형 봇의 리스크&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상용 자동매매 솔루션을 쓰면 편해 보이지만, &lt;b&gt;Access/Secret 키를 외부에 맡겨야&lt;/b&gt; 하는 경우가 다수입니다. 이는 본인 계정과 자산에 대한 &lt;b&gt;전권을 제3자에게 위임&lt;/b&gt;하는 것과 유사합니다. 또한 &lt;b&gt;예상치 못한 오류&lt;/b&gt;나 전략의 불투명성, 데이터 보존/보안 문제도 존재합니다.&lt;br /&gt;&lt;b&gt;&amp;ldquo;수익&amp;middot;손실의 책임도 내가 지고, 수익도 내가 모두 가져간다.&amp;rdquo;&lt;/b&gt; 그러려면 &lt;b&gt;직접 만들고 이해&lt;/b&gt;해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;개발 장벽? 요즘은 생각보다 낮습니다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과거엔 코딩이 높은 장벽이었지만, 지금은 &lt;b&gt;ChatGPT&amp;middot;클로드&lt;/b&gt; 같은 AI 도구가 강력한 보조자가 됐습니다. &lt;b&gt;Python 기초문법&lt;/b&gt;만 이해해도 함수&amp;middot;클래스&amp;middot;예외처리&amp;middot;스레딩 같은 필요한 부분을 AI와 함께 빠르게 보완할 수 있습니다.&lt;br /&gt;핵심은 &lt;b&gt;&amp;ldquo;무엇을 만들 것인지&amp;rdquo;&lt;/b&gt; 와 &lt;b&gt;&amp;ldquo;어떤 전략을 코드로 녹일지&amp;rdquo;&lt;/b&gt; 입니다. 이 시리즈는 바로 그 부분을 안내합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1편에서 다루는 핵심: &amp;lsquo;뼈대&amp;rsquo;를 세운다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1편은 전략보다 &lt;b&gt;인증&amp;ndash;조회&amp;ndash;로깅&lt;/b&gt; 같은 &lt;b&gt;필수 골격&lt;/b&gt;을 먼저 세웁니다. 골격이 단단해야 이후 전략(이평선/거래량/시황)의 붙임이 매끄럽습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기술 스택&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;OS&lt;/b&gt;: Windows 10/11&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IDE&lt;/b&gt;: VS Code&lt;/li&gt;
&lt;li&gt;&lt;b&gt;언어&lt;/b&gt;: Python 3.10+&lt;/li&gt;
&lt;li&gt;&lt;b&gt;거래소 래퍼&lt;/b&gt;: pyupbit (Upbit API를 편리하게 다루는 라이브러리)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UI&lt;/b&gt;: tkinter (가벼운 데스크톱 UI를 빠르게 구성)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기타&lt;/b&gt;: threading, logging(혹은 직접 로그창), configparser(환경설정)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;API Key 발급(보안 모드 ON)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Upbit(또는 유사 거래소) &lt;b&gt;마이페이지 &amp;rarr; Open API 관리&lt;/b&gt; 에서 &lt;b&gt;Access / Secret&lt;/b&gt; 키 발급&lt;/li&gt;
&lt;li&gt;&lt;b&gt;권한 설정&lt;/b&gt;: 필요한 권한만 최소로.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;허용 IP 등록&lt;/b&gt;: 집/서버 IP를 확실히 등록(유동IP라면 변경되었는지 수시 체크)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키는 절대 외부에 유출하지 말고, &lt;b&gt;환경파일(ini/env)&lt;/b&gt; 로 분리해 코드와 격리합니다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tip&lt;br /&gt;&amp;ldquo;갑자기 API가 안 된다?&amp;rdquo; &amp;rarr; 가장 먼저 IP 변경 여부를 의심하세요. ISP/공유기 설정 변경으로 허용 IP가 달라지는 경우가 많습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로그인(인증) 로직&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UI 단축키 &lt;b&gt;F2&lt;/b&gt; &amp;rarr; pyupbit.Upbit(ACCESS, SECRET) 인스턴스를 생성&lt;/li&gt;
&lt;li&gt;성공하면 g_upbit와 같은 &lt;b&gt;세션 객체&lt;/b&gt;를 전역 혹은 서비스 컨텍스트에 보관&lt;/li&gt;
&lt;li&gt;이후 모든 매매&amp;middot;조회는 이 객체를 경유&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;잔고/보유 종목 조회&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예수금&lt;/b&gt;: g_upbit.get_balance('KRW')&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보유 종목&lt;/b&gt;: g_upbit.get_balances()&lt;/li&gt;
&lt;li&gt;UI에 예수금(원화), 각 종목의 &lt;b&gt;평가액&amp;middot;평단가&amp;middot;수량&lt;/b&gt;을 표기&lt;/li&gt;
&lt;li&gt;이 값들은 이후 &lt;b&gt;리스크 관리(최대 포지션&amp;middot;1종목당 할당액)&lt;/b&gt; 의 핵심 입력이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로그 시스템&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Status Log&lt;/b&gt;: 정상 동작, 시그널 포착, 체결 결과 등&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Error Log&lt;/b&gt;: 예외/실패 기록(시간 스탬프 포함)&lt;/li&gt;
&lt;li&gt;UI와 파일 양쪽으로 남겨 &lt;b&gt;재현 가능한 상태&lt;/b&gt;를 만듭니다.&lt;/li&gt;
&lt;li&gt;장시간 동작하는 프로그램일수록 &lt;b&gt;로그 품질&lt;/b&gt;이 성능 못지않게 중요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;앞으로 붙일 매매 전략(미리보기)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1편에서는 뼈대만 다루지만, 다음 편부터는 프로그램이 &amp;ldquo;&lt;b&gt;스스로 판단&lt;/b&gt;&amp;rdquo;할 수 있게 매 &lt;b&gt;매매 전략 기능&lt;/b&gt;을 추가합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시황 검사(2편 예고)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;BTC 전일대비 상승/하락률&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BTC 기준 이평선(MA) 상&amp;middot;하단 여부&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전체 코인 중 전일대비 상승 비율&lt;/b&gt;&lt;br /&gt;&amp;rarr; 이 3가지만 있어도 &amp;ldquo;오늘은 위험 회피(현금 보유)&amp;rdquo; vs &amp;ldquo;조건부 진입&amp;rdquo;의 큰 결정을 자동화할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이평선 돌파(추가 전략)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코인마다 캔들 종류(예: 1분봉)와 &lt;b&gt;MA 기간&lt;/b&gt;을 지정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캔들이 MA 아래에서 위로 관통&lt;/b&gt;하는 시점을 트리거로 포착&lt;/li&gt;
&lt;li&gt;포착 순간 &lt;b&gt;로그 기록 + 가상매수(검증) or 실매수(실전)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;거래량 폭발(추가 전략)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일정 기간 평균 대비 &lt;b&gt;n배 이상 거래량 급증&lt;/b&gt;을 탐지&lt;/li&gt;
&lt;li&gt;급등이 노이즈인지, &lt;b&gt;가격/시황/MA&lt;/b&gt; 등 다른 조건과 &lt;b&gt;합성 판단&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;합성 결과가 좋으면 &lt;b&gt;스위치 ON(매수)&lt;/b&gt;, 아니면 &lt;b&gt;대기/무효&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 전략은 단일 지표보다 다중 조건의 AND/OR 합성이 유효합니다.&lt;br /&gt;예: &amp;ldquo;시황 괜찮음 AND 이평 돌파 AND 거래량 폭발&amp;rdquo; &amp;rarr; 매수 강도&amp;uarr;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;가상 매매(모의투자)로 &amp;lsquo;데이터&amp;rsquo;를 얻자&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기엔 실전보다 &lt;b&gt;가상 매매&lt;/b&gt; 모드를 강력 추천합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이유 ①: &lt;b&gt;전략 검증&lt;/b&gt;이 먼저다.&lt;/li&gt;
&lt;li&gt;이유 ②: 전략에 따라 &lt;b&gt;슬리피지&amp;middot;수수료&lt;/b&gt;가 수익률을 크게 좌우.&lt;/li&gt;
&lt;li&gt;이유 ③: 장시간 동작 시 &lt;b&gt;예외&amp;middot;연결&amp;middot;재시작&amp;middot;리밋&lt;/b&gt; 등 안정성 이슈가 반드시 등장.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가상 매매로 &lt;b&gt;일/주/월별 성과&lt;/b&gt;를 기록하고, &lt;b&gt;성능 개선 사이클(가설&amp;rarr;실험&amp;rarr;측정&amp;rarr;개선)&lt;/b&gt; 을 굴리면 실전에 옮겼을 때 흔들림이 적습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;UI는 심플하게, 성능&amp;middot;안정성에 에너지 투자&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인용 툴은 &lt;b&gt;예쁘지 않아도 됩니다.&lt;/b&gt;&lt;br /&gt;대신 아래에 힘을 쓰는 편이 훨씬 실용적입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;스레드/타이머/예외처리&lt;/b&gt;: 장시간 구동 안정성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자동 재시작/복구&lt;/b&gt;: API 오류&amp;middot;네트워크 단절 대응&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그/지표 기록&lt;/b&gt;: 회고와 개선의 근거&lt;/li&gt;
&lt;li&gt;&lt;b&gt;설정값(ini/json)&lt;/b&gt;: 전략&amp;middot;파라미터를 UI에서 쉽게 조정&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동매매의 본질은 &amp;lsquo;자동&amp;rsquo;이 아니라 &amp;lsquo;내 전략의 반복 실행&amp;rsquo;입니다.&lt;br /&gt;첫날 할 일은 멋진 전략이 아니라 튼튼한 뼈대&amp;mdash;인증&amp;middot;조회&amp;middot;로그&amp;mdash;를 세우는 것입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2편에서는 &lt;b&gt;&amp;ldquo;지금 시장을 읽어라(시황 검사)&amp;rdquo;&lt;/b&gt; 를 주제로, BTC 기준의 전일대비 변화, MA 상&amp;middot;하단 위치, 전체 상승 비율을 &lt;b&gt;코드와 UI&lt;/b&gt;로 붙여봅니다. 이 신호만 있어도 &amp;ldquo;오늘은 들어간다/쉬어간다&amp;rdquo;의 큰 그림을 프로그램이 스스로 결정할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;교육 관련 안내사항&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760083872709&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;DeepDukHook 자동매매 프로그램 교육&quot; data-og-description=&quot;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&quot; data-og-host=&quot;docs.google.com&quot; data-og-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; data-og-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&amp;amp;usp=embed_facebook&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.google.com/document/d/14lZh8IhLHVC0e7cyaosFuCJ4anlHVQOoDs3t7g9na5A/edit?tab=t.f77ualrsrlr3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1G5ag/hyZKLaKZsY/XleJ7RUw00HU1mc6ckLYA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;DeepDukHook 자동매매 프로그램 교육&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요? 반갑습니다. 먼저, 제 채널과 컨텐츠에 관심을 가져 주셔서 진심으로 감사드립니다! 저의 경험을 빗대어 말씀드리자면 개인이 자동 매매 프로그램을 직접 개발하기 위해서는 파이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;자동매매&amp;nbsp;프로그램&amp;nbsp;교육&amp;nbsp;및&amp;nbsp;구매&amp;nbsp;문의&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760083920880&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;자동매매 프로그램 교육 및 구매 문의&quot; data-og-description=&quot;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API &quot; data-og-host=&quot;docs.google.com&quot; data-og-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; data-og-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform?usp=embed_facebook&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSd03zTybWK8nkYQIm9pvYrIbHfyGtmwtZAQMxuE7QmwZ47daQ/viewform&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RDMI7/hyZLkXudO1/MkracSmz16cTQYegSzmw91/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;자동매매 프로그램 교육 및 구매 문의&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;- 교육은 자동 매매 프로그램을 직접 개발 하시는 것을 최종 목표로 원격으로 1:1 원포인트 레슨 형태의 유료 교육을 제공해 드리는 것을 의미합니다. - 구매는 (업비트 및 빗섬과 같은 거래소 API&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>가상자산</category>
      <category>BITCOIN</category>
      <category>UPbit</category>
      <category>개발하기</category>
      <category>교육</category>
      <category>비트코인</category>
      <category>업비트</category>
      <category>자동매매</category>
      <category>자동매매 프로그램</category>
      <category>직접 만들기</category>
      <category>코인</category>
      <author>deepdukhoo</author>
      <guid isPermaLink="true">https://deepdukhoo.tistory.com/1</guid>
      <comments>https://deepdukhoo.tistory.com/1#entry1comment</comments>
      <pubDate>Fri, 10 Oct 2025 17:36:58 +0900</pubDate>
    </item>
  </channel>
</rss>