zoukankan      html  css  js  c++  java
  • MQL5备忘(2016-8-28)

    MQL5备忘

    快捷操作:

    ·Ctrl+Space------The List Names dropdown

    ·Ctrl+Shift+Space------Show Parameter Info

     

    整数类型:charshortintlong

    ·数据范围char

    ·ucharushortuintulong表示无符号整数,皆无负数

     

    string类型必须加双引号(“ ”)

    ·若要在string中加入单引号、双引号,必须要在引号前加上反斜杠:()---(”)(’)

    ·若要在string中加入反斜杠,必须要用两个反斜杠:\

    ·在sting中加入 表示另起一行

     

    datetime类型若要直接输入时间,需要以D开头、用单引号括起

     

    数组要常用ArrayResize( )函数,且只有建立动态数组才可以被重新建立大小:

    ·double A[ ]     ArrayResize(A,4); 

    ·double B[ ][4][3]  ArrayReseze(B,5);  //多维数组只有第一维才允许设置成动态

    ·ArrayResize( )函数重设数组大小,原位置数据保留

     

    函数:

    ·简洁转换参数类型:double varA;  void TEST( (int) varA ) ;  //varA自动转成int类型

    ·函数中的参数带有默认参数值必须放在最后

    ·允许重载函数:函数名称相同,但是内部结构不同。

    ·void test( int & a ) {…}  //变量前的&为引用声明符,表示a与引用的变量同时变化:

    int &a=b; ab同时变化,a=a/2运算也会导致b变化

     

    定义变量前加input,变量会在The Input tab面板显示:

    ·enum DayofWeek{Sunday,Monday,…,Saturday};

      Input DayofWeek Day = Monday;

    ·用系统枚举定义更方便:

      input ENUM_ORDER_TYPE_FILLING FillType = ORDER_FILLING_FOK;

     

    static(静态)变量不会被原始的static定义语句重新赋值:

    ·static int A=1  A++  //A只会被static语句定义一次得到1,之后为234…

     

    除法运算要防止歧义

    ·double A=10/3  double B=10.0/3.0  //A输出3.0B输出3.333…

     

    实数运算要常用到NormalizeDouble(double value , int digits)

     

    条件和循环操作:

    ·if--- ; if---else--- ; if---else if---…---else ; while ; do-while ;

    ·条件运算符:(?  : )

      ·bool result = condition语句 ? true语句 : false语句 ; //condition判定,执行对应语句

    ·switch操作:

      ·switch…case…(default)必须要常数才行,且case/default里常用到break

      ·case若没有表达句,会强制执行下面的,无论条件:

      x=1;swith(x){case 1:  case 2:  case 3: …… ;}  //会执行case3的表达句

    ·for(int a=1 ; a!=5 ; a++) {…} //for语句中间判定为true就会执行循环

      ·for(int a=1,b=2 ; a<=5 ; a++,b+=2) {…} //不是二维运算,是2个同时算

    ·break跳出最近的循环;continue结束当前循环,进入下一轮

     

    class类型

    ·“ . ”表示成员运算符,常用于struct变量、class变量(注意是变量)的成员访问。

    ·“ :: ”表示域运算符,常用于class类型(注意是类型)的访问,如class类外定义class

    ·可以定义构造函数:class A{ publicA (… )}// {}中的Aclass的一样

    ·类的继承要用“:”,且要注明继承类型public/protected/private

    ·类中虚函数(virtual):基类的虚函数可被派生类的同名函数覆盖。若不加virtual,同样也会出现覆盖。

     

    预处理指令:

    ·#define可直接定义简单函数形式:#define CIRC(Num) 100*Num

    ·#include <*.mqh> 表示系统Include目录下*.mqh

    ·#include “*.mqh” 表示该programe所在目录中的*.mqh

     

    发送OrderSend


    ·MqltradeRequest request={0};

    MqltradeResult result={0};

    OrderSend(request,result);

    //默认赋值{0}

    ·MqltradeRequest request;

    MqltradeResult result;

    ZeroMemory(request); //非常重要

    OrderSend(request,result);


     

    OrderSend反馈:

    ·result.retcode返回代码:TRADE_RETCODE_PLACED(10008) or TRADE_RETCODE_DONE(10009)表示成功

    ·判定仓位时可以用到:

      do Sleep(100); while(PositionSelect(_Symbol)==false); //防止编译速度超过执行速度

     

    时间序列、技术指标:

    ·MqlRates仅用于数组创建,ArraySetAsSeries用于设置序列,CopyRates用于复制数据:

    MqlRates bar[]; ArraySetAsSeries(bar, true); CopyRates(_Symbol, _Period, 0, 100, bar);

    ·CopyTimeCopyOpen…等也需要先创建对应的数组

    ·iMA( )…等返回的是(int) indicator_handle(指标处理器),再通过CopyBuffer赋值到数组:

      double ma[ ];  ArraySetAsSeries(ma, true);

    int maHandle = iMA(…);  CopyBuffer (maHandle, 0, 0, 3, ma);

    ·iCustom返回默认目录下程序文件指标处理器,同样用CopyBuffer

  • 相关阅读:
    JUC组件扩展(二)-JAVA并行框架Fork/Join(四):监控Fork/Join池
    JUC组件扩展(二)-JAVA并行框架Fork/Join(三):在任务中抛出异常
    JUC组件扩展(二)-JAVA并行框架Fork/Join(二):同步和异步
    JUC组件扩展(二)-JAVA并行框架Fork/Join(一):简介和代码示例
    JUC组件扩展(一):FutureTask理解
    JUC之AQS
    mysqldump全量备份+mysqlbinlog二进制日志增量备份
    linux下利用shell脚本和mysqldump热备份和恢复mysql
    分布式链路追踪(Tracing)系统 – Jaeger在Golang中的使用
    微服务的时间和成本去哪儿了
  • 原文地址:https://www.cnblogs.com/i201102053/p/10626607.html
Copyright © 2011-2022 走看看