Malo optymalnie i tak na szybko wiec moga byc bledy. type 0, 1 i zwraca true jak byla otwarta pozycja w przeciagu min.Marius pisze:Dzięki wszystkim za pomoc.
Generalnie to chciałbym zrobić tak że ma być max 1 zlecenie long oraz max 1 zlecenie short w ciągu pełnej godziny, na razie udało mi się zrobić limit na 1 (dowolne) zlecenie w ciągu godziny:
if(OrderSelect(OrdersHistoryTotal() -1,SELECT_BY_POS,MODE_HISTORY)==true)
{
int prevtime=OrderCloseTime();
int prevtime_hour=TimeHour(prevtime);
int curenttime=Hour();
int prevday=TimeDayOfYear(prevtime);
if(prevtime_hour < curenttime || TimeDayOfYear(TimeCurrent()) - prevday > 0 )
ticket_long = OrderSend(Symbol(), OP_BUY, Lot_size, Ask, Max_Slippage, 111, 111, "", 1, 0, Yellow);
} //OrderSelect
Dodałem taką linijkę ale niestety otwiera mi po kilka longów pod rząd:
if(prevtime_hour == curenttime && OrderType()==OP_SELL)Ma ktoś może jakiś pomysł jak to rozwiązać?Kod: Zaznacz cały
if(OrderSelect(OrdersHistoryTotal() -1,SELECT_BY_POS,MODE_HISTORY)==true) { int prevtime=OrderCloseTime(); int prevtime_hour=TimeHour(prevtime); int curenttime=Hour(); int prevday=TimeDayOfYear(prevtime); if(prevtime_hour < curenttime || TimeDayOfYear(TimeCurrent()) - prevday > 0 ) ticket_long = ......................... if(prevtime_hour == curenttime && OrderType()==OP_SELL) ticket_long = ......................... } //OrderSelect
Kod: Zaznacz cały
bool WasOpenTradeIn(int min, int type)
{
///dla historycznych
for(int i=0; i<OrdersHistoryTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if( OrderType() = type)
if( MathAbs( OrderOpenPrice() - TimeCurrent() ) <= min*60 )
return(true);
}
///dla otwartych
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADE);
if( OrderType() = type)
if( MathAbs( OrderOpenPrice() - TimeCurrent() ) <= min*60 )
return(true);
}
return(false);
}