Sidus v.2指标源码[MT4公式]

阅读 :
欢迎访问 外 汇 邦 WWW.WaiHuiBang.com

源码:

//#property indicator_chart_window

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

#property indicator_color2 Aqua

#property indicator_color3 CornflowerBlue

#property indicator_color4 Gold

#property indicator_color5 SkyBlue

//---- input parameters

extern int  Tbars = 1000; //只记录最近1000点

//---- buffers

double ExtMapBuffer1[];

 

 

//+------------------------------------------------------------------+

//| Custom indicator initialization function        tick                 |

//+------------------------------------------------------------------+

int init()

  {

//---- indicators

   SetIndexStyle(0,DRAW_LINE);

   SetIndexBuffer(0,ExtMapBuffer1);

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit()

  {

//----

   

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

 

   double nows=0;

int num=0,i=0;

 

int start()

 

{

  int Ncounted_bars = Bars-IndicatorCounted();

  if (Ncounted_bars == Bars) //首次,复制close数据 并且有时多数据变化,MT仅调用指标一次

  {  

   num = Ncounted_bars;

   for (int i=num;i>0;i--)  

     ExtMapBuffer1[i]= Close[i-1]; //以队列方式记录ticks 价格

   return(0);

  }

  nows = MarketInfo(Symbol(),MODE_BID);//MarketInfo(Symbol(),MODE_ASK);//+MarketInfo(Symbol(),MODE_BID))/2.0;

  SetLevelValue(0, nows) ;

  if (Ncounted_bars>1) //有时多数据变化,MT仅调用指标一次,需填充空白 由于MT的数据更新方式

   {

    for ( i=Ncounted_bars;i>0;i--)  

     ExtMapBuffer1[i-1]= ExtMapBuffer1[i]; //以队列方式记录ticks 价格

   }

  if (num>0) 

   {

     if (nows == ExtMapBuffer1[0]) return (0);//只记录有变化的数据

      if (num>Tbars)num = Tbars;

      for ( i=num;i>0;i--)  

      {

        ExtMapBuffer1[i]= ExtMapBuffer1[i-1]; //以队列方式记录ticks 价格

     }

   }

   ExtMapBuffer1[0] =   nows;

   num++;

   WindowRedraw( ) ;

return(0);

 

}

 

描述:

 

tick数据指标,没错,是tick数据指标。tick数据是超级短线交易员必须的数据。

 

可惜,MT自身提供的tick数据和市场报价表窗口一样大小,在下单平仓改仓窗口的tick图大小固定,显示的数据很有限,仅能勉强满足观察当前很短时间的tick数据。

 

本指标实际记录tick数据(BID或ASK价),象指标一样显示在主窗口或辅窗口。可设置记录数据点数。

 

唯一要注意的是, MT不允许控制X轴坐标和Y轴坐标范围,所以我们没法改变X轴。

 

tick数据,是价格变动的记录,X轴坐标,常规图上的一个bar对应一次数据变动。

 

另外,MT不是总是优先处理图示窗口刷新,也不是一有价格变化就更新的(虽然更新了那根价格横线)。所以,tick数据有时会有一个点的丢失,本指标通过复制上次数据来填充数据漏洞。

 

图像:

 

Sidus_v.2.jpg

 

参数:TBars, 设置记录绘制多少个tick价格

 

有了这个指标,可以很容易的使用tick数据而不是HLOC数据来计算其它任何指标,如用 iMAOnArray(.....)来得到tick数据的MA。

 

注意:新加入本指标或在指标列表中修改参数,MT将会重新初始化指标,MT没提供tick数据数组记录,当然,本指标显示的tick是从初始化时刻开始收集获得的,初始化时历史数据缺省使用当前时间周期的close数据填充。所以从指标初始化开始,需要一段时间收集tick数据才有足够数据可观察显示。

 

欢迎访问 外 汇 邦 WWW.WaiHuiBang.com
本文标题:Sidus v.2指标源码[MT4公式] - MT4平台MQL4编程学习
本文地址:http://www.ea666.cn/fxschool/autotrading/mql4/40529.html

相关文章

  • 外汇EA编程教程——预处理程序

      预处理程序是MQL编译器的一个子系统,通过预处理程序可以使软件的可读性更好,预处理程序运行在程序编译之前。预处理指令以(#)开头。 1 定义常量使用#define来定义常量。如: 1. #define ABC 100 2. #define P...

    MQL4编程学习
  • 打造风靡全球的自动赚钱机器

    EA智能外汇全自动交易系统,就是将您自己或别人的外汇交易策略用特殊的编程语言(MQL)编写成一个电脑软件程序(Expert Advisor), 让电脑按照您事先设定好的条件自动地为您买卖与交易,当然赢亏结果取决于您的自动交易系...

    MQL4编程学习
  • EA编程教程第三讲 数据类型转换

    MQL语言目前仅支持隐式转换,MQL目前可以做一下数据类型自动转换。int(bool, color, datetime) 可转换成 double 或 stringdouble 可转换成 string,除了以上两种转换外,不能进行其他的数据类型转换,如:int i = 1 / 2; /...

    MQL4编程学习
  • 使用MT4客户端初学者的常见错误

    我的终端显示的时间有误。如何设置时间能够使终端时间与我的电脑时间相同?显示在终端上的时间是最后报价进入客户端的交易服务器时制定的。在客户端内同样是最后可用的服务器时间。在MQL4 程序中,时间可以通过使用T...

    MQL4编程学习
  • MT4软件中的Stochastic Oscillator(随机振荡指标)KD、KDJ使用简介
    MT4软件中的Stochastic Oscillator(随机振荡指标)KD、KDJ使用简介

    随机振荡指标(Stochastic Oscillator)中文名称是随机指数,最早起源于期货市场。是50年代由美国大师乔治.雷恩(George C. Lane)博士发明的,自创立以来,历经半世纪岁月,已被证明是令人膜拜的经典。...

    MQL4编程学习
你可能感兴趣