Gdzie jest błąd?

O jezykach programowania w platformach i nie tylko.
Krzysztof z Bydzi
Bywalec
Bywalec
Posty: 16
Rejestracja: 24 sty 2013, 15:24

Gdzie jest błąd?

Nieprzeczytany post autor: Krzysztof z Bydzi » 15 mar 2018, 22:30

Witam.
Poproszę o pomoc. Co tu jest źle?

Kod: Zaznacz cały

void OnTick()
  {
   double up = Ask+50*Point;
   double down =Ask-50*Point;
   int Order=OrdersTotal();
   if (Order==0){
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,down,up,"moje zlecenie",0,0,0,Green)
   }
   return(0);
  }

Kompilator pokazuje błąd między innymi w linijce z OrderSend.

-rookie-
Maniak
Maniak
Posty: 2433
Rejestracja: 13 kwie 2015, 19:00

Re: Gdzie jest błąd?

Nieprzeczytany post autor: -rookie- » 15 mar 2018, 22:39

Na koncu lini po nawiasie nie ma srednika ";".

Krzysztof z Bydzi
Bywalec
Bywalec
Posty: 16
Rejestracja: 24 sty 2013, 15:24

Re: Gdzie jest błąd?

Nieprzeczytany post autor: Krzysztof z Bydzi » 15 mar 2018, 22:47

Ok. Dziękuję. Dopisałem. Nadal jest źle. :(

-rookie-
Maniak
Maniak
Posty: 2433
Rejestracja: 13 kwie 2015, 19:00

Re: Gdzie jest błąd?

Nieprzeczytany post autor: -rookie- » 15 mar 2018, 22:54

A nie brakuje jeszcze znaku " w nazwie zlecenie, masz? Ten argument funkcji to chyba nazwa zlecenia ale nie moge teraz sprawdzic w dokumentacji mql i cudzyslow ma byc po obu stronach "zlecenie" a jest po jednej.

Krzysztof z Bydzi
Bywalec
Bywalec
Posty: 16
Rejestracja: 24 sty 2013, 15:24

Re: Gdzie jest błąd?

Nieprzeczytany post autor: Krzysztof z Bydzi » 15 mar 2018, 22:54

Zrzut
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

-rookie-
Maniak
Maniak
Posty: 2433
Rejestracja: 13 kwie 2015, 19:00

Re: Gdzie jest błąd?

Nieprzeczytany post autor: -rookie- » 15 mar 2018, 23:16

Kurde, pisze z telefonu i ucina mi te skrypty w tagach

Kod: Zaznacz cały

, nnie widze calego kodu, nie pomoge jednak. Sorry. Tam u gory widze to w funkcji ontivk a tuaj na obrazku ontimer. A co ta funkcja ma zwraca, nie widze nic na tym telefonie ale to ma byc aczejw funkcji ontick jak juz, moze jest blad bo funkcja ontimer ma zwracac cos innego. Ktos inny mui pomoc.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1496
Rejestracja: 09 sie 2009, 21:27
Lokalizacja: Głogów

Re: Gdzie jest błąd?

Nieprzeczytany post autor: personov » 16 mar 2018, 13:32

Skasuj całkiem ten return(0).
Funkcje typu void nie potrzebują return.
Solą życia jest kasa.

KKosar
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 01 lip 2018, 20:22

Re: Gdzie jest błąd?

Nieprzeczytany post autor: KKosar » 01 lip 2018, 20:29

Proszę o poradę, mam problem z jednym nawiasem "{" , kompilator pokazuje "function definition unexpected"

Poniżej wstawiam cały kod MQL5 :



// parametry TP i SL oraz slippage(opóźnienie złożenia zlecenia)
extern int TakeProfit = 45;
extern int StopLoss = 20;
extern int Slippage = 3;

// opis średniej kroczącej
extern int FastMa = 10; // ilość okresów
extern int FastMaShift = 0; // czy z przesunięciem 0=false
extern int FastMaMethod = 0; // podstawowa metoda oblczania średniej
extern int FastMaAppliedTo = 0; //

// opis drugiej średniej kroczącej
extern int SlowMa = 14; // ilość okresów
extern int SlowMaShift = 0;
extern int SlowMaMethod = 0;
extern int SlowMaAppliedTo = 0;

// opis wielkości pozycji itd.
extern double Lot = 0.01;
extern int MagicNumber = 1111; // numer , aby móc identyfikować robota
double pips;

int OnInit()
{
double TickSize = SymbolName(Symbol() , CHART_VOLUME_TICK ); // aby ujednolicić tick np. na EUR/USD jest to 5 miejsc po przecinku, na USD/JPY jest to 3
// SymbolName zamiast MarketInfo CHART_VOLUME_TICK zamiast MODE_TICKSIZE

if ( TickSize == 0.00001 || TickSize == 0.001) // przy porównywaniu 2 zanki równości " == "
pips = TickSize*10;
else pips = TickSize;


return(INIT_SUCCEEDED);
}




void OnDeinit(const int reason)
{


}



void OnTrade();
{
//------------------------------------------------------------------------------------------------------------------------------
// iMA- średnia krocząca NULL- handel na instrumencie otwartym w MT5 0 - oznaczenie time frame ( z aktualnego wykresu )
// 1 na końcu oznacza indeks świeczki której tyczyła się będzie strategia

double PoprzednieFast = iMA(NULL , 0 , FastMa , FastMaShift , FastMaMethod , FastMaAppliedTo , 2 );// świeczka o indeksie 2
double AktualnaFast = iMA(NULL , 0 , FastMa , FastMaShift , FastMaMethod , FastMaAppliedTo , 1 );// świeczka o indeksie 1
double PoprzedniaSlow = iMA(NULL , 0 , SlowMa , SlowMaShift , SlowMaMethod , SlowMaAppliedTo , 2 );// świeczka o indeksie 2
double AktualnaSlow = iMA(NULL , 0 , SlowMa ,SlowMaShift , SlowMaMethod , SlowMaAppliedTo , 1 ); // świeczka o indeksie 1
//-------------------------------------------------------------------------------------------------------------------------------

if(PoprzedniaFast>PoprzedniaSLow&&AktualnaFast>AktualnaSlow);
if(OrdersTotal()==0); // żeby przy każdym ticku nie otwierała się pozycja
OrderSend( NULL , OP_BUY , Lot , Ask , 3 , Ask-(StopLoss*pips) , Ask+(TakeProfit*pips) , NULL , MagicNumber , 0 , Green);
if(PoprzedniaFast>PoprzedniaSlow && AktualnaFast<AktualnaSlow);
if(OrdersTotal()==0);
OrderSend( NULL , OP_SELL , Lot , Bid , 3 , Bid+(StopLoss*pips) , Bid-(TakeProfit*pips) , NULL , MagicNumber , 0 , Red);


return(0);


}

LowcaG
Pasjonat
Pasjonat
Posty: 1014
Rejestracja: 05 paź 2007, 15:39
Lokalizacja: Południe

Re: Gdzie jest błąd?

Nieprzeczytany post autor: LowcaG » 02 lip 2018, 12:28

Kod: Zaznacz cały

f(PoprzedniaFast>PoprzedniaSLow&&AktualnaFast>AktualnaSlow);
if(OrdersTotal()==0); // żeby przy każdym ticku nie otwierała się pozycja
OrderSend( NULL , OP_BUY , Lot , Ask , 3 , Ask-(StopLoss*pips) , Ask+(TakeProfit*pips) , NULL , MagicNumber , 0 , Green);
if(PoprzedniaFast>PoprzedniaSlow && AktualnaFast<AktualnaSlow);
if(OrdersTotal()==0);
OrderSend( NULL , OP_SELL , Lot , Bid , 3 , Bid+(StopLoss*pips) , Bid-(TakeProfit*pips) , NULL , MagicNumber , 0 , Red);
Jaki sens mają te średniki za ifami?

KKosar
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 01 lip 2018, 20:22

Re: Gdzie jest błąd?

Nieprzeczytany post autor: KKosar » 02 lip 2018, 19:58

Dzięki, poprawię.
Czy to właśnie tego dotyczy komunikat o błędzie w kompilatorze ?

ODPOWIEDZ