首页学院交易策略EA智能交易文章详细

EA编程教程大全之交易函数

外汇网2021-06-17 09:41:47 52
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

从自定义指标中不能调用

OrderSend(), OrderClose, OrderCloseBy, OrderDelete和OrderModify

交易函数。

OrderClose

OrderCloseBy

OrderClosePrice

OrderCloseTime

OrderComment

OrderCommission

OrderDelete

OrderExpiration

OrderLots

OrderMagicNumber

OrderModify

OrderOpenPrice

OrderOpenTime

OrderPrint

OrderProfit

OrderSelect

OrderSend

OrdersHistoryTotal

OrderStopLoss

OrdersTotal

OrderSwap

OrderSymbol

OrderTakeProfit

OrderTicket

OrderType

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,PR洲际交易所_CLOSE,0)>75)

{

OrderClose(order_id,1,Ask,3,Red);

return(0);

}

bool OrderCloseBy( int ticket, int opposite, void Color)

用相反定单对打开仓位执行平仓操作。假使函数成功,返回的值是真实的。假使函数失利,返回的值是假的。得到详细错误信息,请查看GetLastError()函数。

参数:

ticket - 定单编号。

opposite - 相对定单编号

Color - 图表中标记颜色。假使参数丢失,CLR_NONE值将不会在图表中画出

示例:

if(iRSI(NULL,0,14,PR洲际交易所_CLOSE,0)>75)

{

OrderCloseBy(order_id,opposite_id);

return(0);

}

double OrderClosePrice( )

对于目前选择定单返回收盘价格。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(ticket,SELECT_BY_POS)==true)

Print("对于定单 ",定单编号" = ",OrderClosePrice()的收盘价格);

else

Print("OrderSelect 失利错误代码是",GetLastError());

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());

string OrderComment( )

返回定单的注释。

注解:定单务必用OrderSelect()函数提早选定。

示例:

tring comment;

if(OrderSelect(10,SELECT_BY_TICKET)==false)

{ Print("OrderSelect 失利错误代码是",GetLastError());

return(0);

}

comment = OrderComment();

// ...

double OrderCommission( )

返回定单的佣金数。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10,SELECT_BY_POS)==true)

Print("定单10 "佣金,OrderCommission());

else

Print("OrderSelect 失利错误代码是",GetLastError());

bool OrderDelete( int ticket, void Color)

删除先前打开挂单。假使函数成功,返回的值是真实的。假使函数失利,返回的值是假的。得到详细错误信息,请查看GetLastError()函数。

参数:

ticket - 定单编号。

Color - 图表中标记颜色。假使参数丢失,CLR_NONE值将不会在图表中画出。

示例:

if(Ask>var1)

{

OrderDelete(order_ticket);

return(0);

}

datetime OrderExpiration( )

返回挂单的有效日期。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10, SELECT_BY_TICKET)==true)

Print("定单 #10 有效日期为",OrderExpiration());

else

Print("OrderSelect 返回的",GetLastError()错误);

double OrderLots( )

返回选定定单的手数。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10,SELECT_BY_POS)==true)

Print("定单 10 "手数,OrderLots());

else

Print("OrderSelect 返回的 ",GetLastError()错误);

int OrderMagicNumber( )

返回选定订单的指定编号

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10,SELECT_BY_POS)==true)

Print("定单 10 "指定编号, OrderMagicNumber());

else

Print("OrderSelect 返回的 ",GetLastError()错误);

bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, void arrow_color)

对于先前的开仓或挂单执行特性修改。假使函数成功,返回的值为 TRUE。假使函数失利,返回的值为FALSE。 得到详细的错误信息,查看 GetLastError()函数。

注解: 开价格和有效时间的更改只对挂单来说。

假使未更改的值作为函数参数通过,将令生成错误 1 (ERR_NO_RESULT)。

在一部分服务器中挂单的有效时间会被隐藏。该种情形下,当一个非零值在 有效参数被指定时,将生成错误 147 (ERR_TRADE_EXPIRATION_DENIED)。

参数:

ticket - 定单编号。

price - 收盘价格

stoploss - 新止损水平。

takeprofit - 新赢利水平。

expiration - 挂单有效时间。

arrow_color - 在图表中允许对止损/赢利颜色执行修改。假使参数丢失或存在CLR_NONE 值,在图表中将不会表明。

示例:

if(TrailingStop>0)

{

OrderSelect(12345,SELECT_BY_TICKET);

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);

return(0);

}

}

}

double OrderOpenPrice( )

对于目前选择定单返回开价格。

定单务必由OrderSelect() 函数首先选定。

示例:

if(OrderSelect(10, SELECT_BY_POS)==true)

Print("对于定单10 开价格",OrderOpenPrice());

else

Print("OrderSelect返回错误",GetLastError());

datetime OrderOpenTime( )

对于目前选择定单返回购入时间。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10, SELECT_BY_POS)==true)

Print("定单10 购入时间",OrderOpenTime());

else

Print("OrderSelect 返回的错误 ",GetLastError());

void OrderPrint( )

依照下方形式打印选择定单信息:

定单编号; 购入时间; 交易业务; 手数总数; 开盘价格; 止损; 赢利; 平仓时间; 收盘价格; 佣金; 掉期; 盈利; 注释; 指定编码; 挂单有效日期

定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10, SELECT_BY_TICKET)==true)

OrderPrint();

else

Print("OrderSelect 失利错误代码是",GetLastError());

double OrderProfit( )

对于选择定单返回净盈利值 (除掉期和佣金外)。对于开仓位目前不真实盈利。对于平仓为固定盈利。

对于目前选择定单返回盈利。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(10, SELECT_BY_POS)==true)

Print("定单 10 盈利",OrderProfit());

else

Print("OrderSelect返回的错误",GetLastError());

bool OrderSelect( int index, int select, void pool)

函数选择定单。假使函数成功,返回的值为TRUE。假使函数失利,返回的值为FALSE。得到详细错误信息,请查看GetLastError()函数。

假使定单编号被选定,此pool参数被认知。此定单编号为唯一识别符。找出所选定单的列表,它的平仓时间务必执行分析。假使定单出售时间为零, 开单和挂单将从终端位置列表打开。可以从定单类型区别开挂单和开单。 假使定单的出售时间不等于0, 平单和删除定单是在终端历史中被选择。他们同样可以区分删除定单是在终端历史中被选择。他们同样可以区分定单类型。

参数:

index - 定单索引。

select - 选定模式。可以为下方的任意值:

SELECT_BY_POS

SELECT_BY_TICKET 。

pool - 可选择定单索引。当选择SELECT_BY_POS参数时运用。可以为下方的任意值:

MODE_TRADES (default)- 来自交易的定单(开单和挂单),

MODE_HISTORY - 来自历史的定单(平仓和取消定单)。

示例:

if(OrderSelect(12470, SELECT_BY_TICKET)==true)

{

Print("定单 #12470 开价格", OrderOpenPrice());

Print("定单 #12470 收盘价格 ", OrderClosePrice());

}

else

Print("OrderSelect 返回的错误 ",GetLastError());

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, void comment, void magic, void expiration, void arrow_color)

这个功能首要应用于开仓位置和挂单交易.

由交易服务器返回定单的定单编号或者-1,表明是错误的。得到此外的错误信息, 查看GetLastError()函数。

注解:市场定单的开启(OP_SELL or OP_BUY), 只有最后的卖价格或买价格可以应用到开价格中. 假使实施目前带有不同证券的业务,务必运用带有MODE_BID 或 MODE_ASK参数的MarketInfo()函数得到. 预期或是不标准的单价不可用. 假使没有要求从新开价格或者没有依照小数点后的数字正常化,错误129 (ERR_INVALID_PR洲际交易所)将令生成. 假使请求开价格的日期完全过期,错误138 (ERR_REQUOTE)将令生成. 假使请求的单价是过时的,仓位只能够在目前价格位打开/只有目前价格位在price+-slippage规模内.

止损和赢利水平线不能够关闭市场. 最小距离的终止水平点可以运用MarketInfo ()函数得到MODE_STOPLEVEL参数。 在错误或水平位不正常停止情形下,错误130 (ERR_INVALID_STOPS)将令生成.

在挂单的位置,开价格不能够终止市场活动. 最小距离的终止水平点可以运用MarketInfo ()函数得到MODE_STOPLEVEL参数。 在错误或水平位不正常停止情形下,错误130 (ERR_INVALID_STOPS)将令生成.

挂单交易的期限在一部分服务器上禁止应用。该种情形下,一个特殊的非零值的参数将令造成,错误 147 (ERR_TRADE_EXPIRATION_DENIED)将令生成。

在一部分服务器上,开仓和挂单交易的总数会被限定。假使多出限定,则不能开启新仓位。如此交易服务器返回到错误 148 (ERR_TRADE_TOO_MANY_ORDERS)。

参数:

ymbol - 交易货币对。

cmd - 买入方式。可以是买入方式列举的任意值。

volume - 买入手数。

price - 收盘价格。

slippage - 最大允许滑点数。

stoploss - 止损水平。

takeprofit - 赢利水平。

comment - 注解文本。注解的最后部分可以由服务器更改。

magic - 定单指定码。可以作为用户指定识别码运用。

expiration - 定单有效时间(只限挂单)。

arrow_color - 图表上箭头颜色。假使参数丢失或存在CLR_NONE价格值不会在图表中画出。

示例:

int ticket;

if(iRSI(NULL,0,14,PR洲际交易所_CLOSE,0)<25)

{

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green);

if(ticket<0)

{

Print("OrderSend 失利错误 #",GetLastError());

return(0);

}

}

int OrdersHistoryTotal( )

在账户历史返回关闭定单数加载进入终端。历史列表的大小取决于终端的"帐户历史" 表格的目前的设置.

示例:

// 来自交易历史的复苏信息

int i,hstTotal=OrdersHistoryTotal();

for(i=0;i

{

//---- 检查选择结果

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)

{

Print("带有 (",GetLastError(),")错误的历史失利通道");

break;

}

// 定单的一部分工作

double OrderStopLoss( )

对于目前选择定单返回止损值。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(ticket,SELECT_BY_POS)==true)

Print("对于10 止损值", OrderStopLoss());

else

Print("OrderSelect 失利错误代码是",GetLastError());

int OrdersTotal( )

返回市场和挂单的总数

示例:

int handle=FileOpen("OrdersReport.csv",FILE_WRITE|FILE_CSV,"/t");

if(handle<0) return(0);

// 写标题

FileWrite(handle,"#","开价格","购入时间","货币对","手数");

int total=OrdersTotal();

// 编撰定单命令

for(int pos=0;pos

{

if(OrderSelect(pos,SELECT_BY_POS)==false) continue;

FileWrite(handle,OrderTicket(),OrderOpenPrice(),OrderOpenTime(),OrderSymbol(),OrderLots());

}

FileClose(handle);

double OrderSwap( )

对于目前选择定单返回掉期值。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(order_id, SELECT_BY_TICKET)==true)

Print("对于定单 #掉期", order_id, " ",OrderSwap());

else

Print("OrderSelect 失利错误代码是",GetLastError());

string OrderSymbol( )

对于选择定单返回定单货币对值。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(12, SELECT_BY_POS)==true)

Print("定单 #货币对", OrderTicket(), " is ", OrderSymbol());

else

Print("OrderSelect 失利错误代码是",GetLastError());

double OrderTakeProfit( )

对于目前选择定单返回赢利值。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(12, SELECT_BY_POS)==true)

Print("定单 #",OrderTicket()," 盈利: ", OrderTakeProfit());

else

Print("OrderSelect() 返回错误 - ",GetLastError());

int OrderTicket( )

对于目前选择定单返回定单编号。

注解:定单务必用OrderSelect()函数提早选定。

示例:

if(OrderSelect(12, SELECT_BY_POS)==true)

order=OrderTicket();

else

Print("OrderSelect 失利错误代码",GetLastError());

int OrderType( )

对于目前选择定单返回定单类型。可以是下方的任意值:

OP_BUY -买进,

OP_SELL - 出售,

OP_BUYLIMIT - 挂单购入限定,

OP_BUYSTOP - 挂单停止限定,

OP_SELLLIMIT - 挂单出售限定,

OP_SELLSTOP - 挂单停止限定。

注解: 定单务必由OrderSelect()函数选择。

示例:

int order_type;

if(OrderSelect(12, SELECT_BY_POS)==true)

{

order_type=OrderType();

// ...

}

else

Print("OrderSelect() 返回错误 - ",GetLastError());

标签:

随机快审展示
加入快审,优先展示

加入VIP