freqtrade策略调试方法
freqtrade策略调试方法在Windows系统上安装freqtrade,然后使用PyCharm进行调试策略。 安装freqtradeWindows安装教程地址 git clone https://github.com/freqtrade/freqtrade.gitcd freqtrade 调试配置在PyCharm中配置调试环境,设置Python解释器为freqtrade的虚拟环境。 形参具体如下,注意其中的$ProjectFileDir$,表示当前项目目录,记得自己对应更改! 自己调整参数 调试策略打断点,然后运行调试,即可调试策略。 调试成功 关于在docker容器内进行调试试过VSCode的Remote-Containers插件,但是由于种种原因,无法在容器内调试。
freqtrade使用docker启动技巧
freqtrade使用docker启动技巧使用docker启动freqtrade策略,可以方便的进行策略的优化、回测等操作。 假设下面是docker-compose.yml文件的配置,可以根据自己的需求进行调整。 download-data: image: freqtradeorg/freqtrade:stable container_name: ${TRADING_MODE:-spot}-${TIMERANGE:-20240101-}-download-data volumes: - "./user_data:/freqtrade/user_data" command: > download-data --datadir /freqtrade/user_data/data/${EXCHANGE:-binance} --config...
区块链知识问答
区块链什么是utxo?UTXO(Unspent Transaction Output)是比特币中的一个概念,指的是未花费的交易输出。 在比特币中,每一笔交易都会产生一个或多个输出,这些输出可以被后续的交易引用并花费。如果一个输出没有被后续的交易引用,那么这个输出就是未花费的交易输出,即UTXO。 每笔交易的输出都会产生一个或多个新的UTXO。 下次想再次使用这些比特币时,钱包软件会自动选择足够的UTXO作为输入,并发送到新地址。 被选作为输入的UTXO在新交易中就被”花费”了。 交易手续费是通过输入UTXO的总值大于输出新产生的UTXO值这部分作为矿工费用。 UTXO模型的优点是能确保没有”双花”发生,每个UTXO只能被使用一次。缺点是对于大量小额支付场景会导致UTXO数量迅速膨胀,给钱包带来负担。 什么是默克尔树?默克尔树(Merkle...
threadlocal的实现,原理
threadlocal的实现,原理1. threadlocal的概念ThreadLocal是Java中的一个线程本地变量,它可以为每个线程存储一份独立的变量副本,不同线程之间互不影响。ThreadLocal的实现原理是通过ThreadLocalMap来实现的,每个Thread对象都有一个ThreadLocalMap对象,用于存储线程本地变量。 2. threadlocal的使用public class ThreadLocalDemo { private static ThreadLocal<Integer> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { threadLocal.set(1); System.out.println(threadLocal.get()); threadLocal.remove(); }} 3....
CPU进程调度
CPU进程调度1. CPU调度的概念CPU调度是操作系统中的一个重要概念,用于在多任务环境下实现进程的切换和调度。当操作系统决定切换到另一个进程时,需要选择一个合适的进程来执行,这个过程就是CPU调度。 2. CPU调度类CPU调度主要分为以下几类: 先来先服务(First Come First Serve,FCFS):按照进程到达的先后顺序进行调度,先到达的进程先执行,直到执行完毕或发生阻塞。 短作业优先(Shortest Job First,SJF):按照进程的执行时间进行调度,执行时间短的进程优先执行,可以减少平均等待时间。 优先级调度(Priority Scheduling):按照进程的优先级进行调度,优先级高的进程优先执行,可以根据进程的重要性和紧急程度来设置优先级。 时间片轮转(Round Robin,RR):按照时间片的方式进行调度,每个进程执行一个时间片后,切换到下一个进程执行,可以保证每个进程都有机会执行。 多级反馈队列调度(Multilevel Feedback Queue...
nginx惊群
nginx惊群1. nginx 进程模型nginx 是一个高性能的 Web 服务器,采用了多进程模型来处理客户端请求。在 nginx 的多进程模型中,通常有一个 master 进程和多个 worker 进程。 master 进程:负责管理 worker 进程,包括启动、停止、重载配置等操作。 worker 进程:负责处理客户端请求,每个 worker 进程都是一个独立的进程,可以处理多个客户端连接。 nginx 的多进程模型可以充分利用多核 CPU 的性能,提高 Web 服务器的并发处理能力。 2. nginx 惊群问题nginx 的多进程模型中,当有大量客户端请求到达时,可能会出现惊群问题。惊群问题是指多个 worker 进程同时被唤醒处理客户端请求,导致系统资源的浪费和性能下降。 具体来说,当一个客户端请求到达时,操作系统会将请求分发给多个 worker 进程,这些 worker 进程都会被唤醒处理请求。由于只有一个 worker 进程能够处理请求,其他 worker 进程会浪费 CPU 时间和系统资源。 2.1 内核对惊群问题的解决方案accept 只能唤醒一个...
信号处理程序
...
malloc和free
malloc和free1. malloc和free的概念malloc和free是C语言中用于动态内存分配和释放的函数。malloc函数用于分配一块指定大小的内存空间,返回指向该内存空间的指针;free函数用于释放之前分配的内存空间,将该内存空间标记为可用。 2. malloc和free的使用#include <stdlib.h>int main() { // 分配一块大小为10个int的内存空间 int *p = (int *)malloc(10 * sizeof(int)); if (p == NULL) { // 内存分配失败 return -1; } // 使用分配的内存空间 for (int i = 0; i < 10; i++) { p[i] = i; } // 释放内存空间 free(p); return 0;} 3....
堆和栈
堆和栈1. 堆和栈的概念堆和栈是计算机内存中的两种数据存储区域,用于存储程序运行时的数据。堆和栈的区别主要体现在以下几个方面: 分配方式:堆是动态分配的,栈是静态分配的。 空间大小:堆的空间较大,栈的空间较小。 管理方式:堆需要手动管理内存,栈由系统自动管理。 分配效率:堆的分配效率较低,栈的分配效率较高。 堆的分配效率较低是因为堆是不连续分配的,需要维护一个空闲内存链表,查找合适的空闲内存块。而且存在间接访问的开销。空间局部性较差,容易产生碎片。 存储方式:堆存储的是对象的引用,栈存储的是对象的值。 生命周期:堆的生命周期由程序员控制,栈的生命周期由系统控制。 存储内容:堆存储的是动态分配的对象,栈存储的是局部变量和函数参数。 2. 堆和栈的区别 栈是从高地址向低地址增长的,堆是从低地址向高地址增长的。 栈的分配速度比堆快,因为栈是连续分配的,而堆是不连续分配的。 栈的分配和释放由系统自动管理,堆的分配和释放由程序员手动管理。 栈的空间有限,堆的空间较大。 3....
服务端获取客户端ip以及正向代理和反向代理
服务端获取客户端ip1. 服务端获取客户端ip的方法在服务端获取客户端ip的方法有多种,常用的方法包括: 通过HTTP请求头中的X-Forwarded-For字段获取客户端ip。 语法 X-Forwarded-For: <client>, <proxy1>, <proxy2> 底层是通过socket的getpeername函数获取客户端的ip地址,然后将其放入HTTP请求头中,传递给服务端。2. 通过HTTP请求头中的X-Real-IP字段获取客户端ip。没有相关标准 2....