Gdzie jest błąd?

O jezykach programowania w platformach i nie tylko.
Krzysztof z Bydzi
Stały bywalec
Stały bywalec
Posty: 21
Rejestracja: 24 sty 2013, 15:24

Gdzie jest błąd?

Nieprzeczytany post autor: Krzysztof z Bydzi »

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: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: Gdzie jest błąd?

Nieprzeczytany post autor: -rookie- »

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

Krzysztof z Bydzi
Stały bywalec
Stały bywalec
Posty: 21
Rejestracja: 24 sty 2013, 15:24

Re: Gdzie jest błąd?

Nieprzeczytany post autor: Krzysztof z Bydzi »

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

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

Re: Gdzie jest błąd?

Nieprzeczytany post autor: -rookie- »

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
Stały bywalec
Stały bywalec
Posty: 21
Rejestracja: 24 sty 2013, 15:24

Re: Gdzie jest błąd?

Nieprzeczytany post autor: Krzysztof z Bydzi »

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

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

Re: Gdzie jest błąd?

Nieprzeczytany post autor: -rookie- »

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: 1521
Rejestracja: 09 sie 2009, 21:27

Re: Gdzie jest błąd?

Nieprzeczytany post autor: personov »

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 »

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: 1068
Rejestracja: 05 paź 2007, 15:39

Re: Gdzie jest błąd?

Nieprzeczytany post autor: LowcaG »

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 »

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

ODPOWIEDZ