Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Pjetja
Bywalec
Bywalec
Posty: 20
Rejestracja: 22 lip 2011, 18:53

Nieprzeczytany post autor: Pjetja »

Ponownie z tym samym problemem :(

Dodałem OrderSelect i jest jeszcze gorzej. Otwiera masę pozycji.
I coś jest nie tak z tą funkcją bo obliczenia mam dobrze. Jak wrzucę je jako wskaźnik to ładnie rysuje jak należy. A pozycji zawierać nie chce.
Panowie co tu nie gra?

Kod: Zaznacz cały

void ReversPos()
   {
   if((Short[i+1]==0)&&(Short[i]>0))                                  //jeżeli pada sygnał na krótką
      {
      if (OrdersTotal()==0)                                           //jeżeli nie ma otwartych pozycji
         { 
         OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"",MAGICV,0,Red);   //zajmij pozycję krótką
         }     
      for(int j=0;j<OrdersTotal();j++)                                //dla wszystkich owartych pozycji
         {
         if(OrderType()==OP_BUY)                                      //jezeli otwarte długie
            {
            OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
            OrderClose(OrderTicket(),OrderLots(),Bid,3,White);        //zamknij
            OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"",MAGICV,0,Red);  //otwórz krótką
            }
         }//END for
      }//END sygnał na krótką 
  
   else if((Long[i+1]==0)&&(Long[i]>0))                               //jeżeli sygnał pada na długą
      {
      if (OrdersTotal()==0)                                           //jeżeli nie ma otwartych pozycji
         {
         OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"",MAGICV,0,Blue);   //zajmij pozycję długą
         }
      for(int k=0;k<OrdersTotal();k++)                                //dla wszystkich owartych pozycji
         {
         if(OrderType()==OP_SELL)                                     //jezeli otwarta krótka
            {
            OrderSelect(k,SELECT_BY_POS,MODE_TRADES);
            OrderClose(OrderTicket(),OrderLots(),Ask,3,White);        //zamknij 
            OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICV,0,Blue);  //otwórz długą
            }
         }//END for
      }//END sygnał na długą  
   
    
   }//END ReversPos()

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

Nieprzeczytany post autor: personov »

Czy jest możlwe otwarcie transakcji na innej parze walutowej niz załączone jest EA ?
Przykladowo EA mam załączone na parze EURUSD a w warunku chcę :

Kod: Zaznacz cały

OrderSend("USDCHF",OP_BUY,lot,Ask,1,0,0,"",magic,0,Blue);
Jeśli nie to po co jest "Symbol()" pierwszy w nawiasie ?
Solą życia jest kasa.

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

Nieprzeczytany post autor: siersciuch »

Wydaje sie, ze mozna


a teraz moje pytanie jak wpisze w start()

Kod: Zaznacz cały

srednia_dodatnich = suma_dodatnich/ilosc_dodatnich;
srednia_ujemnych = suma_ujemnych/ilosc_ujemnych;
taki kod, to zostanie wykonane obliczenie? Czy musze wpisać je w jakiś warunek. Czy jak bedzie tak sobie wisiało samo w Start() to policzy wynik i zwróci do srednia_ujemnych ??
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

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

Nieprzeczytany post autor: personov »

Jak dasz :

Kod: Zaznacz cały

double srednia_dodatnich = suma_dodatnich/ilosc_dodatnich; 
double srednia_ujemnych = suma_ujemnych/ilosc_ujemnych;
to wykona obliczenie.
Ponawiam pytanie a temat innej pary walutowej. Wpisuje warunek i otwiera tylko transakcje na parze na jakiej dziala EA. Na innych nie otwiera.
Solą życia jest kasa.

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

Nieprzeczytany post autor: siersciuch »

musisz, zamiast symbol() wpisać pare, ale upewnij sie czy "USDCHF" napewno sie tak wpisuje. moze wpisuje sie

Kod: Zaznacz cały

symbol(EUR/USD)  
znalazłem taki przykład

Kod: Zaznacz cały

int start()                               // Special function start
  {                                       // Opening BUY
   OrderSend("GBPUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   return;                                // Exit start()
  }
pewnie to widziałes
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

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

Nieprzeczytany post autor: personov »

Właśnie tak wpisuję i nie otwiera transakcji. Nawet robiłem eksperyment :
EA działa na parze USDJPY.

Kod: Zaznacz cały

if(........){OrderSend("USDJPY",OP_BUY,lot,Ask,1,0,0,"",magic,0,Blue);
   OrderSend("EURUSD",OP_BUY,lot,Ask,1,0,0,"",magic,0,Blue);
   OrderSend("EURCHF"",OP_SELL,lot,Bid,1,0,0,"",magic,0,Red);}
I otwiera tylko tą transakcję na USDJPY i koniec. Nic więcej nie otwiera.
Ja odpalę EA z identycznym kodem na EURUSD to otwiera tylkotą transakcje na EURUSD i koniec.
Solą życia jest kasa.

artur_ar
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 09 gru 2009, 15:55

Nieprzeczytany post autor: artur_ar »

OrderSend otwiera transakcję na symbolu o nazwie podanej w pierwszym parametrze, można symbol podać jako string albo poprzez wynik funkcji Symbol().

Kod: Zaznacz cały

OrderSend("EURUSD", OP_SELL, 0.1, Bid, 3, 0, 0, "", 0, 0);
musi działać na dowolnym charcie.
Sprawdź przez GetLastError czy jest jakiś błąd.
Obrazek

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

Nieprzeczytany post autor: siersciuch »

Mam problem z dzieleniem, wyskakuje mi error zero divide. No czyli albo niechce dzielić bo coś źle, albo poprostu przez zero sie nie dzieli :D, i Wtym problem ze, niewiem gdzie jest bład i zamiast jakieś wartości zwraca mi zero. Jak moge sie dowiedzieć jakie wartości ma wybrana zmienna? Chyba pewnie musze odpalić ea, zeby obliczało te zmienne i tu pytanie o kod który mi wyświetli np w oknie dialogowym albo w alarmie wartość wybranych zmiennych, wtedy bede mógł sprawdzić gdzie mi zwraca zero.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

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

Nieprzeczytany post autor: personov »

Wpisz sobie wartość w comment i będzie Ci wyświetlało. Jak będzie cały czas 0 to coś nie tak.

Kod: Zaznacz cały

 Comment
   (
   "\n"+
   "coś1 "+coś1
   +"\n"+
   "co2 "+coś2
   +"\n"+
   "coś3"+coś3
   );
Solą życia jest kasa.

Awatar użytkownika
ahanook
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 09 cze 2011, 08:35

Nieprzeczytany post autor: ahanook »

personov pisze:Wpisz sobie wartość w comment i będzie Ci wyświetlało. Jak będzie cały czas 0 to coś nie tak.
strzelam, że masz gdzieś int zamiast double. przynajmniej mi często się takie błędy zdarzają. ;)

ODPOWIEDZ