Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: z6yszko »

Misfic pisze:Co oznaczają błędy:

Kod: Zaznacz cały

TestGenerator: unmatched data error (volume limit 5800 at 2014.03.18 00:00 exceeded)
TestGenerator: unmatched data error (high value 1.39150 at 2014.03.07 00:00 is not reached from the least timeframe, high price 1.38780 mismatches)
I czym mogą być powodowane?

Z góry dzięki za pomoc.
Błędy są spowodowane złą jakością danych, na których pracuje tester. Występują różnice w danych historycznych pomiędzy różnymi tf-ami.
A'propos jakości danych - nowa wersja TickStory działa na nowych buildach MT4.

Awatar użytkownika
melpomena
Pasjonat
Pasjonat
Posty: 929
Rejestracja: 06 kwie 2014, 12:52

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: melpomena »

Strategia MACD Sample.mq4 w MT4 otwiera zlecenie standardowo z 0 stoploss:

Kod: Zaznacz cały

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,[b][color=#FF0000]0[/color][/b],Ask+TakeProfit*Point,"macd sample",16384,0,Green);
Prawdopodobnie autorom chodziło o to, że stop loss jest nieistotny w sytuacji, gdy zdefiniowany został kroczący stop (trailing stop). Wraz z rozwojem sytuacji, kod ma modyfikować zlecenie - zamysł jest super.
Niestety, u mnie

Kod: Zaznacz cały

(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green)
wywołuje błąd (nr 1 lub 130-różnie).

Chciałam zmodyfikować OrderSend w taki sposób, by już "na dzień dobry" zlecenie było otwierane ze stoplossem, zdefiniowanym przez użytkownika w opcjach. W tym celu zdefiniowałam zmienną:

Kod: Zaznacz cały

input double StopLoss      =30;
i zmodyfikowałam funkcję:

Kod: Zaznacz cały

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
i analogicznie

Kod: Zaznacz cały

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
Niestety - generuje to błąd (130); także wówczas, gdy w miejsce "Bid+StopLoss*Point" wpisuję liczbę (stałą), np. 50.

Znacie powód - czemu się tak dzieje? Mam MT4 build 646.

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

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Prawdopodobnie chodzi o kwotowanie po przecinku.
Zdefiniuj sobie w init() :
void init()

Kod: Zaznacz cały

{ myPoint = Point; 
  if (Digits == 3 || Digits == 5) myPoint = 10*Point;
}
I od tej pory zamiast Point wpisuj myPoint.
Daj znać, czy pomogło.
Solą życia jest kasa.

Awatar użytkownika
melpomena
Pasjonat
Pasjonat
Posty: 929
Rejestracja: 06 kwie 2014, 12:52

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: melpomena »

personov, dzięki za odzew! Niestety, do tej pory zajmowałam się Visual Basic i nie bardzo wiem, gdzie wrzucić podaną przez Ciebie definicję. Dałam to na poczatku kodu, ale odwołania do myPoint dają error 'myPoint' - undeclared identifier, pomimo, że zadeklarowałam double myPoint;
(nie wiem, czy myPoint powinien być double)

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

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Tak. Zapomniałem dodać, że musisz zadeklarować myPoint.
Na początku kodu poza blokami init(), deinit(), start() dajesz :

Kod: Zaznacz cały

double myPoint;
I w bloku init() dajesz to co Ci podałem wcześniej.
Później w bloku start() dajesz zamiast Point - myPoint.
Solą życia jest kasa.

Awatar użytkownika
melpomena
Pasjonat
Pasjonat
Posty: 929
Rejestracja: 06 kwie 2014, 12:52

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: melpomena »

Coś mi dalej generuje błędy; tzn. zlecenia się otwierają, modyfikują i zamykają, ale komunikaty errorowe również występują. Jutro się do tego zabiorę. Dzięki za pomoc!

Awatar użytkownika
MarcinMC
Stały bywalec
Stały bywalec
Posty: 78
Rejestracja: 01 kwie 2014, 16:56

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: MarcinMC »

Witam, mam krótkie pytanie, piszę swojego pierwszego EA. Chciałbym wiedzieć czy da się zrobić tak żeby otwierał pary walutowe na których nie jest załadowany to znaczy np. Jeśli mam EA na wykresie GBPUSD chciałbym żeby mi otwierał pozycje na GBPUSD ale też na EURUSD, bez potrzeby otwierania dodatkowo wykresu EURUSD. Chciałbym móc wpisywać w ustawieniach EA na jakich parach walutowych ma handlować. Jest taka możliwość ? Jesli tak to w jaki sposób można to rozwiązać. Chciałbym żeby mój EA otwierał np GBPUSD i w tym samym czasie EURUSD
Skype marcinmc92

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: bfx »

Możesz tak zrobic, w prosty sposób. W funkcji która otwiera zlecenie podajesz nazwe symbolu na jakim ma byc otwarta pozycja.

Kod: Zaznacz cały

ord=OrderSend("EURUSD",OP_BUY,0.01,Ask,0,sl,tp,"koment",0,0,color);
ord=OrderSend("GBPUSD",OP_BUY,0.01,Ask,0,sl,tp,"koment",0,0,color);
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

Awatar użytkownika
MarcinMC
Stały bywalec
Stały bywalec
Posty: 78
Rejestracja: 01 kwie 2014, 16:56

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: MarcinMC »

EURUSD",OP_BUY,0.01,Ask,0,sl,tp,"koment",0,0,color)

para kupno vol , cena, ? ,sl,tp, kom, ?,? color)



Tam gdzie znak zapytania to te wartosci za co odpowiadaja ?
Skype marcinmc92

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: bfx »

Kolejno o lewej:
- poślizg na jaki się zgadzasz
- MagicNumber- dodatkowy parametr typu int do oznaczania zleceń
- termin ważności zlecenia
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

ODPOWIEDZ