默認(rèn)分類 2010-06-02 16:43:43 閱讀20 評論0 字號:大中小
(未解,待讀)
if (OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES)==True) //按交易中的序號選擇第單總數(shù)-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] 打印各種訂單類型的總數(shù)
extern int ExpertMagicNumber=123456;
//+--------------計算所有的訂單類型子函數(shù)()----------------------------------------------------+
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);

}
//+----------------腳本程序主函數(shù)--------------------------------------------------+
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);
}
====================================================================================================
被止損或止贏的檢查返回結(jié)果的程序段
start()
{
OrderEvents(MAGIC); //調(diào)用該子函數(shù)
...
}
//------------------------------------在歷史中分別查找止損單和贏利單 子函數(shù)--------------------------------+
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() {
檢查訂單被止子函數(shù)(MAGIC);
if(類型==OP_BUY ||類型==OP_BUYLIMIT||類型==OP_BUYSTOP) OP=買;
if(類型==OP_BUY ||類型==OP_BUYLIMIT||類型==OP_BUYSTOP) OP=賣;
...
}
void 檢查訂單被止子函數(shù)( int 標(biāo)識符 ) {
static datetime 最后檢查時間;
for( int 個 = 0; 個 < OrdersHistoryTotal(); 個++ ) {
if( OrderSelect(個, SELECT_BY_POS, MODE_HISTORY)
&& OrderMagicNumber() == 標(biāo)識符
&& 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 ) {
...<根據(jù)關(guān)于被止損所做的其他內(nèi)容代碼略>
}
void 被止贏價( int ticket ) {
...<根據(jù)關(guān)于被止贏所做的其他內(nèi)容代碼略>
}
*/
====================================================================================================
愛華網(wǎng)


