MQL4函数 Print M…

我们的群:MT4和MQL4量化编程交流

关于这篇文章点击这里给我发消息

如果微信版面显示不全,可以拖到文章后面查看原文

主要说几个简单的函数

1:Print

将在EA的调试窗口输出日志信息。参数可以是任何类型的。

void  Print(
                 argument,     // 第一个值
  ...                                // 下一个值
               );

参数

...

[in]  任何值用逗号分隔。参数的数量不能超过64个。

注意

数组不能传递给Print()函数。数组必须输入元素乘元素。

double类型具有高达16位数字后小数点精度,并且无论是在传统的或在科学格式都可以输出,取决于数据本身的精度是否达到。 float类型的数据输出与5位后的小数点。输出实数与另一个准确性或预定义的格式, 使用 PrintFormat() 函数.

BOOL类型的数据都为“真”或“假”行输出。日期显示为YYYY.MM.DD HH:MI:SS。要显示数据的另一种形式,用 TimeToString(). 如果该颜色出现在颜色集合里,颜色类型的数据被返回或者作为R,G,B值或者颜色名。

例子(理解)

 

void OnStart()
 {
//--- )输出DBL_MAX使用print()这是相当于到 PrintFormat(%%.16G,DBL_MAX)
  Print("----DBL_MAX怎么看起来像-----");
  Print("Print(DBL_MAX)=",DBL_MAX);
//--- 现在输出DBL_MAX 使用 PrintFormat()
  PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- 输出结果为
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308

//--- 如何输出float
  float c=(float)M_PI; // 我们应该显式转换为目标类型
  Print("c=",c, "    Pi=",M_PI, "    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
 
//--- 用实数计算看能发生些什么
  double a=7,b=200;
  Print("---- Before arithmetic operations");
  Print("a=",a,"   b=",b);
  Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- 划分b (7/200)
  a=a/b;
//--- 现在还原 b 变量中的值
  b=7.0/a; // 预计该 b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - 但它却不是,为什么
//--- 输出b的新计算出的值
  Print("-----算术运算后");
  Print("Print(b)=",b);
  Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//---输出结果为
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (可以看到他小于200)  

//---创建一个很小的值小量= 1E-013
  double epsilon=1e-13;
  Print("----创建一个很小的数-----");
  Print("epsilon=",epsilon); // epsilon=1E-013
//--- Now subtract epsilon from b and again output the value to the Experts journal
  b=b-epsilon;
//--- 用两种方法

  Print("---- B变减去这个很小的数-----");
  Print("Print(b)=",b);
  Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- 输出结果为
// Print(b)=199.9999999999999  (现在减去 epsilon 后 b 的值不能被舍入到 200)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (现在后减去 epsilon  b 的值不能被舍入到 200)
 }

注意:double类型精度

          print输出格式的

          多个类型赋值

          数据类型大小范围

          print输出窗口

2:MarketInfo 函数

返回有关证券"市场观察"窗口中列出的各种数据。

double  MarketInfo(
                              string           symbol,     // 货币名称
                              int                 type       // 信息类型
                             );

参数

symbol

[in]  商品名称.

type

[in]   预定义的类型 。可以是任何的请求标识符的值.

 

返回的值

返回有关证券"市场观察"窗口中列出的各种数据。关于目前的安全信息的一部分存储在 预定义变量里.

 

预定义的类型

ID

描述

MODE_LOW

1

当日最低价

MODE_HIGH

2

当日最高价

MODE_TIME

5

上次tick传入时间

MODE_BID

9

该货币最后叫买价

MODE_ASK

10

该货币最后叫卖价

MODE_POINT

11

该货币的最小变动单位

MODE_DIGITS

12

该货币的报价位数

MODE_SPREAD

13

点差

MODE_STOPLEVEL

14

最小止损线距离

MODE_LOTSIZE

15

一标准手用的资金

MODE_TICKVALUE

16

一标准手下一个点的价值

MODE_TICKSIZE

17

报价的最小单位

MODE_SWAPLONG

18

多头掉期

MODE_SWAPSHORT

19

空头掉期

MODE_STARTING

20

市场开始日期 (在将来经常用到)

MODE_EXPIRATION

21

市场截止日期 (在将来经常用到)

MODE_TRADEALLOWED

22

被允许交易的商品

MODE_MINLOT

23

允许交易的最小手数

MODE_LOTSTEP

24

改变一标准手的幅度

MODE_MAXLOT

25

允许交易的最大手数

MODE_SWAPTYPE

26

掉期计算的凡是. 0 - 点; 1 - 基本; 2 - 偏好; 3 - 保证金;

MODE_PROFITCALCMODE

27

盈利计算模式. 0 - 外汇; 1 - 黄金; 2 - 期货

MODE_MARGINCALCMODE

28

保证金计算模式. 0 - 外汇; 1 - 黄金; 2 - 期货; 3 - 黄金指数

MODE_MARGININIT

29

一标准手初始保证金

MODE_MARGINMAINTENANCE

30

一标准手开仓保证金

MODE_MARGINHEDGED

31

一标准手护盘保证金

MODE_MARGINREQUIRED

32

一标准手自由保证金

MODE_FREEZELEVEL

33

订单冻结点的水平。如果执行价格在于定义的冻结水平的范围内,不能修改、 取消或关闭顺序

附录代码

 

//+------------------------------------------------------------------+
//| 该脚本在商品上的Print信息                          |
//+------------------------------------------------------------------+
void OnStart()
 {
  Print(" 1  当日最低价_LOW= ", MarketInfo(Symbol(), MODE_LOW ));
  Print(" 2  当日最高价_HIGH= ", MarketInfo(Symbol(), MODE_HIGH));
  Print(" 5  最后的K线变动时间_TIME= ", MarketInfo(Symbol(), MODE_TIME));   // (服务器显示时间)。
  Print(" 9  该货币最后叫买价_BID= ", MarketInfo(Symbol(), MODE_BID));   // (取得相应货币对的即时价位,而不管这个EA是放在哪个货币对图表上.如 bid =MarketInfo("GBPUSD",MODE_BID); // 取得 Bid 价位)
  Print(" 10 该货币最后叫卖价_ASK= ", MarketInfo(Symbol(), MODE_ASK));
  Print(" 11 该货币最小变动单位点值_POINT= ", MarketInfo(Symbol(), MODE_POINT));
  Print(" 12 小数位数_DIGITS= ", MarketInfo(Symbol(), MODE_DIGITS));
  Print(" 13 点差_SPREAD= ", MarketInfo(Symbol(), MODE_SPREAD));
  Print(" 14 规定最小止赢止损线_STOP LEVEL= ", MarketInfo(Symbol(), MODE_STOPLEVEL));
  Print(" 15 一标准手所用资金_LOT SIZE= ", MarketInfo(Symbol(), MODE_LOTSIZE));   // 标准手大小,黄金是100盎司,每次交易必须是100盎司的倍数 ( 黄金: 100 ) 。
  Print(" 16 一手每点该货币的价值_TICK VALUE= ", MarketInfo(Symbol(), MODE_TICKVALUE)); //   跳动的基值,价格每次跳动的值都是它的倍数。如黄金,价格每次跳动都是0.05的倍数 ( 黄金: 0.05 ) 。    
  Print(" 17 报价最小单位_TICK SIZE= ", MarketInfo(Symbol(), MODE_TICKSIZE));
  Print(" 18 多头掉期_SWAP LONG= ", MarketInfo(Symbol(), MODE_SWAPLONG));
  Print(" 19 空头掉期_SWAP SHORT= ", MarketInfo(Symbol(), MODE_SWAPSHORT));
  Print(" 20 市场开始日期_STARTING= ", MarketInfo(Symbol(), MODE_STARTING),"    (主要用于期货)");
  Print(" 21 市场截止周期_EXPIRATION= ", MarketInfo(Symbol(), MODE_EXPIRATION),"    (主要用于期货)");
  Print(" 22 交易允许货币对数量_TRADE ALLOWED= ", MarketInfo(Symbol(), MODE_TRADEALLOWED));
  Print(" 23 允许的最小手数_MIN LOT= ", MarketInfo(Symbol(), MODE_MINLOT));
  Print(" 24 改变标准手步幅_LOT STEP= ", MarketInfo(Symbol(), MODE_LOTSTEP));
  Print(" 25 允许的最大标准手数_MAX LOT= ", MarketInfo(Symbol(), MODE_MAXLOT));
  Print(" 26 掉期计算的方式_SWAP TYPE= ", MarketInfo(Symbol(), MODE_SWAPTYPE),"    (0:点; 1 -基本货币对; 2: 兴趣; 3: 货币保证金)");
  Print(" 27 赢利计算模式_PROFIT CALC MODE= ", MarketInfo(Symbol(), MODE_PROFITCALCMODE),"     (0: Forex(外汇); 1: CFD(黄金); 2: Futrues(期货)) ");
  Print(" 28 保证金计算模式_MARGIN CALC MODE= ", MarketInfo(Symbol(), MODE_MARGINCALCMODE),"    (0: Forex(外汇); 1: CFD(黄金); 2: Futrues(期货); 3: CFD for indices(黄金指数))");
  Print(" 29 一个标准手的初始保证金_MARGIN INIT= ", MarketInfo(Symbol(), MODE_MARGININIT));  
  Print(" 30 一个标准手的开仓保证金_MARGIN MAINTENANCE= ", MarketInfo(Symbol(), MODE_MARGINMAINTENANCE));  
  Print(" 31 一个标准手的护盘保证金_MARGIN HEDGED= ", MarketInfo(Symbol(), MODE_MARGINHEDGED));  
  Print(" 32 一个标准手的自由保证金_MARGIN REQUIRED= ", MarketInfo(Symbol(), MODE_MARGINREQUIRED));  
  Print(" 33 冻结订单水平点_FREEZE LEVEL= ", MarketInfo(Symbol(), MODE_FREEZELEVEL));  
  }

 

如果你感兴趣,请关注我们,我们会将最新消息推送给您

                                                  [转载]MQL4函数 <wbr>Print <wbr>MarketInfo <wbr>的介绍

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值