首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在mql4中绘制历史上特定的蜡烛上的箭头

在MetaTrader 4 (MT4) 中绘制历史上特定蜡烛上的箭头,通常是为了标记重要的价格水平或者交易信号。这可以通过使用MT4内置的画线工具或者编写自定义的EA(Expert Advisor,专家顾问)来实现。下面我将详细介绍如何手动绘制箭头以及如何通过编写脚本来实现。

手动绘制箭头

  1. 打开图表:首先,打开你想要标记的货币对和时间周期的图表。
  2. 选择画线工具:在MT4的菜单栏中,找到“插入”(Insert)选项,然后选择“画线工具”(Line Drawing Tool)。
  3. 绘制箭头:在图表上点击并拖动鼠标来绘制一条线。然后,在线的起点或终点右键点击,选择“修改”(Modify),在这里你可以将线条样式改为箭头。
  4. 调整位置:通过拖动箭头来调整它的位置,使其指向特定的蜡烛。

使用自定义脚本绘制箭头

如果你想要在特定的历史蜡烛上自动绘制箭头,你可以通过编写MQL4脚本来实现。以下是一个简单的示例代码,它会在特定的历史蜡烛上绘制一个向上的箭头:

代码语言:txt
复制
//+------------------------------------------------------------------+
//| Script to draw an arrow on a specific historical candle          |
//+------------------------------------------------------------------+
#property strict

void OnStart()
{
   // 获取当前图表的时间周期
   int timeframe = Period();

   // 获取当前图表的历史数据
   int bars = ChartGetInteger(0, CHART_BAR_COUNT);

   // 假设我们要在第10根蜡烛上绘制箭头
   int candleIndex = 10;

   // 确保请求的蜡烛索引在有效范围内
   if (candleIndex < bars)
   {
      // 获取蜡烛的开盘价和收盘价
      double openPrice = iOpen(NULL, timeframe, candleIndex);
      double closePrice = iClose(NULL, timeframe, candleIndex);

      // 计算箭头的位置(这里我们取开盘价和收盘价的平均值)
      double arrowPrice = (openPrice + closePrice) / 2;

      // 绘制箭头
      ObjectCreate("ArrowUp", OBJ_ARROW_THUMB, 0, Time[candleIndex], arrowPrice);
      ObjectSetInteger(0, "ArrowUp", OBJPROP_COLOR, clrRed);
      ObjectSetInteger(0, "ArrowUp", OBJPROP_BACK, false);
   }
}

应用场景

  • 交易信号标记:交易者可以在特定的历史蜡烛上绘制箭头来标记买入或卖出的信号。
  • 价格水平标记:可以用来标记重要的支撑或阻力水平。
  • 分析工具:作为技术分析的一部分,帮助交易者识别趋势或模式。

可能遇到的问题及解决方法

  1. 箭头位置不准确:确保你选择的蜡烛索引是正确的,并且计算箭头位置的方法符合你的需求。
  2. 脚本执行错误:检查代码中是否有语法错误,确保所有使用的函数和对象都存在且正确使用。
  3. 性能问题:如果你的脚本在图表上绘制大量箭头,可能会导致性能下降。尝试优化代码或减少绘制的箭头数量。

参考链接

请注意,以上代码和信息仅供参考,实际使用时可能需要根据具体情况进行调整。如果你不熟悉MQL4编程,建议先学习基础的MQL4语法和函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java AWT 图形界面编程】在 Canvas 画布中绘制箭头图形 ( 数据准备 | 几个关键的计算公式 | 绘制箭头直线和尾翼 )

文章目录 一、在 Canvas 画布中绘制箭头图形 - 要点分析 1、数据准备 2、绘制直线 3、绘制箭头尾翼 二、代码示例 一、在 Canvas 画布中绘制箭头图形 - 要点分析 ---- 1、数据准备...绘制箭头时 , 先设置一条直线的起始点和终止点 , 箭头绘制在该线段上 ; /** * 起始点 X, Y 坐标 * 终止点 X, Y 坐标 */ private...int startX, startY, endX, endY; 为箭头指定一个长度 , 该长度的末尾是 箭头终点 , 在直线上确定箭头终点 , 该终点延伸出两个尾翼 , 尾翼也指定一个长度 ;...2、绘制直线 先把箭头附着的直线 , 绘制出来 ; // 绘制直线 g.drawLine(startX, startY, endX, endY); 3、绘制箭头尾翼 首先..., 确定起始点和终止点 , 在 x , y 轴上的差值 ; // 计算起始点和终止点在 x, y 方向的差值 int deltaX = endX - startX;

1.6K20

如何在 Matlab 中绘制带箭头的坐标系

如何在 Matlab 中绘制带箭头的坐标系 如何在 Matlab 中绘制带箭头的坐标系 实现原理 演示效果 完整代码 --- 实现原理 使用 matlab 的绘制函数时,默认设置为一个方框形的坐标系,...[图1] 如果想要绘制的如下图所示中的带箭头的坐标系,需要如何实现呢?...其中绘制箭头的调用格式为 arrow_obj = annotation(fig_obj, 'arrow', [x0, x1], [y0, y1]); x0,y0 表示的箭头末端(无箭头)在图窗的位置坐标...;x1,y1 表示的箭头始端(有箭头)在图窗的位置坐标。...DrawAxisWithArrow 自动确定坐标原点在图窗的位置,并以此来绘制带箭头的坐标轴; CoorFromAxis2Fig 进行坐标转换,将点在坐标轴(axis)上的坐标转换为在图窗(figure

8.3K20
  • Flash在DirectX中的绘制

    这里使用的是之前我说过的OLE控件在Direct3D中的渲染方法, 自己不进行swf的解析, 这不现实....创建一个ShockwaveFlashObjects::IShockwaveFlash的对象 实现一个IOleClientSite来做为IShockwaveFlash的容器 绘制 通过OleDraw来把...GDI的像素数据绘制到DC上(IShockwaveFlash是一个IViewObject) 把DC的像素数据拷贝到D3D的Texture上....但是有时候不得不用(像UI), 可以这参考Transparent Flash Control in plain C++, 用黑色背景和白色背景绘制两次, 比较两次结果 的Red通道计算出相应的Alpha...脏矩形优化: 如果每帧都进行整个纹理的更新, 你会发现CPU占用率相当高. 实际上ActiveX本身是有这个优化的, 只不过我们需要自己找出这个矩形.

    1.8K30

    在特定环境中安装指定版本的Docker

    通常用官方提供的安装脚本或软件源安装都是安装的比较新 Docker 版本,有时我们需要在一些特定环境的服务器上安装指定版本的 Docker。今天我们就来讲一讲如何安装指定版本的 Docker 。...hkp://pgp.mit.edu:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D 新增一个 docker.list 文件,在其中增加对应的软件安装源...docker.list deb https://apt.dockerproject.org/repo ubuntu-xenial main CentOS 新增一个 docker.repo 文件,在其中增加对应的软件安装源...raw=true | sh 使用需要的 Docker 版本替换以下脚本中的 ,目前该脚本支持的 Docker 版本: 1.10.3 1.11.2 1.12.1 1.12.2 1.12.3 1.12.4...1.12.5 1.12.6 1.13.0 1.13.1 17.03.0 17.03.1 17.04.0 注:脚本使用 USTC 的软件包仓库,已基于 Ubuntu_Xenial , CentOS7 以及

    3.9K20

    在字符串中删除特定的字符

    而对于本题而言,有可能要删除的字符的个数是n,因此该方法就删除而言的时间复杂度为O(n2)。 事实上,我们并不需要在每次删除一个字符的时候都去移动后面所有的字符。...在具体实现中,我们可以定义两个指针(pFast和pSlow),初始的时候都指向第一字符的起始位置。当pFast指向的字符是需要删除的字符,则pFast直接跳过,指向下一个字符。...这样,前面被pFast跳过的字符相当于被删除了。用这种方法,整个删除在O(n)时间内就可以完成。 接下来我们考虑如何在一个字符串中查找一个字符。当然,最简单的办法就是从头到尾扫描整个字符串。...我们可以新建一个大小为256的数组,把所有元素都初始化为0。然后对于字符串中每一个字符,把它的ASCII码映射成索引,把数组中该索引对应的元素设为1。...这个时候,要查找一个字符就变得很快了:根据这个字符的ASCII码,在数组中对应的下标找到该元素,如果为0,表示字符串中没有该字符,否则字符串中包含该字符。此时,查找一个字符的时间复杂度是O(1)。

    9K90

    如何改进 AI 模型在特定环境中的知识检索

    在当今数字化的时代,AI 模型的应用越来越广泛,而如何提高其在特定环境中的知识检索能力成为了一个关键问题。本文将结合Anthropic 文章,深入探讨改进 AI 模型知识检索的方法。...Contextual Embeddings 在嵌入之前为每个块预置特定于块的解释上下文,就像给每个知识块加上了一个独特的标签。...例如,有些模型在处理自然语言文本时表现出色,而有些模型则更适合处理特定领域的知识。在选择嵌入模型时,需要根据具体的应用场景进行评估和选择。 3....五、结论 通过对 Contextual Retrieval 和 reranking 技术的介绍,我们可以看出,这些方法可以结合使用,以最大限度地提高 AI 模型在特定环境中的知识检索准确性。...总之,改进 AI 模型在特定环境中的知识检索是一个复杂而又具有挑战性的问题。但通过不断地探索和创新,我们相信可以找到更加有效的方法,为 AI 技术的发展做出更大的贡献。

    8000

    通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽

    前言 关于讲解 JS 的拖拽功能的文章数不胜数,我确实没有必要大费周章再写一篇重复的文章来吸引眼球。本文的重点是讲解如何在某些特定的元素上禁止拖拽。...排除特定元素的方法 关于如何排除特定元素的方法,很多人会推荐阻止冒泡的方法,但是我试了很多次,这种方法是不行的,因为拖拽事件绑定在了 document 对象上。...解决的方法就是在拖拽开始时添加限制条件,代码如下 ......因为我们在排除特定元素的同时也要排除它的子元素。如果使用原生 JS 的话,需要添加获取子元素的方法。...仍然是之前的老话,实现一个功能并不困难,但是如果要把这个功能做好,我们需要考虑很多的细节,或许很多时候我们都把时间花费在调整细节上了。

    4.9K90

    在 Linux 上为特定的用户或用户组启用或禁用 SSH

    Secure Shell(ssh)是一个自由开源的网络工具,它能让我们在一个不安全的网络中通过使用 Secure Shell(SSH)协议来安全访问远程主机。...通过以下内容,我们可以为指定的用户或用户列表启用 ssh 访问。如果你想要允许多个用户,那么你可以在添加用户时在同一行中用空格来隔开他们。...通过以下内容,我们可以配置指定的用户或用户列表禁用 ssh。如果你想要禁用多个用户,那么你可以在添加用户时在同一行中用空格来隔开他们。...是的,这里 user1 用户在禁用名单中。所以,当你尝试登录时,你将会得到如下所示的错误信息。...他属于被禁用 ssh 的组中。

    2.6K60

    解决canvas在高清屏中绘制模糊的问题

    也就是说二倍屏,浏览器就会以 2 个像素点的宽度来渲染一个像素,该 canvas 在 Retina 屏幕下相当于占据了2倍的空间,相当于图片被放大了一倍,因此绘制出来的图片文字等会变模糊。...屏幕上实际会占据 200×200 像素的空间,相当于图片被放大了一倍,因此图片会变得模糊。...类似的,在 canvas context 中也存在一个 backingStorePixelRatio 的属性,该属性的值决定了浏览器在渲染 canvas 之前会用几个像素来来存储画布信息。...", 50, 50); 这样就可以解决 canvas 在高清屏中绘制模糊的问题。...完整的demo:https://www.html.cn/demo/canvas_retina/index.html 参考文章:《解决 canvas 在高清屏中绘制模糊的问题》

    6.6K10

    在maven中引用github上的资源

    很多人选择在Github上开源项目,但很多开源项目要依赖一些自己写的jar。如何让用户(使用者)可以通过互联网自动下载所依赖的jar呢? ...下面介绍下通过GitHub做maven repository的过程;  1、在GitHub上创建项目(这步操作不细说了,过程很简单,用过GitHub的大家都懂的)  例如:我创建的项目名叫fengyunhe-wechat-mp...2、把本地maven项目Build,build生成的maven文件夹上传到Giuhub  3、本地新建maven项目如果需要依赖jar,在pom.xml中增加  ...2、master 一定要写上,否则会无法下载  3、如果本地项目依赖的groupId、artifactId跟本地项目中的maven项目groupId、artifactId相对应,则会默认依赖本地项目而不去服务端下载...4、具体依赖项目 配置中  groupId、artifactId 一定要与依赖项目的groupId、artifactId一致。

    4K10

    在 SQL 中,如何使用子查询来获取满足特定条件的数据?

    在 SQL 中,可以使用子查询来获取满足特定条件的数据。子查询是嵌套在主查询中的查询语句,它返回一个结果集,可以用来过滤主查询的结果。...下面是使用子查询来获取满足特定条件的数据的一般步骤: 在主查询中使用子查询,将子查询的结果作为条件。 子查询可以在主查询中的 WHERE 子句、FROM 子句或 HAVING 子句中使用。...子查询可以返回单个值或多个值,具体取决于使用的运算符和子查询的语法。 以下是一些示例: 使用子查询在 WHERE 子句中过滤数据: SELECT column1, column2, ......FROM (SELECT column FROM table WHERE condition) AS temp_table; 使用子查询在 HAVING 子句中过滤数据: SELECT column1,...FROM table GROUP BY column1 HAVING column1 > (SELECT AVG(column1) FROM table); 请注意,子查询的性能可能会较低,因此在设计查询时应谨慎使用

    24010

    DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成

    ") print(code_framework) 1.2 ChatGPT 的表现 ChatGPT 在逻辑推理任务中也表现出色,但在处理复杂逻辑问题时稍逊于 DeepSeek。...2.1 DeepSeek 的表现 DeepSeek 在创意生成任务中表现良好,尤其是在中文处理方面。其针对中文语言特点的优化使其在中文创意写作中更具优势。...创意生成任务:包括模仿特定作家风格(如塞林格、舒曼)的乐评生成,以及策略性游戏中的非常规操作(如国际象棋规则修改)。 评估指标:正确率、响应时间、生成内容风格契合度(人工评分)。...策略创新:DeepSeek 在游戏任务中展现“非常规策略”(如国际象棋中修改规则),而 ChatGPT 更遵循预设逻辑。...建议: 逻辑推理任务:推荐使用 DeepSeek,尤其是在需要高准确率和快速生成的场景中。 创意生成任务:推荐使用 ChatGPT,尤其是在需要多语言支持和自然语言解释的场景中。

    13310

    机器学习在组合优化中的应用(上)

    但是就目前而言,求解器在求解效率上仍存在着问题,难以投入到实际的工业应用中,现在业界用启发式比较多。...(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。...比如说在branch and price求解VRP类问题中,其子问题SPPRC的求解就是一个非常耗时的模块,如果利用机器学习,在column generation的每次迭代中能快速生成一些reduced...而动机(2)中的经验学习,是采用reinforcement learning从reward中不断修正自己(没有expert)。在动机(1)中,agent is taught what to do。...在贪心算法中,每次选择一个距离上次插入节点最近的节点,当然我们最直接的做法也是这样的。但是这样的效果,并没有那么的好,特别是在大规模的问题中。

    3K30

    【DB笔试面试703】在Oracle中,怎么杀掉特定的数据库会话?

    ♣ 题目部分 在Oracle中,怎么杀掉特定的数据库会话?...所有所持有的资源,所以,在执行完ALTER SYSTEM KILL SESSION后,会话还是一直存在(V$SESSION视图中存在,且后边OS进程也存在)。...所以,在执行命令KILL SESSION的时候,可以在后边加上IMMEDIATE,这样在没有事务的情况下,相关会话就会立即被删除而不会变为KILLED的状态(V$SESSION视图中不存在),当有事务存在的情况下...,会先进行回滚相关的事务,然后释放会话所占有的资源。...在Windows上还可以采用Oracle提供的orakill杀掉一个线程(其实就是一个Oracle进程)。在Linux上,可以直接利用kill -9杀掉数据库进程对应的OS进程。

    2K20

    CSS中的float定位技术在iOS上的实现

    iOS中实现不规则排列的方式 在iOS中我们可以通过frame以及AutoLayout两种方法来实现界面的布局。...,并浮动到容器视图的最左边的(0,180)的位置上。...这里的比重的设置,是在整体布局视图的浮动的方向的设定上的,就是说当整体的布局视图里面的视图是支持左边和右边浮动时则这个比重指定的是视图的宽度的相对比例值,而当布局视图支持的是上边和下边浮动时则这个比重指的是视图的高度的相对比例值...浮动布局的停靠属性 我们看到浮动布局视图里面还有一个gravity属性,这个属性在左右浮动布局视图中可以用来设置所有子视图的整体的上,中,下三种停靠模式,而在上下浮动布局视图中则可以用来设置所有子视图的整体的左...在一般情况下,不规则边界线的显示我们有可能需要UI人员提供图片来完成,或者不提供图片我们在编程时也需要进行条件的判断以便决定是否需要在特定的位置绘制边界线,显然这样做将会增加我们的代码量。

    2.2K20

    Untiy Native Render Plugin在VR中的绘制(二): 透明排序

    上篇已经能在VR中画出来了, 但是还存在两个问题: 1. 透明物体会被Native画的东西挡住 2....VR中Native画的东西透视关系有点问题, 跟Unity绘制的场景不能很好地融合在一起 先来解决一个透明排序的问题, 这个问题有两个思路去解决: 双Camera 双Camera的思路就是, 一个Camera...这样Native的绘制就能在两者之间进行, 有几个细节: 先保证两个Camera的参数一样 第一个Camera的Culling Mask把TransparentFX去掉 第二个Camera的Culling..., 这就可以让我们可以在渲染管线的各个阶段之前插入我们想要的效果....上, 并把包围盒设置成非常大, 一方面保证了SetCameraMatrix可以一直调用到, 另一方面也能”隐藏”掉这个Box(内部看经过back face culling是不可见的).

    1.3K90

    一日一技:在 Jupyter 中如何自动重新导入特定的 模块?

    直接把这个模块的代码与 Jupyter Notebook 的 .ipynb 文件放在一起,然后在 Jupyter 里面像导入普通模块那样导入即可,如下图所示: ?...重新运行这个 Cell 中的代码,代码中虽然有from analyze import FathersAnalyzer,看起来像是重新导入了这个模块,但是运行却发现,它运行的是修改之前的代码。...这是因为,一个 Jupyter Notebook 中的所有代码,都是在同一个运行时中运行的代码,当你多次导入同一个模块时,Python 的包管理机制会自动忽略后面的导入,始终只使用第一次导入的结果(所以使用这种方式也可以实现单例模式...在每一个 Cell 里面都需要 重新加载一次分析模块,否则,很有可能在你单独运行某一个 Cell 的时候,用的是老的代码,就会导致难以察觉的 bug。...其中关键的代码有三行: %load_ext autoreload %autoreload 1 %aimport analyze 这三行代码只有在 Jupyter 里面才能正常运行,在 普通的.py 文件里面这样写会报错

    6.6K30
    领券