EA狙击手
发表于 2013-7-22 08:24:18
iOpen
double iOpen( string symbol, int timeframe, int shift)
对于带有时间周期和平移指定货币对 的柱返回 开价格值。如果加载历史为空,函数返回0。
对于当前图表,关于开价格的信息在预定义数组中命名为 Open[].
参量:
symbol - 需应用到计算指标的货币对数据 NULL 意味当前货币对名称。。
timeframe - 时间周期。可以是时间周期列举的任意值。0 意味着当前图表的时间周期。
shift - 从指标缓冲器上获取的价格值指数。
示例:
Print("对于USDCHF H1当前柱: ",iTime("USDCHF",PERIOD_H1,i),", ",iOpen("USDCHF",PERIOD_H1,i),", ",
iHigh("USDCHF",PERIOD_H1,i),", ",iLow("USDCHF",PERIOD_H1,i),", ",
iClose("USDCHF",PERIOD_H1,i),", ", iVolume("USDCHF",PERIOD_H1,i));
EA狙击手
发表于 2013-7-22 08:24:29
iTime
datetime iTime( string symbol, int timeframe, int shift)
对于带有时间周期和平移指定货币对 的柱返回 时间值。如果加载历史为空,函数返回0。
对于当前图表,关于时间的信息在预定义数组中命名Time[].
参量:
symbol - 需应用到计算指标的货币对数据 NULL 意味当前货币对名称。。
timeframe - 时间周期。可以是时间周期列举的任意值。0 意味着当前图表的时间周期。
shift - 从指标缓冲器上获取的价格值指数。
示例:
Print("对于USDCHF H1当前货币对: ",iTime("USDCHF",PERIOD_H1,i),", ",iOpen("USDCHF",PERIOD_H1,i),", ",
iHigh("USDCHF",PERIOD_H1,i),", ",iLow("USDCHF",PERIOD_H1,i),", ",
iClose("USDCHF",PERIOD_H1,i),", ", iVolume("USDCHF",PERIOD_H1,i));
EA狙击手
发表于 2013-7-22 08:25:16
iVolume
double iVolume( string symbol, int timeframe, int shift)
对于带有时间周期和平移指定货币对 的柱返回 价格变动成交量值。如果加载历史为空,函数返回0。
对于当前图表,关于成交量的信息在预定义数组中命名Volume[].
参量:
symbol - 需应用到计算指标的货币对数据 NULL 意味当前货币对名称。。
timeframe - 时间周期。可以是时间周期列举的任意值。0 意味着当前图表的时间周期。
shift - 从指标缓冲器上获取的价格值指数。
示例:
Print("对于USDCHF H1的当前柱: ",iTime("USDCHF",PERIOD_H1,i),", ",iOpen("USDCHF",PERIOD_H1,i),", ",
iHigh("USDCHF",PERIOD_H1,i),", ",iLow("USDCHF",PERIOD_H1,i),", ",
iClose("USDCHF",PERIOD_H1,i),", ", iVolume("USDCHF",PERIOD_H1,i));
EA狙击手
发表于 2013-7-22 08:25:30
Trading functions交易函数
交易管理的一组函数。
从自定义指标中不能调用OrderSend(), OrderClose, OrderCloseBy, OrderDelete和OrderModify 交易函数。
交易函数应用于智能交易和脚本中。如果检验智能交易的“允许实事交易”属性,交易函数不能调用。
来自智能交易和脚本的交易在程序中只能有一个开启。这就是为什么如果交易业务忙,其他交易或脚本在此时不能调用的原因,由于错误 146 (ERR_TRADE_CONTEXT_BUSY)。 使用IsTradeAllowed()函数检测交易或没有交易。 弄清交易访问模式,可以使用改变GlobalVariableSetOnCondition()函数整体变量值。
EA狙击手
发表于 2013-7-22 08:25:40
Execution errors错误代码
任何交易业务(OrderSend(), OrderClose, OrderCloseBy, OrderDelete 和 OrderModify函数)都会因为一些原因导致失败,并且返回负值票据数 或FALSE。 您可以查看GetLastError()函数得知错误的问题所在。 每一个错误必须以不同的方式加以处理。最常见的建议列举如下:
从交易服务器返回的错误代码
数据 应用RefreshRates 函数重试。
EA狙击手
发表于 2013-7-22 08:25:53
常数 值 描述
ERR_NO_ERROR 0 交易业务成功。
ERR_NO_RESULT 1 OrderModify 尝试去还原已经设定好的相同值。一个或多个值必须改变,然后修改尝试重复.
ERR_COMMON_ERROR 2 常规错误。直到错误清晰为止,所有交易必须停止运行。 如果需要客户端的交易系统必须重启。
ERR_INVALID_TRADE_参量 3 无效参量, 例如, 货币对错误,未知 交易业务, 不存在票数等等。程序逻辑必须修改。
ERR_SERVER_BUSY 4 交易服务器忙。稍后请重新尝试。
ERR_OLD_VERSION 5 客户端的旧版本。客户端的最新版本必须初始化。
ERR_NO_CONNECTION 6 交易服务器没有联接。需要确认连接没有断开(例如,应用 IsConnected 函数) 在5秒之后重试。
ERR_TOO_FREQUENT_REQUESTS 8 请求过于频繁。过于频繁的请求必须减少,程序逻辑需要改变。
ERR_ACCOUNT_DISABLED 64 账户被禁止。所有运行交易必须停止。
ERR_INVALID_ACCOUNT 65 账号无效。所有运行交易必须停止。
ERR_TRADE_TIMEOUT 128 交易超时。在重试前必须确认交易业务确实没有成功(存在未修改或未删除的定单)
ERR_INVALID_PRICE 129 无效开价格或报价格。稍后必须刷新 数据应用 /RefreshRates.html">RefreshRates函数重试。 如果错误没有消失,尝试停止所有运行交易,改变程序逻辑。
ERR_INVALID_STOPS 130 Stops 太近或是价格计算错误。 需要刷新数据 /RefreshRates.html">RefreshRates 函数重试 如果错误没有消失,尝试停止所有运行交易,改变程序逻辑。
ERR_INVALID_TRADE_VOLUME 131 无效交易值。 尝试停止所有运行交易,改变程序逻辑。
ERR_MARKET_CLOSED 132 市场关闭。稍后重新尝试。
ERR_TRADE_DISABLED 133 交易被禁止。所有运行交易必须停止。
ERR_NOT_ENOUGH_MONEY 134 没有足够的资金。带有相同参量的交易必须重复。稍后用小额的资金重试, 确定没有足够的资金完成交易。
ERR_PRICE_CHANGED 135数据 应用RefreshRates 函数重试。
ERR_OFF_QUOTES 136 没有报价格 数据 应用RefreshRates 函数重试。
ERR_REQUOTE 138 重新请求报价格。刷新数据 可以应用 RefreshRates 函数重试。 如果错误没有消失,尝试停止所有运行交易,改变程序逻辑。
ERR_ORDER_LOCKED 139 交易定单被锁住。尝试停止所有运行交易,改变程序逻辑。
ERR_LONG_POSITIONS_ONLY_ALLOWED 140 只允许买进。SELL不再重复。
ERR_TOO_MANY_REQUESTS 141 请求过多。 过多的请求必须减少,程序逻辑需要改变。
142 定单按次序排列。它不是一个错误,而是客户端和服务器交易之间一个代码。当断开或重新连接执行交易时, 这种代码的出现次数非常少。此代码与误差128 一样处理。
143 定单已经被执行交易商接受。它不是一个错误,而是客户端和服务器交易之间一个代码。当断开或重新连接执行交易时, 这种代码的出现次数非常少。此代码与误差128 一样处理。
144 在手动确认期间定单已经被客户放弃。它不是一个错误,而是客户端和服务器交易之间一个代码。
ERR_TRADE_MODIFY_DENIED 145 修改被否定。由于太近或被锁定。 数据 应用RefreshRates 函数重试。
ERR_TRADE_CONTEXT_BUSY 146 交易繁忙。只有在IsTradeContextBusy函数错误返回后重试。
ERR_TRADE_EXPIRATION_DENIED 147 否定挂单交易期限。如果期限为零可以重试。
ERR_TRADE_TOO_MANY_ORDERS 148 开仓和挂单交易总数已经达到经纪人设定。 只有在现有仓位关闭或删除之后才可以开新仓位或挂单。
EA狙击手
发表于 2013-7-22 08:26:04
OrderClose平仓
bool OrderClose(int ticket, double lots, double price, int slippage, void Color)
对定单进行平仓操作。如果函数成功,返回的值是真实的。如果函数失败,返回的值是假的。获得详细错误信息,请查看GetLastError()函数。
参量:
ticket - 定单编号。
lots - 手数。
price - 收盘价格。
slippage - 最高划点数。
Color - 图表中标记颜色。如果参量丢失,CLR_NONE值将不会在图表中画出。
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderClose(order_id,1,Ask,3,Red);
return(0);
}
EA狙击手
发表于 2013-7-22 08:26:18
OrderCloseBy反向定单平仓
bool OrderCloseBy( int ticket, int opposite, void Color)
用相反定单对打开仓位进行平仓操作。如果函数成功,返回的值是真实的。如果函数失败,返回的值是假的。获得详细错误信息,请查看GetLastError()函数。
参量:
ticket - 定单编号。
opposite - 相对定单编号
Color - 图表中标记颜色。如果参量丢失,CLR_NONE值将不会在图表中画出
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id);
return(0);
}
EA狙击手
发表于 2013-7-22 08:26:26
OrderClosePrice当前订单收盘价
double OrderClosePrice()
对于当前选择定单返回收盘价格。
注解:定单必须用OrderSelect()函数提前选定。
示例:
if(OrderSelect(ticket,SELECT_BY_POS)==true)
Print("对于定单 ",定单编号" = ",OrderClosePrice()的收盘价格);
else
Print("OrderSelect 失败错误代码是",GetLastError());
EA狙击手
发表于 2013-7-22 09:52:30
OrderCloseTime当前订单平仓时间
datetime OrderCloseTime()
对于当前选择定单返回平仓时间。如果定单时间不是0,所选定单会从账户历史重新尝试。开仓和挂单交易平仓时间必须等于 0。
注解:定单必须用OrderSelect()函数提前选定。
示例:
if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true)
{
datetime ctm=OrderOpenTime();
if(ctm>0) Print("定单10 "开仓时间, ctm);
ctm=OrderCloseTime();
if(ctm>0) Print("定单 10 "平仓时间, ctm);
}
else
Print("OrderSelect失败错误代码是",GetLastError());