Witam.
Jestem początkującym programistą. W jednej ze strategii chciałem zaprogramować, żeby pozycje były zamykane po upływie określonego czasu np. 24h. Jak powinien wyglądać taki kod?
Kod zamykający zlecenie po określonym czasie.
np tak:reverb pisze:Jestem początkującym programistą. W jednej ze strategii chciałem zaprogramować, żeby pozycje były zamykane po upływie określonego czasu np. 24h. Jak powinien wyglądać taki kod?
Kod: Zaznacz cały
extern int CloseHour = 23;
extern int CloseMinute = 0;
extern int Slippage = 3;
void start() {
double bBid, aAsk;
if (Hour()==CloseHour && Minute()>=CloseMinute) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY) {
bBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), bBid, Slippage, Blue);
}
if (OrderType()==OP_SELL) {
aAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), aAsk, Slippage, Red);
}
}
}
}
}
}
kris007, kolega reverb miał chyba na myśli zamykanie zlecenia po określonym czasie od otwarcia, a nie o określonej godziniereverb pisze:chciałem zaprogramować, żeby pozycje były zamykane po upływie określonego czasu np. 24h.
może coś takiego:
Kod: Zaznacz cały
extern int CloseHour = 0; // ilość godzin po których ma zamknąć (może być większa niż 24
extern int CloseMinute = 1; // ilość minut po których ma zamknąć (możę być większa niż 60 - sumuje się z godzinami)
extern int Slippage = 3;
int OkresDoZamkniecia;
//================
int init()
{
OkresDoZamkniecia=CloseHour*3600 + CloseMinute*60;
return(0);
}
//================
int start()
{
double bBid, aAsk;
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
if (TimeCurrent()-OrderOpenTime()>=OkresDoZamkniecia) {
if (OrderType()==OP_BUY) {
bBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), bBid, Slippage, Blue);
}
if (OrderType()==OP_SELL) {
Alert("czas od otwarcia SELL: ",TimeCurrent()-OrderOpenTime());
aAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), aAsk, Slippage, Red);
}
}
}
}
}
return(0);
}
Tak, pewnie komuś się przydakris007 pisze:a fakt, masz rację, ale nie ma tego złego...
Tym sposobem mamy dwa kody i co za tym idzie dwie opcje... Smile

A tak przy okazji. W jakim celu zastosowałeś:
Kod: Zaznacz cały
bBid=MarketInfo(OrderSymbol(), MODE_BID);
czy też tak po prostu chciałeś mieć elegancki kod

- thisredone
- Stały bywalec
- Posty: 72
- Rejestracja: 05 sie 2010, 17:07