TP 1-2 pipsy

O jezykach programowania w platformach i nie tylko.
swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

TP 1-2 pipsy

Nieprzeczytany post autor: swer »

Witam!
Chcialbym przetestowac taki EA ktory lapie po 1-2 pipsy wymyslilem sobie to tak mniej wiecej:

Kod: Zaznacz cały

 for(int i = OrdersTotal() - 1; i >= 0; i--)
     {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
       Print("Otwarcie: ", OrderOpenPrice());
         if(OrderType() == OP_BUY)
         {
           if(Bid - OrderOpenPrice() == 0.0002) OrderClose(OrderTicket(), OrderLots(), Bid, 3);
         }
         if(OrderType() == OP_SELL)
         {
         if(OrderOpenPrice() - Ask == 0.0002)OrderClose(OrderTicket(), OrderLots(), Ask, 3);
         }
oczywiscie wczesniej zawierana jest transakcja po spelnieniu jakiegos tam warunku. No ale to nie dziala jakies wskazowki w ktora strone to skubnac?

Awatar użytkownika
mikolaj2
Gaduła
Gaduła
Posty: 231
Rejestracja: 04 maja 2011, 14:37

Nieprzeczytany post autor: mikolaj2 »

Pomijając ewentualne błędy w kodzie TP lub SL na poziomie 2 pipsów może być nieakceptowany przez brokera - jednym słowem jest zbyt mały, aby móc zawrzeć transakcję

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

zamiast znaku daj pozdrawiam
Andrzej Pierz

Dodano po 2 minutach:

ja to robie w taki sposob:

Kod: Zaznacz cały

if (NormalizeDouble(Bid-OrderOpenPrice()-0.0002) >= 0.0000) OrderClose(...);
pozdrawiam
Andrzej Pierz
z poważaniem
Andrzej Pierz
FOREX-SERVICE

piter321
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 20 lut 2006, 11:08

Nieprzeczytany post autor: piter321 »

Pierz Andrzej pisze:ja to robie w taki sposob:

Kod:
if (NormalizeDouble(Bid-OrderOpenPrice()-0.0002) >= 0.0000) OrderClose(...);
Zakładając, że chcesz zamknąć pozycję OP_BUY to powyższe jest OK. W przypadku pozycji OP_SELL należałoby porównywać z ceną Ask. Dodatkowo dla "bajeru" 0.0002 można zastąpić

Kod: Zaznacz cały

2 * Point
- może się przydać gdy operujesz na wielu instrumentach u różnych brokerów

Zmiana
Sorki, dopiero teraz zauważyłem, iż w pierwotnym poście porównywanie jest OK.

Dane o których pisze mikolaj2 możesz pobrać z poziomu mql-a np:

Kod: Zaznacz cały

StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
TakeProfit = MathMax(TakeProfit, StopLevel);
StopLoss = MathMax(StopLoss, StopLevel);
Pozdrawiam
Piter

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Nieprzeczytany post autor: swer »

Pierz Andrzej pisze:zamiast znaku daj pozdrawiam
Andrzej Pierz

Dodano po 2 minutach:

ja to robie w taki sposob:

Kod: Zaznacz cały

if (NormalizeDouble(Bid-OrderOpenPrice()-0.0002) >= 0.0000) OrderClose(...);
pozdrawiam
Andrzej Pierz
Mi przy tym wawala bład ze nie zgadzaja sie nawiasy ale jakbym tego nie liczyl to wg mnie jest ok co jest?

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

A no z pospiechu zapomnialem o drugiej wartosci w NormalizeDouble()

Kod: Zaznacz cały

if (NormalizeDouble(Bid-OrderOpenPrice()-0.0002,Digits) >= 0.0000) OrderClose(...);

Kod: Zaznacz cały

if (NormalizeDouble(OrderOpenPrice()-Ask-0.0002,Digits) >= 0.0000) OrderClose(...);
pozdrawiam
Andrzej Pierz
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ