CORE TERMINAL
DEMON PRODUCTION : 데몬 제작

업비트 매매 타격기 데몬 - 2번째 데몬

DATE: 2026-04-15 09:54
업비트 매매 타격
* 업비트 매매 타격기 데몬

1. 기존 매매 타격기를 복사해서 사용하는 데몬
  가. 기존 데몬 : daemon_upbit_trading_day.php
  나. 수정 : 몸콩 코드 수정 및 기본 타격기 수정
      ㄱ. 몸통 코드 내 기본 타격 코드 제거 : 순수 호출 기능 전환
      ㄴ. 기본 타격기 자체 기본 타격기능 구조 : 이전 몸통에 있던 기능 분리 후 완성
2. 기본 타격기
  가. 파일명 : day_target_code.php
  나. 타격조건
      ㄱ. 일, 요일, 시, 분
      ㄴ. 각 조건은 규합조건으로 서로 묶여서 타격 조건을 형성.
      ㄷ. 필수 조건 : 분
      ㄹ. 추가 조건에 따라 시간 조건 형성 : 규합 조건
3. 타격 기본 저건
  가. 기본 시간 주기 : 24시간
  나. 기본 시작 시간 : 00시
  다. 00시 : 무조건 시작 감지 발동 - 조건 충족시 발동
      ㄱ. 기본 값 : 분 - 조건 필터링 효과
4. 환경기
5. 상태 기록기
EXTRA CODE SNIPPET
<?php // day_time_code_1.php (시간 간격 단순 시장가 매수) // 1. [지갑 & DB 공유] 데몬 스코프 상속 global $upbit, $db_upbit; // [추가] 매매 장부 데이터 갱신 파일 로드 include_once('./db_trading.php'); // 2. [실행 여부 체크] if (($row['x2_run'] ?? '') != '1') return; // 3. [기본 옵션 가져오기] $coin_symbol = trim($row['x2_coin']); $buy_money = (int)preg_replace('/[^0-9]/', '', $row['wr_subject']); if (!$coin_symbol || $buy_money <= 0) return; // 4. [쿨다운 가드] 65초 이내 재실행 금지 static $last_fire = []; $fire_key = ($row['wr_id'] ?? '0') . '_' . basename(__FILE__); $now_ts = time(); if (isset($last_fire[$fire_key]) && ($now_ts - $last_fire[$fire_key]) < 65) return; // 5. [잔고 체크] 보유 현금이 5500원 이하거나 매수금액보다 적으면 패스 try { $cash_stmt = $db_upbit->prepare( \"SELECT cash_balance FROM daemon_upbit_Ticker_user ORDER BY collected_at DESC LIMIT 1\" ); $cash_stmt->execute(); $cash_row = $cash_stmt->fetch(PDO::FETCH_ASSOC); $cash_balance = $cash_row ? (float)$cash_row['cash_balance'] : 0; } catch (Throwable $e) { echo \" . date('Y-m-d H:i:s') . \"] ($coin_symbol) 잔고 조회 실패: \" . $e->getMessage() \"; return; } if ($cash_balance <= 5500) { echo \"[\" . date('Y-m-d H:i:s') . \"] ($coin_symbol) 잔고 부족(\" . number_format($cash_balance) . \"원) - 매수 패스\"; return; } if ($cash_balance < $buy_money) { echo \"[\" . date('Y-m-d H:i:s') . \"] ($coin_symbol) 잔고 부족(\" . number_format($cash_balance) . \"원) - 매수 패스\"; return; } // 6. [매수 실행] try { $result = $upbit->buy_market_order($coin_symbol, $buy_money); $log_time = date('Y-m-d H:i:s'); if (isset($result['uuid']) || isset($result['id'])) { $last_fire[$fire_key] = $now_ts; // ★ 성공 직후 쿨다운 기록 echo \"[$log_time] (간격매수) $coin_symbol : \" . number_format($buy_money) . \"원 발사 성공!\"; record_trading($db_upbit, [ 'cron_id' => $row['wr_id'], 'market' => $coin_symbol, 'side' => 'bid', 'ord_type' => 'price', 'req_price' => $buy_money, 'trigger_type' => 'interval', 'trigger_value' => null, 'response' => $result, 'result' => 'success', ]); } else { $msg = isset($result['error']['message']) ? $result['error']['message'] : '알 수 없는 오류'; echo \"[$log_time] (간격매수) $coin_symbol 실패... 이유: $msg\"; record_trading($db_upbit, [ 'cron_id' => $row['wr_id'], 'market' => $coin_symbol, 'side' => 'bid', 'ord_type' => 'price', 'req_price' => $buy_money, 'trigger_type' => 'interval', 'trigger_value' => null, 'response' => $result, 'result' => 'fail', 'message' => $msg, ]); } } catch (Throwable $e) { echo \" . date('Y-m-d H:i:s') . \"] ($coin_symbol) 매수 예외 발생: \" . $e->getMessage() .\"; } ?>
http://m72.kr/GNU/bbs/board.php?bo_table=daemon_day_upbit_02
LINK
업비트매매타격기데몬두번째일일매수 데몬