zamknięcie otwartych pozycji

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

zamknięcie otwartych pozycji

Nieprzeczytany post autor: personov »

Mam szybkie pytanie. Czy istnieje jakieś proste polecenie :
"If ( warunki ) zamknij wszystkie otwarte pozycje"
A jeszcze lepiej jak byłoby zamknij otwarte pozycje BUY i oddzielna komenda zamknij wszystkie otwarte pozycje SELL.
Chodzi mi o coś w rodzaju :
if (...warunki...) send(OP_SELL);
if (...warunki...) send(OP_BUY);

tylko dla zamykania.
Solą życia jest kasa.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

prościej byłoby skorzystać z wyszukiwarki bo było i ta nawet z 2 posty niżej
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Tak wiem. Czytałem tego posta i nawet próbowałem.
Jednak mój dotychczasowy zasób wiedzy w programowaniu nie pozwala mi zrozumieć dlaczego wyskakuje mi błąd, że wyrażenie "ZamknijAll" nie istnieje.
Rozumiem, że "ZamknijAll" musi być zdefiniowane i pewnie jest zdefiniowane w kodzie trzecim : "void...." .
Ale wpisywałem wszystko tylko może w nieodpowiednim miejscu w całym kodzie EA.
Dlatego zadałem pytanie czy itnieje coś prostszego, jakaś jedna komenda typu (OP_BUY).
Solą życia jest kasa.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

ZamknijAll to funkcja

Wrzucasz ją na koniec kodu EA

A potem gdziesz wywołujesz w postaci:

Kod: Zaznacz cały

ZamknijAll(parametry,jeśli,są,oddzielamy,przecinkiem);
lub

Kod: Zaznacz cały

ZamknijAll()
personov pisze:czy itnieje coś prostszego, jakaś jedna komenda typu
Niestety nie. Masz klocki i narzędzia możesz budować z nich.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

No i wszystko działa. Udało się.
A podpowiecie mi jak ma wyglądać kod jak chciałbym to podzielić na pozycje BUY i SHORT ?
void ZamknijBuy()
{
int i;

for (i = OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Orange);
}
}
//////////////////////////////////////////////////
void ZamknijShort()
{
int i;

for (i = OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Orange);
}
}
Solą życia jest kasa.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Musisz dodć warunek:

Kod: Zaznacz cały

if(OrderType()==OP_BUY)
{
// zamknij buy
}
i

Kod: Zaznacz cały

if(OrderType()==OP_SELL)
{
// zamknij sell
}
Co do powyższego kodu (zamykania) to trzeba sprawdzać czy zlecenie zostało zamknięte bo można dostać requota albo inną niespodziankę
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

fx_rambo
Gaduła
Gaduła
Posty: 194
Rejestracja: 19 sty 2010, 17:11

Nieprzeczytany post autor: fx_rambo »

małe pytanko
jest możliwość w nt4 zamykać lub otwierać pozycje układem klawiszy na klawiaturze
np. jakiś skrypt
pozdrawiam

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Tig3r pisze:Co do powyższego kodu (zamykania) to trzeba sprawdzać czy zlecenie zostało zamknięte bo można dostać requota albo inną niespodziankę
A jeśli w warunku użycia takiego "ZaknilBuy" będzie if(Cci>250) to reqot ma znaczenie i trzeba ustawiać poziom slippage ?
Przecież jeśli mi broker nie zamknie np. na 250 to zamknie wreszcie na 255 lub 260.
Tig3r, a w której linijce mam wpisać ten warunek
if(OrderType()==OP_BUY)
{
// zamknij buy
}

Bo wyskakują mi jakieś błędy z nawiasami, albo zamyka mi pozycje po 1 pipsie i takie cuda.
Przepraszam za takie prostackie pytania, ale próbuję się czegoś nauczyć poprzez takie kombinowanie w kodzie.
Solą życia jest kasa.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

personov pisze:Przecież jeśli mi broker nie zamknie np. na 250 to zamknie wreszcie na 255 lub 260.
Są też inne błędy zamknięcia

Kod: Zaznacz cały

void ZamknijBuy()
{     
   int i;
   
   for (i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
      {
         if (OrderType() == OP_BUY)
         { 
            OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Aqua);
         }
      }
   }
}

void ZamknijSell()
{     
   int i;
   
   for (i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
      {
         if (OrderType() == OP_SELL)
         {
            OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Magenta);
         }
      }
   }
} 
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Dziękuję za cenną pomoc. Wszystko działa. Teraz sobie trochę posiedzę i poanalizuję dlaczego tak, a nie inaczej to napisałeś ten kod :)
Solą życia jest kasa.

ODPOWIEDZ