首页
学习
活动
专区
工具
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.5K20

如何在 Matlab 绘制箭头坐标系

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

8.2K20
  • FlashDirectX绘制

    这里使用是之前我说过OLE控件Direct3D渲染方法, 自己不进行swf解析, 这不现实....创建一个ShockwaveFlashObjects::IShockwaveFlash对象 实现一个IOleClientSite来做为IShockwaveFlash容器 绘制 通过OleDraw来把...GDI像素数据绘制到DC(IShockwaveFlash是一个IViewObject) 把DC像素数据拷贝到D3DTexture....但是有时候不得不用(像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.8K20

    字符串删除特定字符

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

    9K90

    Android 使用Canvas图片绘制文字方法

    【Android】Android Paint 字体、粗细等属性一些设置 Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体: Paint mp...Typeface.BOLD //粗体 * Typeface.BOLD_ITALIC //粗斜体 * Typeface.ITALIC //斜体 * Typeface.NORMAL //常规 但是有时上面那些设置绘图过程是不起作用...一个小应用,图片绘制文字,以下是绘制文字方法,并且能够实现自动换行,字体自动适配屏幕大小 private void drawNewBitmap(ImageView imageView, String...Bitmap icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888); // 初始化画布绘制图像到icon...canvas.translate(start_x, start_y); staticLayout.draw(canvas); } 以上这篇Android 使用Canvas图片绘制文字方法就是小编分享给大家全部内容了

    4.4K20

    通过 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.5K10

    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一致。

    3.7K10

    机器学习组合优化应用(

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

    2.9K30

    【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进程。

    1.9K20

    Untiy Native Render PluginVR绘制(二): 透明排序

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

    1.3K90

    CSSfloat定位技术iOS实现

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

    2.2K20

    一日一技: 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.3K30

    Plotly绘制三种经典股票交易图表(含视频讲解)

    今天 Lemon 来详细分享下,这类图如何绘制,一共会讲解 3 类图形,分别是 面积曲线图、蜡烛图、OHLC图。这三种类型投资中会经常遇到。...默认面积曲线图 Plotly ,可以使用 plotly express area 图来绘制面积曲线图。...每个烛台符号沿着 X 轴时间刻度绘制,显示随着时间推移交易活动。 蜡烛示意图如下: ? 默认蜡烛 Plotly ,可以使用 candlestick 图来绘制蜡烛图。...绘制股票曲线时经常会遇到这类问题,我们需要绘制图形只包含交易日,这样图表才是符合实际情况。因此,我们需要在 Plotly 也实现这个功能。...默认OHLC图 Plotly ,可以使用 ohlc 图来绘制蜡烛图。

    2.9K20

    Raft 算法原理及其 CMQ 应用(

    随着互联网时代数据规模爆发式增长,传统单机系统性能和可用性已经无法胜任,分布式系统具有扩展性强,可用性高,廉价高效等优点,得以广泛应用。 但与单机系统相比,分布式系统实现要复杂很多。...它们保证CP前提下,只要求大多数节点可以正常互联,系统便可以一直处于可用状态,可用性显著提高。...鉴于以上分析,我们设计开发了基于Raft强一致高可靠消息中间件CMQ。接下来会详细介绍raft算法原理细节、如何应用在CMQ保证消息可靠不丢失以及实现过程我们性能方面所作优化。...日志冲突: 日志同步过程,可能会出现节点之间日志不一致问题。例如Follower写日志过慢、Leader切换导致旧Leader未提交脏数据等场景下都会发生。...添加节点 如下图所示,集群包含A B C,A为Leader,现在添加节点D。 1)清空D节点所有数据,避免有脏数据。

    6.3K11
    领券