本地跟单软件,精准跟随、实时同步 轻松实现自动跟单 MT4免费EA

指标名称:本地跟单软件

版本:MT4 ver. 2.01(EA)

我们经常在一些论坛或网站上看到一些朋友提供的观摩账户吧,可以看到别人的账户情况,遇到有实力的交易者,很是羡慕啊。

 如果我们自己的账户可以跟着他们下单多好呢?今天就给大家免费共享一款智能交易EA。

图片

可以进行本地跟单,速度快还全免费哦。

跟单EA分为发射端和接收端

  • 发射端-挂在喊单信号账户上

  • 接收端-跟单的账户

图片

怎么安装,这个在EA安装教程里已经经过,这里不过多介绍,有不明白的,可以去看教程。教程在哪里?就在下一篇文章里。

1.安装发射端

打开喊单的MT4软件,双击导航里的:跟单软件发射端,然后按照以下提示勾选内容,点击确认即可。

图片

安装好了,右上角会显示笑脸,如果没显示,检查自动交易和选项里的设置有没有正确设置。

图片

图片

图片

这样,喊单软件就安装好了。

2.安装接受端

打开跟单的MT4软件,双击导航里的:跟单软件接收端,然后按照发射端一样的提示勾选内容,点击确认即可。参照上两步。

跟单与喊单不同的是参数需要设置

图片

这里,我们需要设置对应的喊单账号,参数

如图:

图片

最后,在喊单账户下个小单子测试跟单账户是否正常跟随。

这样,就完工了。好了,今天的学习就到这了。多研究里面的参数,多测试!


部分代码展示:

//+------------------------------------------------------------------+
//|                                                   跟单发射端.mq4 |
//|                                Copyright © 2009-2024, www.QChaos.com |
//|                                          https://www.qchaos.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 量化混沌, www.qchaos.com"
#property link      "https://www.qchaos.com"
#property version   "2.01"

#property description "---------------------------------------------"
#property description "EA、指标公式分享"
#property description "EA、指标编写业务承接"
#property description "---------------------------------------------"
#property description "---------------------------------------------"


#import "kernel32.dll"
int CopyFileW(string a0,string a1,int a2);
bool CreateDirectoryW(string a0,int a1);
//========================================================================
input string 跟踪主账号="";
string FILES文件夹路径="";
string 中转路径="";
string 间隔符="*";
string 中转路径2="";
string FILES文件夹路径2;
input string 货币对名称附加="";
input string 基本跟单设置模块="-----------跟单基础设置模块----------";//
input int 跟单允许秒误差=100;
input double 跟单允许点误差=100;
input bool 跟踪止损止盈=true;
input bool 跟踪平仓=true;
input bool 反向跟单=false;
input bool 跟多单=true;
input bool 跟空单=true;
input bool 跟踪挂单=true;
input string 跟单手数设置模块="-----------跟单手数设置模块----------";//
input double 单量比例=1;
input bool 使用固定单量=false;
input double 固定单量=0.1;
bool 低于最低单量时使用最低单量=false;
input string 跟单仓位设置模块="-----------跟单仓位设置模块----------";
input int 最大持单数=10000;
input double 跟主账户单量大于等于N单子=0;
input double 跟主账户单量小于等于M单子=100;
input string 跟单注释设置模块="-----------跟单注释魔术码设置模块----------";
input string 自定义部分备注="";
input string 接收订单需包含备注="";
string comm4="---------------------";
string comm5="---------------------";
string comm6="---------------------";
input string 跟单品种修正设置模块="---------个别品种无法正常跟单时使用------------";
input bool 货币对名称强制修正开关=false;
input string 所跟货币对名称1 ="";
input string 下单货币对名称1 ="";
input double 特殊跟单单量比例1=1;
input string 所跟货币对名称2 ="";
input string 下单货币对名称2 ="";
input double 特殊跟单单量比例2=1;
input string 所跟货币对名称3 ="";
input string 下单货币对名称3 ="";
input double 特殊跟单单量比例3=1;
input bool 进行尾部价格修饰=false;
input string 限定可做品种模块="------------限定可做品种模块---------";
input bool 限定可做的货币对=false;
input string 限制可做货币对1 ="";
input string 限制可做货币对2 ="";
input string 限制可做货币对3 ="";
input string 限制可做货币对4 ="";
input string 限制可做货币对5 ="";
input string 限制可做货币对6 ="";
input string 限制可做货币对7 ="";
input string 限制可做货币对8 ="";
input string 限制可做货币对9 ="";
input string 限制可做货币对10="";
string 限制可做货币对[100];
input string 限定不可做品种模块="----------限定不可做品种模块-----------";
input bool 限定不可做的货币对=false;
input string 限制不可做货币对1="";
input string 限制不可做货币对2="";
input string 限制不可做货币对3="";
input string 限制不可做货币对4="";
input string 限制不可做货币对5="";
input string 限制不可做货币对6="";
input string 限制不可做货币对7="";
input string 限制不可做货币对8="";
input string 限制不可做货币对9="";
input string 限制不可做货币对10="";
string 限制不可做货币对[100];
input string 跟单魔术码="----------跟单魔术码-----------";
bool 是否显示文字标签=true;
input int magic=666;
string comm11="---------------------";
int X=20;
int Y=20;
int Y间隔=15;
color 标签颜色1=Red;
color 标签颜色2=Green;
int 标签字体大小=10;
ENUM_BASE_CORNER 固定角=0;

int OrderTicketX[200];
string OrderSymbolX[200];
int OrderTypeX[200];
double OrderLotsX[200];
double OrderStopLossX[200];
double OrderTakeProfitX[200];
string OrderCommentX[200];
int OrderMagicNumberX[200];
datetime OrderOpenTimeX[200];
double OrderOpenPriceX[200];

int OrderTicketXH[200];
string OrderSymbolXH[200];
int OrderTypeXH[200];
double OrderLotsXH[200];
double OrderStopLossXH[200];
double OrderTakeProfitXH[200];
string OrderCommentXH[200];
int OrderMagicNumberXH[200];
datetime OrderOpenTimeXH[200];
double OrderOpenPriceXH[200];

double 每点价值[200];
double 滑点=300;
int check;

datetime 过期时间=D'2030.12.1';//时间限制
//===========================================================================
int OnInit()
  {
   限制可做货币对 [1]=限制可做货币对1;
   限制可做货币对 [2]=限制可做货币对2;
   限制可做货币对 [3]=限制可做货币对3;
   限制可做货币对 [4]=限制可做货币对4;
   限制可做货币对 [5]=限制可做货币对5;
   限制可做货币对 [6]=限制可做货币对6;
   限制可做货币对 [7]=限制可做货币对7;
   限制可做货币对 [8]=限制可做货币对8;
   限制可做货币对 [9]=限制可做货币对9;
   限制可做货币对[10]=限制可做货币对10;

   限制不可做货币对[1]=限制不可做货币对1;
   限制不可做货币对[2]=限制不可做货币对2;
   限制不可做货币对[3]=限制不可做货币对3;
   限制不可做货币对[4]=限制不可做货币对4;
   限制不可做货币对[5]=限制不可做货币对5;
   限制不可做货币对[6]=限制不可做货币对6;
   限制不可做货币对[7]=限制不可做货币对7;
   限制不可做货币对[8]=限制不可做货币对8;
   限制不可做货币对[9]=限制不可做货币对9;
   限制不可做货币对[10]=限制不可做货币对10;

   for(int ix=0; ix<200; ix++)
     {
      OrderSymbolX[ix]="";
      OrderCommentX[ix]="";
      OrderSymbolXH[ix]="";
      OrderCommentXH[ix]="";
     }
   if(IsDllsAllowed()==false)
      Alert("请允许调用动态链接库");
   OnTick();
   return(INIT_SUCCEEDED);
  }
//===========================================================================
void OnDeinit(const int reason)
  {
   for(int i=ObjectsTotal(); i>=0; i--)
     {
      if(StringFind(ObjectName(i),"标签",0)==0)
        {
         ObjectDelete(ObjectName(i));
         i=ObjectsTotal();
        }
     }
   ObjectsDeleteAll();
   Comment("");
  }
//===========================================================================
void OnTick()
  {

   if(TimeCurrent()>过期时间)
     {
      Alert("软件到使用期限,请续费");
      return;
     }

   if(IsTradeAllowed()==false)
     {
      Comment("不允许智能交易");
      return;
     }

   if(IsDllsAllowed()==false)
      return;

   if(中转路径=="")
     {
      CreateDirectoryW("C:\\量化混沌编程跟单软件中转路径",0);
      中转路径2="C:\\量化混沌编程跟单软件中转路径";
     }
   else
      中转路径2=中转路径;

   while(true)
     {
      RefreshRates();
      ChartRedraw();
      /*
            按钮("强制补充已平和未跟单据",180,30,160,20,CORNER_RIGHT_LOWER,clrOrangeRed,clrBlack);

            if(ObjectGetInteger(0,"强制补充已平和未跟单据",OBJPROP_STATE)==1)
               强制补充已平和未跟单据=true;
            else
               强制补充已平和未跟单据=false;
      */
      提取信号();
      提取历史信号();
      /*
            ObjectSetInteger(0,"强制补充已平和未跟单据",OBJPROP_STATE,0);

            按钮("获利达到全平 大于",180,90,100,20,CORNER_RIGHT_LOWER,clrSpringGreen,clrBlack);
            EDIT标签("获利达到全平 大于-2","100000",80,90,60,20,CORNER_RIGHT_LOWER,clrWhite,clrBlack);

            if(ObjectGetInteger(0,"获利达到全平 大于",OBJPROP_STATE)==1)
               if(AccountProfit()>StrToDouble(ObjectGetString(0,"获利达到全平 大于-2",OBJPROP_TEXT)))
                 {
                  deleteorder(-100,-1,"");
                  ObjectSetInteger(0,"获利达到全平 大于",OBJPROP_STATE,0);
                 }

            按钮("亏损达到全平 小于",180,60,100,20,CORNER_RIGHT_LOWER,clrRed,clrBlack);
            EDIT标签("亏损达到全平 小于-2","-100000",80,60,60,20,CORNER_RIGHT_LOWER,clrWhite,clrBlack);

            if(ObjectGetInteger(0,"亏损达到全平 小于",OBJPROP_STATE)==1)
               if(AccountProfit()<StrToDouble(ObjectGetString(0,"亏损达到全平 小于-2",OBJPROP_TEXT)))
                 {
                  deleteorder(-100,-1,"");
                  ObjectSetInteger(0,"亏损达到全平 小于",OBJPROP_STATE,0);
                 }
      */
      for(int ix=GlobalVariablesTotal(); ix>=0; ix--)
        {
         int 订单号监测=GlobalVariableGet(GlobalVariableName(ix));
         if(OrderSelect(订单号监测,SELECT_BY_TICKET,MODE_HISTORY))
            if(OrderCloseTime()!=0)
               if(TimeCurrent()-OrderCloseTime()>=24*60*60)
                  GlobalVariableDel(GlobalVariableName(ix));
        }

      string 内容[100];

      内容[0]="----------量化混沌编程本地跟单软件接收端-------------";
      内容[1]=" --------------已开启本地跟单接收端--------------";
      /*
      内容[2]="历史0:"+OrderTicketXH[0]+" "+OrderSymbolXH[0]+" "+OrderTypeXH[0]+" "+OrderLotsXH[0];
      内容[3]="历史1:"+OrderTicketXH[1]+" "+OrderSymbolXH[1]+" "+OrderTypeXH[1]+" "+OrderLotsXH[1];
      内容[4]="历史2:"+OrderTicketXH[2]+" "+OrderSymbolXH[2]+" "+OrderTypeXH[2]+" "+OrderLotsXH[2];
      内容[5]="历史3:"+OrderTicketXH[3]+" "+OrderSymbolXH[3]+" "+OrderTypeXH[3]+" "+OrderLotsXH[3];
      内容[6]="历史4:"+OrderTicketXH[4]+" "+OrderSymbolXH[4]+" "+OrderTypeXH[4]+" "+OrderLotsXH[4];
      内容[7]="历史5:"+OrderTicketXH[5]+" "+OrderSymbolXH[5]+" "+OrderTypeXH[5]+" "+OrderLotsXH[5];
      内容[8]="历史6:"+OrderTicketXH[6]+" "+OrderSymbolXH[6]+" "+OrderTypeXH[6]+" "+OrderLotsXH[6];
      内容[9]="";
      内容[10]="持有0:"+OrderTicketX[0]+" "+OrderSymbolX[0]+" "+OrderTypeX[0]+" "+OrderLotsX[0]+" 对应"+已跟单对应记录(OrderTicketX[0])+" 时间"+TimeToStr(OrderOpenTimeX[0]);
      内容[11]="持有1:"+OrderTicketX[1]+" "+OrderSymbolX[1]+" "+OrderTypeX[1]+" "+OrderLotsX[1]+" 对应"+已跟单对应记录(OrderTicketX[1])+" 时间"+TimeToStr(OrderOpenTimeX[1]);
      内容[12]="持有2:"+OrderTicketX[2]+" "+OrderSymbolX[2]+" "+OrderTypeX[2]+" "+OrderLotsX[2]+" 对应"+已跟单对应记录(OrderTicketX[2])+" 时间"+TimeToStr(OrderOpenTimeX[2]);
      内容[13]="持有3:"+OrderTicketX[3]+" "+OrderSymbolX[3]+" "+OrderTypeX[3]+" "+OrderLotsX[3]+" 对应"+已跟单对应记录(OrderTicketX[3])+" 时间"+TimeToStr(OrderOpenTimeX[3]);
      内容[14]="持有4:"+OrderTicketX[4]+" "+OrderSymbolX[4]+" "+OrderTypeX[4]+" "+OrderLotsX[4]+" 对应"+已跟单对应记录(OrderTicketX[4])+" 时间"+TimeToStr(OrderOpenTimeX[4]);
      内容[15]="持有5:"+OrderTicketX[5]+" "+OrderSymbolX[5]+" "+OrderTypeX[5]+" "+OrderLotsX[5]+" 对应"+已跟单对应记录(OrderTicketX[5])+" 时间"+TimeToStr(OrderOpenTimeX[5]);
      内容[16]="持有6:"+OrderTicketX[6]+" "+OrderSymbolX[6]+" "+OrderTypeX[6]+" "+OrderLotsX[6]+" 对应"+已跟单对应记录(OrderTicketX[6])+" 时间"+TimeToStr(OrderOpenTimeX[6]);

      for(int ixx=0; ixx<=16; ixx++)
         固定位置标签("标签"+ixx,内容[ixx],X,Y+Y间隔*ixx,标签颜色,标签字体大小,固定角);

         */
      固定位置标签("标签"+0,内容[0],X,Y+Y间隔*0,标签颜色1,标签字体大小,固定角);
      固定位置标签("标签"+1,内容[1],X,Y+Y间隔*1,标签颜色1,标签字体大小,固定角);
      ChartRedraw();
      if(!(!IsStopped() && IsExpertEnabled() && IsTesting()==false && IsOptimization()==false))
         return;
      Sleep(300);
     }
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void 固定位置标签(string 名称,string 内容,int XX,int YX,color C,int 字体大小,int 固定角内)
  {
   if(内容==EMPTY)
      return;
   if(ObjectFind(名称)==-1)
     {
      ObjectDelete(名称);
      ObjectCreate(名称,OBJ_LABEL,0,0,0);
     }
   ObjectSet(名称,OBJPROP_XDISTANCE,XX);
   ObjectSet(名称,OBJPROP_YDISTANCE,YX);
   ObjectSetText(名称,内容,字体大小,"宋体",C);
   ObjectSet(名称,OBJPROP_CORNER,固定角内);
   ObjectSetInteger(0,名称,OBJPROP_ANCHOR,ANCHOR_LEFT);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   OnTick();
  }
//+------------------------------------------------------------------+
void EDIT标签(string name,string 内容,int XX,int YX,int XL,int YL,int WZ,color A,color B)
  {
   if(ObjectFind(0,name)==-1)
     {
      ObjectCreate(0,name,OBJ_EDIT,0,0,0);
      ObjectSetString(0,name,OBJPROP_TEXT,内容);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,XX);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,YX);
      ObjectSetInteger(0,name,OBJPROP_XSIZE,XL);
      ObjectSetInteger(0,name,OBJPROP_YSIZE,YL);
      ObjectSetString(0,name,OBJPROP_FONT,"微软雅黑");
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,8);
      ObjectSetInteger(0,name,OBJPROP_CORNER,WZ);
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,A);
      ObjectSetInteger(0,name,OBJPROP_COLOR,B);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void 按钮(string name,int XX,int YX,int XL,int YL,int WZ,color A,color B)
  {
   if(ObjectFind(0,name)==-1)
     {
      ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,XX);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,YX);
      ObjectSetInteger(0,name,OBJPROP_XSIZE,XL);
      ObjectSetInteger(0,name,OBJPROP_YSIZE,YL);
      ObjectSetString(0,name,OBJPROP_TEXT,name);
      ObjectSetString(0,name,OBJPROP_FONT,"微软雅黑");
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,8);
      ObjectSetInteger(0,name,OBJPROP_CORNER,WZ);
     }

   if(ObjectGetInteger(0,name,OBJPROP_STATE)==1)
     {
      ObjectSetInteger(0,name,OBJPROP_COLOR,A);
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,B);
     }
   else
     {
      ObjectSetInteger(0,name,OBJPROP_COLOR,B);
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,A);
     }
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/909680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于stm32的智能电子称(开源)

功能演示 基于stm32的智能电子称 简介 这是最近别人让我帮他做的一个毕业设计&#xff0c;总体来说非常简单&#xff0c;半天都不需要就可以实现&#xff0c;我做完之后&#xff0c;打算开源在这里让大家进行学习&#xff0c;我们先看一下他的任务书吧: 主要内容与基本要求&am…

写过的试卷怎么打印出新的?

当您有一份已经完成的试卷&#xff0c;但又需要重新打印一份全新的试卷时&#xff0c;这似乎是一个令人头疼的问题。不用担心&#xff0c;这里为您介绍一种简便的方法——利用“扫描”或“试卷还原”的软件&#xff0c;通过拍照的方式&#xff0c;将试卷上的答案清除&#xff0…

【51单片机】串口通信原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…

动态规划 —— dp 问题-打家劫舍II

1.打家劫舍II 题目链接&#xff1a; 213. 打家劫舍 II - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/house-robber-ii/ 2. 题目解析 通过分类讨论&#xff0c;将环形问题转换为两个线性的“打家劫舍|” 当偷第一个位置的时候&#xff0c;rob1在&#…

开车去内蒙古旅游要做什么准备?

一、车辆选择与准备 车辆类型&#xff1a; 尽量选择越野车或SUV&#xff0c;这类车辆底盘高、通过性好&#xff0c;适合草原、沙漠等复杂地形。车辆检查&#xff1a; 出发前全面检查车辆&#xff0c;包括轮胎、刹车系统、发动机等&#xff0c;确保车辆状态良好。冬季出行需特别…

【题解】—— LeetCode一周小结44

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结43 28.冗余连接 II 题目链接&#xff1a;685. 冗余连接 II 在…

视频Qoe测量学习笔记(一)

目录 流媒体协议详解 RTSP&#xff1a;实时流式协议 RTCP&#xff1a;实时运输控制协议 RTP&#xff1a;实时运输协议 H.264 流媒体协议详解 RTSP&#xff1a;实时流式协议 由IETF MMusic小组开发&#xff0c;已成为互联网建议标准[RFC 2326]。RTSP本身并不传送数据&…

使用Spring Validation实现数据校验详解

目录 前言1. Spring Validation概述2. 配置Spring Validation2.1 引入依赖2.2 启用全局校验 3. 使用注解进行参数校验3.1 基本校验注解3.2 使用Pattern进行正则校验3.3 综合示例 4. 在控制器层应用校验4.1 方法参数校验4.2 自定义错误处理 5. 高级应用&#xff1a;自定义校验注…

解决阿里云三个月证书过期 免费SSL证书部署教程

相信有上线过自己的网站、小程序经验的同学深有体会&#xff0c;给服务加上 SSL 证书还挺麻烦的&#xff0c;尤其是没有运维经验的同学。本来最省事的方法是买个证书&#xff0c;但是一看价格&#xff0c;还是算了吧&#xff0c;动辄就是几万块一年。作为个人来说&#xff0c;这…

简单走近ChatGPT

目录 一、ChatGPT整体背景认知 &#xff08;一&#xff09;ChatGPT引起关注的原因 &#xff08;二&#xff09;与其他公司的竞争情况 二、NLP学习范式的发展 &#xff08;一&#xff09;规则和机器学习时期 &#xff08;二&#xff09;基于神经网络的监督学习时期 &…

恢复Ubuntu+Windows10双系统安装前状态及分区还原详细步骤

1、恢复到安装 Ubuntu 之前的状态&#xff0c;先看看系统属性 2、选择 运行 3、 输入 msinfo32 回车 4、注意查看 BIOS 模式这一栏&#xff0c;UEFI&#xff0c;这里我们以UEFI系统为例 5、下来就可以开始进行 Ubuntu 的移除操作了 6、从Windows打开网页搜索磁盘精灵&#xff0…

一文搞定 InternStudio 开发机的使用 | 书生大模型

文章目录 创建开发机使用 SSH 远程连接开发机使用密码进行 SSH 远程连接使用 VScode 进行 SSH 远程连接 端口映射核心目标开发机端口映射的工作方式使用 VScode 进行端口映射运行 hello_world.py 代码进行测试测试成功页面 参考文献 创建开发机 InternStudio控制台 这里先做测…

WindowsDocker安装到D盘,C盘太占用空间了。

Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…

关于我、重生到500年前凭借C语言改变世界科技vlog.15——深入理解指针(4)

文章目录 1.回调函数的介绍2. qsort使用实例2.1 qsort函数介绍2.2使用 qsort 函数排序整型数据2.3使用 qsort 排序结构数据 3. qsort的模拟实现希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 1.回调函数的介绍 回调函数就是一个通过函数指针调用…

内网项目,maven本地仓库离线打包,解决Cannot access central in offline mode?

背景&#xff1a; 内网项目打包&#xff0c;解决Cannot access central in offline mode? 1、修改maven配置文件&#xff1a; localRepository改为本地仓库位置 <localRepository>D:\WorkSpace\WorkSoft\maven-repository\iwhalecloud-repository\business</loca…

笔记整理—linux驱动开发部分(8)framebuffer类设备

framebuffer显示设备。 在应用层直接抽象位向DDR中存放图片。 在操作系统中&#xff0c;将上图分为两个部分&#xff1a;驱动应用。 使用复制的方法效率十分的低&#xff0c;所以有了内存映射方法实现图片的显示。 framebuffer帧&#xff08;铺满一个屏幕&#xff09;&#xff…

第三十章 章节练习商品列表组件封装

目录 一、需求说明 二、技术要点 三、完整代码 3.1. main.js 3.2. App.vue 3.3. MyTable.vue 3.4. MyTag.vue 一、需求说明 1. my-tag 标签组件封装 (1) 双击显示输入框&#xff0c;输入框获取焦点 (2) 失去焦点&#xff0c;隐藏输入框 (3) 回显标签信息 (4) 内…

EHOME视频平台EasyCVR萤石设备视频接入平台视频诊断技术可以识别哪些视频质量问题?

EasyCVR视频监控汇聚管理平台是一款针对大中型项目设计的跨区域网络化视频监控集中管理平台。萤石设备视频接入平台EasyCVR不仅具备视频资源管理、设备管理、用户管理、运维管理和安全管理等功能&#xff0c;还支持多种主流标准协议&#xff0c;如GB28181、GB35114、RTSP/Onvif…

如何在 PyQt 中启动“绘图循环”?

在 PyQt 中实现一个“绘图循环”可以使用 定时器&#xff08;QTimer&#xff09;&#xff0c;让应用程序在指定的时间间隔内反复触发一个绘图函数。这种方法对于需要持续更新绘图&#xff08;例如动画效果&#xff09;的情况特别有用。 1、问题背景 在GUI编程中&#xff0c;我…

Linux 线程控制

一. 线程互斥 1.1 线程互斥相关概念 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&…