Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Nieprzeczytany post autor: mike_05 »

Czy taki warunek jest prawidłowy?

Kod: Zaznacz cały

if (!(ga_11)) break;
czy powinno być tak:

Kod: Zaznacz cały

if (!ga_11) break;


Dodano po 12 minutach:

Kod: Zaznacz cały

The operator ! is undefined for the argument type(s) int

The operator && is undefined for the argument type(s) double, boolean

The operator / is undefined for the argument type(s) double, boolean

Takie mam komunikaty z kompilacji na jave. Jakie sa odpowiedniki javy dla ! && i / ?
Ostatnio zmieniony 24 sie 2012, 23:59 przez mike_05, łącznie zmieniany 1 raz.
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

mike_05 pisze:czy powinno być tak:
Kod:
if (!ga_11)) break;
Przecież tu masz źle nawiasy.

a ga_11 jest typu??

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Nieprzeczytany post autor: mike_05 »

Zgadza się, nie usunąłem tego nawiasu kończącego. if (!ga_11) break;
ga_11 zdefiniowane jako int


ale kod e mql jest dobryi nie zgłasza błędów, tylko jak kompiluję do javy, kompilator dukasa pokazuje te błędy co napisałem wcześniej.
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

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

Nieprzeczytany post autor: Pierz Andrzej »

mike_05 pisze:ga_11 zdefiniowane jako int

no wlasnie masz jako int a sprawdzasz czy jast false czy true w jforex to nie przejdzie ;)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Nieprzeczytany post autor: mike_05 »

To w takim razie, jaka jest odpowiedź mqla na to sprawdzenie?
Logicznie wydaje mi się, ze odpowiedz 1 będzie jak jest jakaś wartość przypisana, 0 jeżeli wartości nie ma. Takie proste sprawdzanie jest zastosowane np w języku excela. Java ma inaczej?
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

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

Nieprzeczytany post autor: Pierz Andrzej »

mike_05 pisze:Java ma inaczej?
java ma wszystko inaczej :D

jeden kompiltor to pusci drugi nie :)

np w VS tez takie cos nie przejdzie :)
Error 1 Operator '!' cannot be applied to operand of type 'int'

Dodano po 6 minutach:

musial bys to zrobic np tak

Kod: Zaznacz cały

if (!(ga_11 == 1)) break;
ale to jest to samo co

Kod: Zaznacz cały

if (ga_11 != 1) break;

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Nieprzeczytany post autor: mike_05 »

No to muszę popatrzeć głębiej, bo tej wartości przypisywana jest również wartość innej zmiennej i jak z kolei tamta jest zdefiniowana.
Albo w oryginale jest bład bo skoro wartość jest w nawiasie, mogło być tam potrzebne właśnie "==1" i tego brak. Spróbuję zrobić testy na mt4 w tej wersji i zobaczę, czy pracuję tak samo. Nieraz błędy w kodzie dają rewelacyjne wyniki robota, a jak się je poprawi prawidłowo, EA leci do kosza :)
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

Awatar użytkownika
mah1y
Pasjonat
Pasjonat
Posty: 669
Rejestracja: 30 sty 2011, 22:01

Nieprzeczytany post autor: mah1y »

panowie, machnalem sobie takie EA zeby troche pocwiczyc pisanie i zrozumiec co sie dzieje i jest pewien problem:
EA nie trejduje na moim standardowym testerze z tickami z dukascopy (platforma alpari) natomiast trejduje na FXpro DEMO. Gdzie moze lezec przyczyna?

Kod: Zaznacz cały

#define __STRATEGY_MAGIC 1996504250

//Inputs
extern double _Number = 0.0001;
extern double _120pips = 0.0036;
extern double _200_pips = 0.0045;

//Declaration
double _D1_open;
double _Arithmetic;
bool _Compare;
bool _Send_Pending_2;
bool _AND;
bool _Send_Pending;
double _Bid;
double _Absolute;
double _Bid_2;
double _Absolute_2;
double _Arithmetic_2;
bool _Compare_2;
bool _Delete_Pending;
bool _Delete_Pending_2;
bool _Compare_3;
bool _Modify_Position;
bool _Modify_Position_2;
double _Order_Data;
double _Order_Data_2;

int start(){

   //Level 1
   _D1_open = iOpen(Symbol(),1440,0);
   _Bid = Bid;
   _Bid_2 = Bid;
   _Order_Data = __OpenPrice(1);
   _Order_Data_2 = __OpenPrice(2);

   //Level 2
   _Arithmetic = _D1_open - _Bid;
   _Arithmetic_2 = _D1_open - _Bid_2;

   //Level 3
   _Absolute = MathAbs(_Arithmetic);
   _Absolute_2 = MathAbs(_Arithmetic_2);

   //Level 4
   _Compare = _Absolute <= _Number;
   _Compare_2 = _Absolute_2 >= _120pips;
   _Compare_3 = _Absolute_2 >= _200_pips;

   //Level 5
   _AND = _Compare;
   if(_Compare_2)_Delete_Pending = OrderDelete(__Ticket(1));
   if(_Compare_2)_Delete_Pending_2 = OrderDelete(__Ticket(2));
   if(_Compare_3)_Modify_Position = OrderModify(__Ticket(1),0,_Order_Data,OrderTakeProfit(),0);
   if(_Compare_3)_Modify_Position_2 = OrderModify(__Ticket(2),0,_Order_Data_2,OrderTakeProfit(),0);

   //Level 6
   if(_AND && !__isExist(1))_Send_Pending_2 = OrderSend(Symbol(),5,2,MarketInfo(Symbol(),MODE_ASK)-350*MarketInfo(Symbol(),MODE_POINT),0,MarketInfo(Symbol(),MODE_ASK)-350*MarketInfo(Symbol(),MODE_POINT)+MarketInfo(Symbol(),MODE_POINT)*10000,MarketInfo(Symbol(),MODE_ASK)-350*MarketInfo(Symbol(),MODE_POINT)-MarketInfo(Symbol(),MODE_POINT)*70,"",__STRATEGY_MAGIC + 1)>=0;
   if(_AND && !__isExist(2))_Send_Pending = OrderSend(Symbol(),4,2,MarketInfo(Symbol(),MODE_BID)+350*MarketInfo(Symbol(),MODE_POINT),0,MarketInfo(Symbol(),MODE_BID)+350*MarketInfo(Symbol(),MODE_POINT)-MarketInfo(Symbol(),MODE_POINT)*10000,MarketInfo(Symbol(),MODE_BID)+350*MarketInfo(Symbol(),MODE_POINT)+MarketInfo(Symbol(),MODE_POINT)*70,"",__STRATEGY_MAGIC + 2)>=0;
   return(0);
}

//Services
bool __selectOrderByMagic(int __magic){for(int __i=0;__i<OrdersTotal();__i++){if(OrderSelect(__i,SELECT_BY_POS,MODE_TRADES)&&OrderMagicNumber()==__STRATEGY_MAGIC+__magic)return(true);}return(false);}
bool __isExist(int __magic){return(__selectOrderByMagic(__magic));}
int __Ticket(int __magic){if(!__selectOrderByMagic(__magic))return(0);return(OrderTicket());}
double __OpenPrice(int __magic){if(!__selectOrderByMagic(__magic))return(0);return(OrderOpenPrice());}

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

Nieprzeczytany post autor: personov »

1.Może być nieodpowiednia wielkośc lota ( zbyt mała, albo zbyt duża - zależy od konta ),
2. Sposób otwierania zlecenia - dwa posoby :
SL i TP deklarujesz podczas otwierana zlecenia
lub SL i TPdeklarujesz jako modyfikacje juz otwartego zlecenia.
Zależy jak to się robi u obu brokerów, bo w kodzie trzeba to inaczej zapisywać.

Ale jak tak teraz patrzę na całą skladnię OrderSend() to strasznie tam namieszałeś z tymi MarketInfo.
Nie lepiej zapisać odrazu Ask, albo Point ?
Przykład :

Kod: Zaznacz cały

OrderSend(Symbol(),OP_BUY,lot,Ask,2,Ask-SL*Point,Ask+TP*Point,"",MagicNumber,0,Green);
Solą życia jest kasa.

Awatar użytkownika
mah1y
Pasjonat
Pasjonat
Posty: 669
Rejestracja: 30 sty 2011, 22:01

Nieprzeczytany post autor: mah1y »

personov posprawdzam jeszcze ale wychodzilo na to ze wszystko jest OK ale nie chcial trejdowac.

Kod: Zaznacz cały

H1_od_10_do_1godz_w_tyl = iHigh(Symbol(),60,10);
jak wpisac ze nie chodzi o konkretna swieczke 10 swieczek w tyl tylko o przedzial od 10 do 1 w tyl?

ODPOWIEDZ