Wszystkie pytania dozwolone początkujących programistów
Re: Wszystkie pytania dozwolone początkujących programistów
W wersji mql 600+ używa się funkcji OnInit() itp. Oczywiście nowa wersja jest kompatybilna ze starymi funkcjami, ale nie zaleca się ich używania.
Re: Wszystkie pytania dozwolone początkujących programistów
Napisłam strategię , która wylicza wielkość zlecenia w lotach. Wszystko działało i nagle przestała strategia wyliczac wielkość zlecenia.
Skompilowałem ją ponownie, bez rzultatu (nie było żadnych błędów w kompilacji). Usunąłem strategię z okna i chciałem ją jeszcze raz uruchomić. Mam włączoną opcję Auto Trading. Strtegii nie mogłem uruchomić, nie pojawiło się okno i parametrami. Inne strategię mogę uruchomić.
Wylogowywałem się, zamykałem MT4, nic nie pomogło.
Zapisałam strategię pod inną nazwą i skompilowałem ją. Otrzymałem dużo błędów, kompilator nie wykrył między innymi funkcji AccountFreeMargin() [zrzut nr 1].
Chciałem przypisać tą funkcję do innj zmiennej, kompilator nie widzi jej [zrzut nr 2].
Utworzyłem nową strategię i przypisałm tą funkję do zmiennej, kompilator podpowiada ją [zrzut nr 3].
Używam MT4 z mFotex, wersja 4.00, build 950 z 23 grudnia 2015.
Meta Editor w wersji 5.00 build 1241 z 22 grudnia 2015.
System operacyjny: Windows 7 Professional.
Są to moje pierwsze kroki w pisaniu strategii, nie wiem czego mogę się spodziewać.Kod mogę przeklejć do nowej strategii. Zacząłem pisać jej fragmenty jako skrypty, ale nie o to przecież chodzi.
Proszę o podpowiedź dlaczego tak się dzieje.
Skompilowałem ją ponownie, bez rzultatu (nie było żadnych błędów w kompilacji). Usunąłem strategię z okna i chciałem ją jeszcze raz uruchomić. Mam włączoną opcję Auto Trading. Strtegii nie mogłem uruchomić, nie pojawiło się okno i parametrami. Inne strategię mogę uruchomić.
Wylogowywałem się, zamykałem MT4, nic nie pomogło.
Zapisałam strategię pod inną nazwą i skompilowałem ją. Otrzymałem dużo błędów, kompilator nie wykrył między innymi funkcji AccountFreeMargin() [zrzut nr 1].
Chciałem przypisać tą funkcję do innj zmiennej, kompilator nie widzi jej [zrzut nr 2].
Utworzyłem nową strategię i przypisałm tą funkję do zmiennej, kompilator podpowiada ją [zrzut nr 3].
Używam MT4 z mFotex, wersja 4.00, build 950 z 23 grudnia 2015.
Meta Editor w wersji 5.00 build 1241 z 22 grudnia 2015.
System operacyjny: Windows 7 Professional.
Są to moje pierwsze kroki w pisaniu strategii, nie wiem czego mogę się spodziewać.Kod mogę przeklejć do nowej strategii. Zacząłem pisać jej fragmenty jako skrypty, ale nie o to przecież chodzi.
Proszę o podpowiedź dlaczego tak się dzieje.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Wszystkie pytania dozwolone początkujących programistów
Może spróbuj przypisywać wartości funkcji AccountBalance() itp. w OnInit() zamiast w przestrzeni globalnej. W przestrzeni globalnej zostaw sobie tylko deklaracje tych zmiennych.
To powinno rozwiązać te pierwsze błędy kompilacji.
To powinno rozwiązać te pierwsze błędy kompilacji.
Re: Wszystkie pytania dozwolone początkujących programistów
Dzięki za podpowiedź.
Pierwszy problem "strategia przestała wyliczac wielkość zlecenia", wynikał z braku przypisania kursu USDPLN
double USDKurs = MarketInfo("USDPLN",MODE_BID); . W oknie Rynek ukryłem nieużywane instrumenty, a wśród nich był USDPLN.
Drugi problem związany z błędami podczas kompilacji spowodowany był tym, iż podczas zapisywana pod inną nazwą strategii, została ona zapisana z rozszerzeniem .*mq5.
Trzeci problem, nie mogłem włączyć strategii, był związany z tym, iż po tym jak strategia nie mogła wyliczyć wielkości zlecenia w lotach, przekopiowałem fragment kodu ze skryptu. W skopiowanym fragmencie była linijka:
#property strict
Po jej wykasowaniu strategia zadziałała.
Pierwszy problem "strategia przestała wyliczac wielkość zlecenia", wynikał z braku przypisania kursu USDPLN
double USDKurs = MarketInfo("USDPLN",MODE_BID); . W oknie Rynek ukryłem nieużywane instrumenty, a wśród nich był USDPLN.
Drugi problem związany z błędami podczas kompilacji spowodowany był tym, iż podczas zapisywana pod inną nazwą strategii, została ona zapisana z rozszerzeniem .*mq5.
Trzeci problem, nie mogłem włączyć strategii, był związany z tym, iż po tym jak strategia nie mogła wyliczyć wielkości zlecenia w lotach, przekopiowałem fragment kodu ze skryptu. W skopiowanym fragmencie była linijka:
#property strict
Po jej wykasowaniu strategia zadziałała.
Re: Wszystkie pytania dozwolone początkujących programistów
Witam,
tworzy mi się linia vertical i zawsze muszej jej szukać po wykresie:)
Co zrobić, aby wykres automatycznie przeszedł do tego obiektu?
Zero reakcji na komendę ObjectFind;/
Jakiś pomysł jak przesunąć wykres ...
tworzy mi się linia vertical i zawsze muszej jej szukać po wykresie:)
Co zrobić, aby wykres automatycznie przeszedł do tego obiektu?
Zero reakcji na komendę ObjectFind;/
Kod: Zaznacz cały
ObjectFind(0,"linia1"); // przejdź do powstałej linii
Re: Wszystkie pytania dozwolone początkujących programistów
ObjectFind zwraca tylko numer okna, w którym znajduje się dany obiekt. Jeżeli chcesz przesunąć wykres do miejsca, w którym znajduje się Twoja linia musisz użyć funkcji ChartNavigate: https://docs.mql4.com/chart_operations/chartnavigate
Przesunięcie musisz sobie wyliczyć na podstawie tego, co wpisałeś przy tworzeniu pionowej linii.
Przesunięcie musisz sobie wyliczyć na podstawie tego, co wpisałeś przy tworzeniu pionowej linii.
Re: Wszystkie pytania dozwolone początkujących programistów
No właśnie chciałem uniknąć konwertowania czasu na ilość świeczek do końca wykresu:) Liczyłem, że będzie jakaś alternatywa wobec ChartNavigate. No szkoda...
-
- Pasjonat
- Posty: 504
- Rejestracja: 25 lis 2011, 17:55
Re: Wszystkie pytania dozwolone początkujących programistów
na wykresie obok napisów wskaźnika pojawia się szary napis Label. Co go powoduje i jak go zlikwidować?
najeżdżając kursorem na napis Label pojawia się na białym polu napis Daily return i pod spodem jakaś liczba
2 sprawa. nie wyświetlają się kolory. napis jest czarny a powinien być zielony gdy wartość >0 oraz czerwony gdy wartość<0
wrzucam wycinek kodu:
najeżdżając kursorem na napis Label pojawia się na białym polu napis Daily return i pod spodem jakaś liczba
2 sprawa. nie wyświetlają się kolory. napis jest czarny a powinien być zielony gdy wartość >0 oraz czerwony gdy wartość<0
wrzucam wycinek kodu:
Kod: Zaznacz cały
//---------------
color color_1 = 0, color_2 = 0, color_3 = 0, color_4 = 0;
//----
string Dailyreturntekst="Daily return = ";
double dailyreturnpercent = (MarketInfo(Symbol(),MODE_BID) - iClose(Symbol(),PERIOD_D1,1))*100/iClose(Symbol(),PERIOD_D1,1);
double dailyreturnpoints = (MarketInfo(Symbol(),MODE_BID) - iClose(Symbol(),PERIOD_D1,1));
if(dailyreturnpercent>0)color_1=color_up; else color_1=color_down;
if(dailyreturnpoints>0)color_2=color_up; else color_2=color_down;
ObjectCreate("Daily return",OBJ_LABEL,0,0,0);
ObjectSetText("Daily return",Dailyreturntekst,FontSize ,"Arial",kolor);
ObjectSet("Daily return",OBJPROP_XDISTANCE,5);
ObjectSet("Daily return",OBJPROP_YDISTANCE,215);
ObjectSetText("Daily return", Dailyreturntekst+DoubleToStr(dailyreturnpercent,2)+" %"+znak+DoubleToStr(dailyreturnpoints,MarketInfo(Symbol(),MODE_DIGITS)));//dzienna stopa zwrotu w procentach i punktach
//---------------
string returnxtest="return(x) = ";
double returnxpercent = (MarketInfo(Symbol(),MODE_BID) - iClose(Symbol(),Period(),Shiftforreturn))*100/iClose(Symbol(),Period(),Shiftforreturn);
double returnxpoints = (MarketInfo(Symbol(),MODE_BID) - iClose(Symbol(),Period(),Shiftforreturn));
if(returnxpercent>0)color_3=color_up; else color_3=color_down;
if(returnxpoints>0)color_4=color_up; else color_4=color_down;
ObjectCreate("return(x)",OBJ_LABEL,0,0,0);
ObjectSetText("return(x)",Rangetekst,FontSize ,"Arial",kolor);
ObjectSet("return(x)",OBJPROP_XDISTANCE,5);
ObjectSet("return(x)",OBJPROP_YDISTANCE,230);
ObjectSetText("return(x)", returnxtest+DoubleToStr(returnxpercent,2)+" %"+znak+DoubleToStr(returnxpoints,MarketInfo(Symbol(),MODE_DIGITS)));//stopa zwrotu z okresu "x" w procentach i punktach
//---------------
Re: Wszystkie pytania dozwolone początkujących programistów
Witam wszystkich,
Chciałem napisać ea który by otwierał zlecenia przeciwstawne w odległości x pip, dokładniej tłumacząc, otwieram dowolne zlecenie przykładowo buy teraz jeżeli cena spadnie o xx pipów to otworzy sie drugie zlecenie na sell, będzie ktoś tak miły i napisze jak taki kod powinien wyglądać, bo ja jestem całkiem początkujący i albo nie chce mi w ogóle drugiej pozycji otworzyć albo otwiera co każdy tick
Chciałem napisać ea który by otwierał zlecenia przeciwstawne w odległości x pip, dokładniej tłumacząc, otwieram dowolne zlecenie przykładowo buy teraz jeżeli cena spadnie o xx pipów to otworzy sie drugie zlecenie na sell, będzie ktoś tak miły i napisze jak taki kod powinien wyglądać, bo ja jestem całkiem początkujący i albo nie chce mi w ogóle drugiej pozycji otworzyć albo otwiera co każdy tick