Modyfikacja wybranego zlecenia

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

siersciuch pisze:tak ma to wyglądać? z tym NormalizeDouble ? i przy kazdej modyfikacji i otwarciu zlecenia tam, gdzie ustawiam SL i TP ma być ta normalizacją?

Kod: Zaznacz cały

poz1long = OrderSend(Symbol(),OP_BUY,lots,Ask,3,NormalizeDouble(Bid-sl*Point,Digits),NormalizeDouble(Bid+55*Point,Digits));
Tak, ablo za pomocą zmiennej dodatkowej.
przy każdym dawaj to unikniesz sporo "ciężkich do znalezienia" błędów.
O dziwno wstawienie np samego Bib lub Ask bez zaokrąglenia tworzy błędy
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

Czyli tu przy cenie, tez by się przydało Normalize?

Kod: Zaznacz cały

if(total(OP_BUY)==0 && NormalizeDouble(Ask>ma,Digits) && buyx==0)
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

tak przy kazdym porownaniu cen, tylko tak jak zrobiles to nie zadziala, musisz kazda cene osobno zaokraglac ja sobie dla uproszczenia zeby mniej pisania bylo zrobilem taka funkcje

Kod: Zaznacz cały

double N(double cena, int i)
{ double N=NormalizeDouble(cena,i);
  return(N);
}  

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

xpep

TO ma tak wygladąć? zamiast SL i TP daje funkcje N dla ceny po któej chce ustawic SL/TP

Kod: Zaznacz cały


start
{
OrderSend(Symbol(),OP_BUY,lots,Ask,3,NormalizeDouble(Bid-sl*Point,Digits),NormalizeDouble(Bid+34*Point,Digits));


OrderSend(Symbol(),OP_BUY,lots,Ask,3,N(Bid-sl*Point,Digits),N(Bid+34*Point,Digits));  

}

double N(double cena, int i)
{ double N=NormalizeDouble(cena,i);
  return(N);
}  
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

dokladnie tak im wiecej zaokraglen tym bardziej sie oplaca tak skracac

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

pojawia mi się bład error 1, jest on spowodowany tym, ze modyfikuje zlecenie na takie same parametry co juz są czyli. np TP =50, SL=100 nadchodzi nowy tick, funkcja jest wykonywana jeszcze raz, ale warunki dla TP I SL sie nie zmieniają, wiec funkcja Modify zwraca dalej ten sam TP I SL czyli 50/100. I to powoduje error 1.

I własnie niemam pomysłu na algorytm, który by rozwiazał ten problem

ogólnie to ma tak wyglądać, jeśli TP i SL są różne od poprzedniego TP i SL wtedy ordermodify. Jak moge sprawdzić czy SL I TP będą rózne od poprzednie bez uzywania funkcji OrderModify.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

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

Nieprzeczytany post autor: Tig3r »

siersciuch pisze:I własnie niemam pomysłu na algorytm, który by rozwiazał ten problem
Sprawdź aktualny poziom SL i TP na zleceniu i jeśli jest inny niż nowy to dopiero niech go modyfikuje.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

no juz tak próbowałem tak jak Ty napisałeś, ale coś źle tam było, po zatym dodałem jeszcze to Normalizedouble, i gra teraz wszystko :)

Dodano po 3 godzinach 29 minutach:

nie rozumie dlaczego dalej chce modyfikować zlecenie po zamknieciu.
Przecierz warunek Orderselect nie zostaje spełniony jak zlecenie jest zamknięte. Chyba, ze wybiera to zlecenie z już zamknietych, ale dałem MODE_TRADES poto, aby tylko z otwarych brał ticket




Kod: Zaznacz cały

if(OrderSelect(short1, SELECT_BY_TICKET, MODE_TRADES)==true)
   {
   double aTP= OrderTakeProfit();
   double aSL= OrderStopLoss();
   
      if(aTP != NormalizeDouble(ma-34*Point,4) && aSL != NormalizeDouble(ma+34*Point,4)) // modyfikuje tylko wtedy kiedy aktulany ST/TP rózni sie od nowego
      {   
      OrderModify(short1,OrderOpenPrice(),NormalizeDouble(ma+34*Point,4),NormalizeDouble(ma-34*Point,4),OrderExpiration(),CLR_NONE);
      }  
   }   
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

siersciuch pisze:ale dałem MODE_TRADES poto,
to dotyczy tylko po pos jesli chodzi o wybor po ticket to nie ma to znaczenia ticket jest unikalny

to tez musisz zaokraglic

Kod: Zaznacz cały

double aTP= OrderTakeProfit(); 
   double aSL= OrderStopLoss(); 
   
mozesz dodac warunek

Kod: Zaznacz cały

if( orderclosetime()==0 ) 
to bedzie wiadomo ze pozycja nie zamknieta
Ostatnio zmieniony 06 kwie 2011, 20:07 przez xpep, łącznie zmieniany 1 raz.

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

xpep pisze:
siersciuch pisze:ale dałem MODE_TRADES poto,
to dotyczy tylko po pos jesli chodzi o wybor po ticket to nie ma to znaczenia ticket jest unikalny

to tez musisz zaokraglic

Kod: Zaznacz cały

double aTP= OrderTakeProfit(); 
   double aSL= OrderStopLoss(); 
   


czyli jak jest unikalny, to order select zaznacza mi juz zamknieta pozycje, masz jakiś pomysł, na to by, zaznaczał mi tylko otwartą?
Ostatnio zmieniony 06 kwie 2011, 20:09 przez siersciuch, łącznie zmieniany 1 raz.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

ODPOWIEDZ