📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    MQL4对象操作函数(一)

    2013-08-13 · 7586 阅读
    • ObjectCreate() – 创建对象
    • ObjectDelete() – 删除对象
    • ObjectDescription() – 获取对象描述
    • ObjectFind() – 查找指定对象
    • ObjectGet() – 获取指定对象的属性值
    • ObjectSet() – 修改指定对象属性值
    • ObjectGetFiboDescription() – 获取斐波纳契对象描述
    • ObjectSetFiboDescription() – 设置斐波纳契对象描述
    • ObjectGetShiftByValue() – 计算并返回柱体索引
    • ObjectGetValueByShift() – 计算并返回指定柱体价格值
    • ObjectMove() – 移动对象
    • ObjectName() – 获取对象名
    • ObjectsDeleteAll() – 删除指定对象
    • ObjectSetText() – 设置对象描述
    • ObjectsTotal() – 获取指定类型对象总数
    • ObjectType() – 获取对象类型

    ObjectCreate() – 创建对象[size=1em]
    1

    2

    3

    4

    bool ObjectCreate(string name, int type, int window,

                      datetime time1, double price1,

                      void     time2, void   price2,

                      void     time3, void   price3)




    在指定的窗口中用指定的名称、类型和最初的坐标创建对象。根据对象类型与对象有关的坐标个数可以是可以是1到3个。如果函数成功,返回TRUE,否则,返回FALSE。要想获得详细的错误信息,请调用GetLastError()函数。
    OBJ_LABEL类型的对象忽略坐标。使用 ObjectSet() 设定 OBJPROP_XDISTANCEOBJPROP_YDISTANCE属性。
    注:图表子窗口(如果子窗口图表中带有指标)编号从1开始。图表主窗口总是存在的,且索引为零。
    坐标必须成对传递:时间和价格。例如,OBJ_VLINE对象只需要时间,但价格(任意值)也必须同时传递。
    参数:
    name - 对象唯一名称。type - 对象类型。它可以是 对象类型列表 的任意值。window - 要添加对象的窗口索引。窗口索引必须大于或等于0,并且小于 WindowsTotal()。time1 - 第一点时间。price1 - 第一点价格值。time2 - 第二点时间。price2 - 第二点价格值。time3 - 第三点时间。price3 - 第三点价格值。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    // 新文本对象

    if(!ObjectCreate("text_object", OBJ_TEXT, 0, D'2004.02.20 12:30', 1.0045))

      {

       Print("错误:不能创建文本! 代码 #",GetLastError());

       return(0);

      }

    // 新标签对象

    if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0))

      {

       Print("错误:不能创建label_object! 代码 #",GetLastError());

       return(0);

      }

    ObjectSet("label_object", OBJPROP_XDISTANCE, 200);

    ObjectSet("label_object", OBJPROP_YDISTANCE, 100);




    Back to Top

    ObjectDelete() – 删除对象[size=1em]
    1

    bool ObjectDelete(string name)




    删除指定名称的对象。如果函数成功,返回TRUE,否则,返回FALSE。
    参数:
    name - 要删除对象的名称。
    示例:
    [size=1em]
    1

    ObjectDelete("text_object");




    Back to Top

    ObjectDescription() – 获取对象描述[size=1em]
    1

    string ObjectDescription(string name)




    返回对象描述。对于OBJ_TEXT和OBJ_LABEL类型对象,这些对象设置的文本将返回。
    参见 ObjectSetText() 函数。
    参数:
    name - 对象的名称。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    //  将图表对象列表写入文件

    int    handle, total;

    string obj_name,fname;

    // 文件名称

    fname="objlist_"+Symbol();

    handle=FileOpen(fname,FILE_CSV|FILE_WRITE);

    if(handle!=false)

       {

        total=ObjectsTotal();

        for(int i=-;i<total;i++)

          {

           obj_name=ObjectName(i);

           FileWrite(handle,"Object "+obj_name+" description= "+ObjectDescription(obj_name));

          }

        FileClose(handle);

       }




    Back to Top

    ObjectFind() – 查找指定对象[size=1em]
    1

    int ObjectFind(string name)




    查找指定名称的对象。函数返回包含找到的对象窗口索引。如果查找失败,返回-1。如果想获取详细的错误信息,请调用GetLastError()函数。
    图表子窗口(如果图表子窗口带有指标)编号从1开始。图表主窗口总是存在且索引为零。
    参数:
    name - 要查找的对象名称。
    示例:
    [size=1em]
    1

    if(ObjectFind("line_object2")!=win_idx) return(0);




    Back to Top

    ObjectGet() – 获取指定对象的属性值[size=1em]
    1

    double ObjectGet(string name, int index)




    函数返回指定对象的属性值。如果想获取详细的错误信息,请调用GetLastError()函数。
    参见 ObjectSet() 函数。
    参数:
    name - 要查找的对象名称。index - 对象属性的索引。它可以是 对象属性枚举值 的任意值。
    示例:
    [size=1em]
    1

    color oldColor=ObjectGet("hline12", OBJPROP_COLOR);




    Back to Top

    ObjectSet() – 修改指定对象属性值[size=1em]
    1

    bool ObjectSet(string name, int index, double value)




    修改指定对象的属性值。如果函数成功,返回TRUE,否则,返回FALSE。如果想获取详细的错误信息,请调用 GetLastError() 函数。
    参见 ObjectGet() 函数。
    参数:
    name - 要查找的对象名称。index - 对象属性的索引。它可以是 对象属性枚举值 的任意值。value - 给定的新属性值
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    // 将第1个坐标移到最后一个柱子的时间

    ObjectSet("MyTrend", OBJPROP_TIME1, Time[0]);

    // 设定第二个斐波纳契水平线

    ObjectSet("MyFibo", OBJPROP_FIRSTLEVEL+1, 1.234);

    // 设置对象可视性,对象显示在15分钟和1小时图表上

    ObjectSet("MyObject", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_H1);




    Back to Top

    ObjectGetFiboDescription() – 获取斐波纳契对象描述[size=1em]
    1

    string ObjectGetFiboDescription(string name, int index)




    返回斐波纳契对象的水平线说明。斐波纳契水平线的数量取决于对象类型。斐波纳契水平线个数最大为32(0到31)。
    如果想获取详细的错误信息,请调用 GetLastError() 函数。
    参见 ObjectSetFiboDescription() 函数。
    参数:
    name - 要查找的对象名称。index - 斐波纳契水平线索引(0-31)。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    #include

      ...

      string text;

      for(int i=0;i<32;i++)

        {

         text=ObjectGetFiboDescription(MyObjectName,i);

         //---- 检查对象是否少于32条水平线

         if(GetLastError()!=ERR_NO_ERROR) break;

         Print(MyObjectName,"水平线: ",i," description: ",text);

        }




    Back to Top

    ObjectSetFiboDescription() – 设置斐波纳契对象描述[size=1em]
    1

    bool ObjectSetFiboDescription(string name, int index, string text)




    本函数为斐波纳契对象的水平线设置一个新的描述。斐波纳契水平线数量最大为32(0到31)。
    参数:
    name - 要查找的对象名称。index - 斐波纳契水平线索引(0-31)。text - 新的水平线描述。
    示例:
    [size=1em]
    1

    ObjectSetFiboDescription("MyFiboObject",2,"Second line");





    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 5 个

    foplslsy LV3

    发表于 2014-12-4 19:51:57 | 显示全部楼层

    路过。。看下先。

    石冰心 LV9

    发表于 2014-12-24 07:59:14 | 显示全部楼层

    下了  的确不错

    无从说起 LV4

    发表于 2014-12-28 09:43:14 | 显示全部楼层

    [s:145]

    tjuahzwr LV0

    发表于 2014-12-31 06:56:37 | 显示全部楼层

    赚钱,赚积分。顶....

    记忆开始 LV3

    发表于 2014-12-31 16:22:54 | 显示全部楼层

    看看什么EA,,,
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服