Kod zamykający zlecenie po określonym czasie.

O jezykach programowania w platformach i nie tylko.
reverb
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 09 kwie 2011, 19:57

Kod zamykający zlecenie po określonym czasie.

Nieprzeczytany post autor: reverb »

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?

Awatar użytkownika
kris007
Pasjonat
Pasjonat
Posty: 551
Rejestracja: 23 sty 2008, 22:50

Nieprzeczytany post autor: kris007 »

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?
np tak:

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

Awatar użytkownika
redart
Stały bywalec
Stały bywalec
Posty: 75
Rejestracja: 06 lip 2008, 22:30

Nieprzeczytany post autor: redart »

reverb pisze:chciałem zaprogramować, żeby pozycje były zamykane po upływie określonego czasu np. 24h.
kris007, kolega reverb miał chyba na myśli zamykanie zlecenia po określonym czasie od otwarcia, a nie o określonej godzinie

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

Awatar użytkownika
kris007
Pasjonat
Pasjonat
Posty: 551
Rejestracja: 23 sty 2008, 22:50

Nieprzeczytany post autor: kris007 »

redart pisze:kris007, kolega reverb miał chyba na myśli zamykanie zlecenia po określonym czasie od otwarcia, a nie o określonej godzinie
a fakt, masz rację, ale nie ma tego złego...
Tym sposobem mamy dwa kody i co za tym idzie dwie opcje... :)

reverb
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 09 kwie 2011, 19:57

Nieprzeczytany post autor: reverb »

Wielkie dzięki! :D
Zdecydowanie odradzam forex jako sposób na szybkie i łatwe pieniądze.

Awatar użytkownika
redart
Stały bywalec
Stały bywalec
Posty: 75
Rejestracja: 06 lip 2008, 22:30

Nieprzeczytany post autor: redart »

kris007 pisze:a fakt, masz rację, ale nie ma tego złego...
Tym sposobem mamy dwa kody i co za tym idzie dwie opcje... Smile
Tak, pewnie komuś się przyda :-)
A tak przy okazji. W jakim celu zastosowałeś:

Kod: Zaznacz cały

bBid=MarketInfo(OrderSymbol(), MODE_BID); 
czy z jakiś przyczyn jest to lepsze od prostego wstawienia Bid w OrderClose ?
czy też tak po prostu chciałeś mieć elegancki kod :-)

Awatar użytkownika
thisredone
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 05 sie 2010, 17:07

Nieprzeczytany post autor: thisredone »

wstawił to, żeby możliwe było zamknięcie transakcji zawartej na innej parce niż ta, na której zapuszczony jest ea.

Fx_boy
Pasjonat
Pasjonat
Posty: 693
Rejestracja: 30 maja 2011, 08:31

Nieprzeczytany post autor: Fx_boy »

Chciałbym skorzystać z możliwości zamykania pozycji o danej godzinie, czy jest taki skrypt?, ewentualnie inne narzędzie do tego celu?. Na kodach jw. niestety nie znam się.
Dziękuję i pozdrawiam.

ODPOWIEDZ