추천 게시물

VIM에서 VIMDIFF 실행 및 VIMDIFF 단축키

 어떤 두 파일의 다른 점을 비교해야하는 경우가 많다. 특히 어떤 파일을 수정하고 뭘 고쳤는지 까먹었다거나, 데이터들의 차이를 비교하는 등의 경우에 활용도가 높다. VIMDIFF를 사용해서 바로 두 파일을 비교해도 되지만 VIMDIFF 파일명 파일명을 치기도 귀찮고, 열려있는 VIM을 그대로 활용하고 싶을 때가 많다. 그럴 때 아래와 같이 현재 열려있는 VIM 창에서 바로 VIMDIFF를 할 수 있다. 1. ^w+v로 창을 2개로 분리한다. 그럼 두 창 모두 현재 파일이 보일 것이다. 2. 둘 중 한개의 창에 다른 파일을 open한다. (불러오는 단축키는 :e, 새롭게 생성하는 커맨드는 :enew) 3. :diffthis 를 커맨드로 입력한다. 4. vimdiff를 종료하고 싶으면 :diffoff 를 입력한다. 5. ^w+c를 입력하여 2개의 창 중 1개를 닫는다. 아래는 VIMDIFF에서 내가 주로 사용하는 단축키 들이다. ^w + (좌우)화살표 : 활성 윈도우 선택 dp : 현재 윈도우의 라인을 다른 윈도우의 내용으로 변경 여러 줄 변경이 필요하면 Visual Mode로 진입한 뒤 :'<,'>diffget 을 커맨드에 입력한다. :'<,'>는 Visual에서 :을 입력하면 바로 선행 입력된다. do : 반대로 다른 윈도우의 내용을 현재 윈도우의 내용으로 변경한다. 커맨드로는 diffput이다. zo : 동일한 내용이 접혀있으면 펼쳐서 보여준다. zc : 일치하는 내용은 접는다. zr : 양쪽 윈도우 모두 펼친다. zm : 양쪽 윈도우 모두 접는다.

Bitget 선물 1분봉 (1min candle, ohlc) 데이터 수집 코드 (파이썬)

퀀트 트레이딩 시스템을 개발하고 적용하기 위해서는 아이디어가 잘 작동하는지 확인하는 작업이 필요하다. 나같은 회로 개발자들은 Testbench 또는 시뮬레이션이라 부르는데, 이 쪽 분야에서는 백테스트(Backtest)라는 용어가 흔히 사용된다. 이 Backtest를 하기 위해서 다양한 데이터가 필요한데, 일반적으로 차트 분석을 기반으로 하는 시스템 트레이딩은 캔들(시고저종)과 거래량이 주요 지표이다. 이 글을 검색해서 왔다면 뭐 다 아는 얘기일테니 서론은 이만하고 바로 코드를 예시로 적어보겠다. import configparser import hmac import base64 import json import time import os import requests import pandas as pd from datetime import datetime, timedelta import pytz import hashlib # Configurations config = configparser.ConfigParser() config.read( 'config.ini' ) try : API_KEY = config.get( 'bitget' , 'API_KEY' ) API_SECRET_KEY = config.get( 'bitget' , 'API_SECRET' ) except configparser.NoOptionError as e: print ( f"Config error: { e } " ) API_KEY = 'your_api_key_here' API_SECRET_KEY = 'your_secret_key_here' API_BASE_URL = 'https://api.bitget.com' # Helper functions def get_timestamp (): ret

FFT Peak 주파수 추정 방식 (이차 보간법, 가중평균법, parabolic inpterpolation, weighted average) 비교

이미지
FFT를 그냥 진행하면 Leakage(누설)가 발생한다. 누설이라는 용어보단 Leakage가 편해서 Leakage로 표현하겠다. 이는 우리가 흔히 FBIN이라고 하는 주파수 Resolution이 입력 신호와 맞지 않아 발생하는 흔한 현상이다. 이해를 돕기 위해서 부연하면 FBIN은 FFT의 X축의 간격이다. 이런 현상을 완화시키기 위해서 윈도우를 씌우기도 하지만 Leakage를 완전히 막지는 못한다. 따라서 정확한 Peak 주파수를 얻기 위해선 Peak 주파수 주변 신호를 활용해 정확도를 높이는 방식을 적용해 볼 수 있다. 여기서 소개할 방식은 2가지로 신호에서 흔히 사용되는 이차 보간법과 가중평균법이다. 결론적으로 주파수를 가변하며 FFT를 하고 FFT의 결과에서 2가지 방식을 통해 주파수를 다시 계산했다. 그리고 원래 입력 주파수와 계산된 주파수의 차이를 Error로 하여 결과에 Plot하는 코드를 작성했다. 코드는 OCTAVE로 작성되어서 MATLAB에서도 무난히 동작할 것이다. 코드 예제 이차보간법 코드 (Parabolic Interpolation) % Load the signal package pkg load signal; % Octave Script for Precise Peak Frequency Estimation Considering Windowing Effect % Parameters Fs = 128;                   % Sampling frequency NFFT = 2048;                % FFT points freq_range = 0.5:0.0001:4;     % Frequency range to test errors = zeros(size(freq_range)); % Initialize error array % Window function (Hann window) window = hann(NFFT); for i = 1:length(freq_range)     % Generate the signal with

FFT 예제: 윈도우 적용 시 Normalized Wegith Value, SNR 계산, Sinusoidal + Noise Signal Generation, Prime Cycle Frequency 등 포함

측정한 신호를 FFT로 변환하기 위해서는 다양한 방법들을 고려 해야 한다. 단순히 인터넷에 있는 ideal sinewave를 바탕으로 깔끔하게 나온 FFT 결과는 현실적으로 적용하기 어렵기 때문이다. 아래 항목들이 측정 및 FFT 코드 작성 시 고민해야할 사항이다. 1. Normalize 2. Sine wave cycle 3. Signal and Noise power, rms calculation 4. Window selection and weight 각각의 항목에 관해서는 나중에 별도의 글로 다시 정리할 예정이다. 아래는 위의 사항을 고려하여 작성한 FFT 코드이다. OCTAVE를 기준으로 작성되었다. FFT 코드 clc; pkg load signal; pkg load io; % Functions function weight_result = fft_weight2(window, NFFT)   %weight_result=1/sum(abs(fft(window,NFFT)./NFFT.*2));   window_fft=abs(fft(window,NFFT)./NFFT);   weight_result=1/sqrt(sum(window_fft.^2))   %window2=window.^2;   %weight_result=sqrt(sum(abs(fft(window2,NFFT)./NFFT)));   return; end function adjusted_frequency = closest_prime_frequency(sampling_time, target_frequency)   % Calculate the number of cycles for the target frequency   num_cycles = sampling_time * target_frequency;   % Define the search range around num_cycles   search_range = 1000;   % Calculate the lower and upper bounds for prime se

가상화폐 선물 용어: Market Price, Mark Price, Last Price, Index Price

선물 거래소에서 가격을 표시할 때, Market Price와 Mark Price, Last Price, Index Price를 선택할 수 있습니다. 이번 글에서는 위의 가격들이 의미하는 바를 각각 알아보겠습니다. Market Price와 Mark Price의 차이 Market Price Market Price는 실제 비트겟 거래소에서 거래된 체결 가격을 의미합니다. 가장 마지막에 체결된 가격이 Market Price가 됩니다. 이는 거래소에서 실시간으로 거래되는 가격이기 때문에, 거래가 발생할 때마다 변동됩니다. 바이낸스와 같은 거래소에서는 Last Price라는 용어로 사용합니다. 즉, Market Price = Last Price인 것입니다. Mark Price 일부 거래소의 경우 Mark Price를 바탕으로 청산이나 레버리지, 손익 계산에 활용합니다. 이러한 가격을 사용하는 이유는 거래소 마다 가격이 차이가 있고, 특히 거래량이 작은 일부 상품은 다른 거래소와의 가격의 차이 (괴리율)이 커질 수 있기 때문입니다. 만약 어떤 코인의 가격이 1000원인데 다른 거래소에서는 500원까지 가격이 떨어졌다고 할 때, 나의 실제 손실은 500원을 기준으로 해야 합니다. 따라서 청산, 손익 계산 등에 활용 됩니다. 일반적으로 호가 창의 (mid-price)를 바탕으로 하며, 다른 거래소의 선물 가격을 추가하여 왜곡이 적도록 보정합니다. 거래 시 Mark Price 활용 거래량이 작은 거래소의 경우 Market Price (Last Price)가 실제 코인의 가격보다 더 크게 움직이거나 오히려 작게 움직이는 경우가 있습니다. 크게 움직이는 경우는 갑작스러운 청산으로 인한 Covering이 발생하면 얕은 호가창을 뚫고 가격이 움직이는 상황을 예로 들 수 있습니다. 그리고 작게 움직이는 경우는 거래 자체가 체결 되지 않아서 가격이 그대로 유지되는 것처럼 보이는 경우입니다. 따라서 예측하기 어려운 가격의 왜곡으로 인해 원하는 가격에 STOP이나 Trigger 주문 등이 동

인터넷 가입 피싱 후기

이미지
몇 달 전에 아버지 사업장에 인터넷 만기가 시점이 되어서 교체하는데 피싱에 당한 이야기를 공유합니다. 저와 같은 피해가 발생하지 않길 바라기 때문입니다. 아버지는 인터넷 요금 같은 건 잘 모르셔서 그 동안 너무 비싼 요금제를 써서 예전에 바꿔드렸습니다. 바꾸는 김에 그냥 요금도 부담해 드렸습니다. 만기를 2달 남기고 그 전에 가입 도와드린 업체에서 연락이 왔습니다. 만기 시점이 와서 다른 인터넷으로 교체하면 현금을 지급해 준다는 이야기였습니다. 어차피 3년 약정으로 바꿀 생각이었던 지라 알겠다고 하고 진행했습니다. 기존에 인터넷 교체는 많이 해왔기 때문에 별다른 의심을 하진 않았고, 제 연락처와 약정 만료 시점도 알고 있기 때문에 기존에 신청했던 업체라고 생각했습니다. KT가 약정이 2달 남았는데, 2달 동안의 KT 요금도 지원해주고 다양한 혜택도 준다는 것이었습니다. 저는 유플러스와 결합이 되어있어서 유플러스로 진행을 요청했는데, 사업장이라서 유플러스는 어렵다는 이야기를 들었습니다. 그래서 결국 SKB로 신청을 했습니다. SK 브로드밴드 설치 후 현금은 생각보다 적었고, KT 요금 만큼 지원해 주지도 않았습니다. 게다가 알아서 KT 해지도 진행해 준다는 이야기가 있어서 별도로 해지도 하지 않았는데, 요금이 KT 약정 만료 이후에도 나가고 있었습니다.  아래는 해당 문자입니다. 인터넷을 찾아보니 인터넷 설치 피싱에 당했다는 것을 알게 되었습니다. 왜냐하면 인터넷을 교체한 이후로도 기존에 설치한 업체라면서 전화가 10통 정도 왔으니까요. 그 때는 조금 이상하다는 생각만 했지 피싱이라고는 생각하지 못했습니다.  이후 아정당이라는 사이트를 찾아서 유플러스로 신청했는데 문제없이 설치되었습니다. 결국 KT는 중복으로 총 5개월 요금을 납부했으며, SKB는 100M 인터넷으로 신청했으면 2만원 초반 대로 납부하면 될 것을 3.2만원으로 더 많이 납부하게 되었습니다. 해지하면서 해지 위약금과 설치비 등 2달 사용 위약금 9만원을 내게 되었습니다. 금전적인 손실도 손실이지만

요양 보호사 자격증 응시 자격

요양보호사 자격증 응시 자격 요양보호사 자격증은 우리나라의 고령화 사회에서 점점 중요해지고 있는 자격증입니다. 많은 사람들이 요양보호사로서의 경력을 쌓기 위해 이 자격증을 취득하려 하고 있습니다. 요양보호사 자격증을 취득하기 위해서는 일정한 응시 자격을 갖추어야 합니다. 이번 글에서는 요양보호사 자격증의 응시 자격에 대해 자세히 알아보겠습니다. 요양보호사 자격증이란? 요양보호사 자격증은 노인과 장애인을 돌보는 전문 인력을 양성하기 위한 국가자격증입니다. 요양보호사는 주로 요양시설이나 재가 요양 서비스 제공기관에서 근무하며, 대상자의 일상 생활 지원, 신체 및 정신 건강 관리, 위생 관리 등을 수행합니다. 요양보호사 자격증 응시 자격 요양보호사 자격증을 응시하기 위해서는 다음과 같은 요건을 충족해야 합니다: 1. 연령 요건 응시자는 만 18세 이상이어야 합니다. 이는 요양보호사로서 업무를 수행하는 데 필요한 신체적, 정신적 성숙도를 고려한 기준입니다. 2. 학력 요건 요양보호사 자격증을 취득하기 위해서는 특별한 학력 요건은 없습니다. 고등학교 졸업 이상의 학력을 요구하지 않기 때문에, 누구나 학력에 상관없이 응시할 수 있습니다. 3. 교육 이수 요양보호사 자격증을 취득하기 위해서는 지정된 교육 기관에서 요양보호사 교육과정을 이수해야 합니다. 교육과정은 일반적으로 240시간의 이론 교육과 80시간의 실습 교육으로 구성됩니다. 교육을 이수한 후에는 수료증을 발급받게 됩니다. 4. 시험 응시 교육 과정을 이수한 후에는 국가에서 주관하는 요양보호사 자격시험에 응시할 수 있습니다. 시험은 필기시험과 실기시험으로 구성되어 있으며, 각 시험에서 합격해야 자격증을 취득할 수 있습니다. 5. 범죄 기록 확인 요양보호사 자격증을 취득하기 위해서는 범죄 경력 조회를 통과해야 합니다. 이는 요양보호사가 신뢰할 수 있는 인물이어야 하며, 특히 노인과 장애인 등 취약 계층을 보호하기 위한 조치입니다. 요양보호사 교육 과정 요양보호사 교육 과정