请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
脚本

按价格标记位置脚本 - MetaTrader 5脚本

显示:
3265
等级:
(4)
已发布:
2021.06.23 05:12
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
价格是行情分析的重要参照因素,尤其是以支撑阻力位为核心的交易系统中,寻找合适的进场和出场价格位置是首要任务。那么按价格标记出这些参照位置就对分析、统计有实际意义。

画线对象
这里用画横线的方式来进行标记,需要用到画对象函数ObjectCreate(),指定对象类型为OBJ_HLINE,创建画线对象便可以设置颜色、宽度、风格等相关属性。
//画横线对象
string line_name = DoubleToString(1.20330);
if(!ObjectCreate(0,line_name,OBJ_HLINE,0,0,1.20330))
   {
    printf(": failed to create a line! Error code = ",GetLastError());
   }
ObjectSetInteger(0,line_name,OBJPROP_COLOR,clrRed);               //设置颜色
ObjectSetInteger(0,line_name,OBJPROP_STYLE,STYLE_SOLID); //设置风格
ObjectSetInteger(0,line_name,OBJPROP_WIDTH,1);                    //设置宽度


价格位置
在这个例子中,拟定一个应用场景,需要实现找出所有以00、50价格结尾的整点价位,并进行画线标记出来。在历史报价数据中,价位是有波动范围的,给定一个最大值2.00000和最小值1.00000,在这个价格区间找出需要的价位。
//整点价格位置
double price_max = 2.00000;
double price_min = 1.00000;
       double price_integer[];
ArrayResize(price_integer,300);
double price_tmp = price_min;
int m = 0;
for(m = 0; price_tmp <= price_max; m++)
   {
        price_integer[m] = price_tmp;
        price_tmp = price_tmp + 0.00500;
   }
ArrayRemove(price_integer,m);
for(int i = 0; i < ArraySize(price_integer); i++)
   {
      //画横线对象
   }
需要注意的是,用到了ArrayResize()函数分配一个动态数组空间,这里直接定义一个静态数组,是因为动态数组可以灵活进行插入、删除操作,在无法准确得到数组元素个数时,先动态分配,再用ArrayRemove()函数清理多余的数据,将空间利用到最优。
同样可以将线的颜色、样式、宽度等作为输入参数,实现更加灵活的控制。
input color line_color = clrRed;
input ENUM_LINE_STYLE line_style = STYLE_SOLID;
input int line_width = 2;


实现源码
#property copyright "公众号 Luyuanmw 微信 wentxiong"
#property link      "http://www.popoding.club/"
#property version   "1.00"

#property script_show_inputs

input color line_color = clrRed;
input ENUM_LINE_STYLE line_style = STYLE_SOLID;
input int line_width = 2;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
//整点价格位置
   double price_max = 2.00000;
   double price_min = 1.00000;
   double price_integer[];
   ArrayResize(price_integer,300);
   double price_tmp = price_min;
   int m = 0;
   for(m = 0; price_tmp <= price_max; m++)
     {
      price_integer[m] = price_tmp;
      price_tmp = price_tmp + 0.00500;
     }
   ArrayRemove(price_integer,m);

   for(int i = 0; i < ArraySize(price_integer); i++)
     {
      //画横线对象
      string line_name = DoubleToString(price_integer[i]);
      if(!ObjectCreate(0,line_name,OBJ_HLINE,0,0,price_integer[i]))
        {
         printf(": failed to create a line! Error code = ",GetLastError());
        }

      ObjectSetInteger(0,line_name,OBJPROP_COLOR,line_color); //设置颜色
      ObjectSetInteger(0,line_name,OBJPROP_STYLE,line_style);    //设置风格
      ObjectSetInteger(0,line_name,OBJPROP_WIDTH,line_width); //设置宽度
     }
  }
    六类挂单一键取消脚本 六类挂单一键取消脚本

    MT5挂单类型有六种,能够很好地适应回调和突破场景,在一些突破策略交易系统中应用较多,当挂单条件不再有效的时候,就会涉及到挂单的取消操作。六种挂单应用说明如下: Buy Limit(回踩买入):在当前价格下方,等待行情下跌到挂单位置触发买入单。 Sell Limit(回踩卖出):在当前价格上方,等待行情上涨到挂单位置触发卖出单。 Buy Stop(突破买入):在当前价格上方,等待行情上涨到挂单位置触发买入单。 Buy Stop(突破卖出):在当前价格下方,等待行情下跌到挂单位置触发卖出单。 Buy Stop Limit(突破回踩买入):在当前价格上方,等待行情上涨到突破位置后,再下跌到回踩位置,触发买入单。 Sell Stop Limit(突破回踩卖出):在当前位置下方,等待行情下跌到突破位置后, 再上涨到回踩位置,触发卖出单。

    双线一柱变色MACD指标 双线一柱变色MACD指标

    MT5已经自带了很多指标,给交易带来了极大便利,作为辅助工具,很多时候我们需要对其进行进一步改造,或重新自定义指标,本例通过实现双线一柱变色MACD指标来进行说明。

    按时间标记位置脚本 按时间标记位置脚本

    无论是进行策略分析,还是进行交易系统设计,时间是一个非常重要的参照因素,特别是在进行历史数据回溯验证的时候,如果想快速定位到某个时间点,就需要找到一个办法在行情图表上进行明显的标记,比如在什么时间点出现了亏损、什么时间点出现了盈利,使用按时间标记功能,就可以快速标记所有位置,便于统计、分析。在这个例子中,我们运用的是画竖线的方式,并区分不同颜色的线,来实现需求。

    mt5剩余时间的指标 mt5剩余时间的指标

    这是mt4 转 mt5的 剩余时间的指标,分享大家