天天看点

MQL4函数 Print M…

原文地址:MQL4函数 Print MarketInfo 的介绍 作者:季风

我们的群:

MQL4函数 Print M…

关于这篇文章

MQL4函数 Print M…

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

主要说几个简单的函数

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函数 Print M…