如何找到最后持仓单之困惑 (LastOrder) - 牛在天上飞的日志 - 网 last order 陈奕迅
默认分类 2010-06-02 16:43:43 阅读20 评论0 字号:大中小
(未解,待读)
if (OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES)==True) //按交易中的序号选择第单总数-1个订单
{LastOrder= OrderOpenPrice();} //找到最后单的开仓价
if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES)==True) //按交易中的序号选择0号订单?
{FirstOrder= OrderOpenPrice();} //首个订单开仓价
价差= MathAbs(LastOrder-FirstOrder); //
====================================================================================================
int ticket[100];
double price[100];
datetime oot[100];
int count=0;
for(int index = OrdersTotal()-1; index >=0; index--)
if ( OrderSelect(index, SELECT_BY_POS) &&OrderMagicNumber()==MagicNumber &&OrderSymbol()==Symbol() )
{
ticket[count]= OrderTicket();
price[count] = OrderOpenPrice();
oot[count] = OrderOpenTime();
count++;
}
int order[100]; // 插入分类
for (int kk=0; kk<count; kk++) { // Keep ordering ticket[*], price[*] and oot[*]
for (int ii=kk; ii>0 && oot[order[ii-1]] > oot[kk]; ii--)
{ order[ii]=order[ii-1];} // kk oot[kk] order[kk] oot[order[kk]]
// 0 3. 1 1.
order[ii]=kk; // 1 1. 2 2.
} // 2 2. 0 3.
// ticket[order[0]] is the oldest
// ticket[order[count-1]] is the latest
====================================================================================================
[Script] 打印各种订单类型的总数
extern int ExpertMagicNumber=123456;
//+--------------计算所有的订单类型子函数()----------------------------------------------------+
int MyOrdersTotal(int buyNumber, int sellNumber,int buyLimitNumber
,int sellLimitNumber,int buyStopNumber, int sellStopNumber, int MagicNumber=0 ) //
{
int res,
orderType;
//----
buyNumber=0;
sellNumber=0;
buyLimitNumber=0;
sellLimitNumber=0;
buyStopNumber=0;
sellStopNumber=0;
for (int i=OrdersTotal()-1; i>=0; i--)
if (OrderSelect(i, SELECT_BY_POS))
{
if (MagicNumber==0 || (OrderMagicNumber()==MagicNumber && MagicNumber!=0)) //
{
switch(OrderType())
{
case OP_BUY: buyNumber++;break;
case OP_SELL: sellNumber++;break;
case OP_BUYLIMIT: buyLimitNumber++;break;
case OP_SELLLIMIT: sellLimitNumber++;break;
case OP_BUYSTOP: buyStopNumber++;break;
case OP_SELLSTOP: sellStopNumber++;break;
}
}
}
//----
res=buyNumber+sellNumber+buyLimitNumber+sellLimitNumber+buyStopNumber+sellStopNumber;
return(res);
}
//+----------------脚本程序主函数--------------------------------------------------+
int start()
{
int buys, sells, buyLs, sellLs, buySts, sellSts;
if (MyOrdersTotal(buys,sells,buyLs,sellLs,buySts,sellSts,ExpertMagicNumber)>0)
Print("买单=",buys," 卖单=",sells," 限价买单=",buyLs," 限价卖单=",sellLs," 突破价买单=",buySts," 突破价卖单=",sellSts);
return(0);
}
====================================================================================================
被止损或止赢的检查返回结果的程序段
start()
{
OrderEvents(MAGIC); //调用该子函数
...
}
//------------------------------------在历史中分别查找止损单和赢利单 子函数--------------------------------+
void OrderEvents( int magic ) {
static datetime lastCheck;
for( int o = 0; o < OrdersHistoryTotal(); o++ ) {
if( OrderSelect(o, SELECT_BY_POS, MODE_HISTORY)
&& OrderMagicNumber() == magic &&
&& OrderCloseTime() > lastCheck )
if( OrderClosePrice() == OrderStopLoss() ) //(是否忽略了大于小于的情况未知)
OnStopLoss(OrderTicket());
else if( OrderClosePrice() == OrderTakeProfit() ) //(是否忽略了大于小于的情况未知)
OnTakeProfit(OrderTicket());
}
lastCheck = TimeCurrent();
}
//--------------
void OnStopLoss( int ticket )
{
...<do something ........>
}
//---------------
void OnTakeProfit( int ticket )
{
...<do something ........>
}
//==========================================================
/*
start() {
检查订单被止子函数(MAGIC);
if(类型==OP_BUY ||类型==OP_BUYLIMIT||类型==OP_BUYSTOP) OP=买;
if(类型==OP_BUY ||类型==OP_BUYLIMIT||类型==OP_BUYSTOP) OP=卖;
...
}
void 检查订单被止子函数( int 标识符 ) {
static datetime 最后检查时间;
for( int 个 = 0; 个 < OrdersHistoryTotal(); 个++ ) {
if( OrderSelect(个, SELECT_BY_POS, MODE_HISTORY)
&& OrderMagicNumber() == 标识符
&& OrderCloseTime() > 最后检查时间 )
if(OP==买)
if( OrderClosePrice() <= OrderStopLoss() )
被止损价(OrderTicket());
else if( OrderClosePrice() >= OrderTakeProfit() )
被止赢价(OrderTicket());
if(OP==卖)
if( OrderClosePrice() >= OrderTakeProfit() )
被止损价(OrderTicket());
else if( OrderClosePrice() <= OrderStopLoss() )
被止赢价(OrderTicket());
}
最后检查时间 = TimeCurrent();
}
void 被止损价( int ticket ) {
...<根据关于被止损所做的其他内容代码略>
}
void 被止赢价( int ticket ) {
...<根据关于被止赢所做的其他内容代码略>
}
*/
====================================================================================================
更多阅读
win8如何找到运行 精 win7系统如何找到运行
win8如何找到运行 精——简介Windows 8是由微软公司开发的,具有革命性变化的操作系统。该系统旨在让人们的日常电脑操作更加简单和快捷,为人们提供高效易行的工作环境Windows 8支持来自Intel、AMD和ARM的芯片架构。Windows Phone 8采
如何找到隐藏文件夹 文件夹隐藏了怎么恢复
如何找到隐藏文件夹——简介在默认情况下Windwos是不显示隐藏文件夹的,如果想要查看隐藏的文件夹,通常的做法是通过文件夹选项菜单的设置来显示隐藏文件夹。具体实现方法步骤如下。如何找到隐藏文件夹——方法/步骤如何找到隐藏文件
2012高考零分作文之八:坐在路边鼓掌的人
我是一名高三的学生,很多时候我都是在看书。有时候我也偷偷的跑到网吧里上网,由于花的都是我父母的钱,所以往往我都是忐忑的在电脑前面呆上两个小时,不会多出一分钟,因为多一分钟我就得多出两块五。 以前上网我喜欢玩游戏,现在我已经高三
如何读取Lucene索引数据 - lewutian@126的日志 - 网易博客 lucene 更新索引
本文要介绍一下如何利用IndexReader获取信息。为什么要读索引呢?因为我需要实现这些功能:(1) 统计term在整个collection中的文档频度(document frequency, DF);(2) 统计term在整个collection中出现的词次(term frequency in whole coll
如何辨别个股短线涨停潜力 - 林之鹤的日志 - 网易博客 短线个股推荐
我们要选取具有短线爆发力的股票,需要从以下几点着手:1. 观察该股近3个月的走势,尤其是距离目前比较近的周期中该股涨停的数量。有的股票,可能是经常涨停,比如说近期的珠江控股000505,华帝股份002035,界龙实业600836……说明这些个股中,短线