Wszystkie pytania dozwolone początkujących programistów
-
- Gaduła
- Posty: 112
- Rejestracja: 03 gru 2012, 22:29
Re: Wszystkie pytania dozwolone początkujących programistów
Spotkał się ktoś może z EA opierającym się o Support&Resistance (mogą być ostatnie szczyty/dołki) i formacje świecowe?
"Nie ma rzeczy niemożliwych, istnieją jedynie trudne do zrealizowania"
Re: Wszystkie pytania dozwolone początkujących programistów
mariusztrader pisze:Spotkał się ktoś może z EA opierającym się o Support&Resistance (mogą być ostatnie szczyty/dołki) i formacje świecowe?
Sporo w tym temacie walczyłem. Poczytaj od tego momentu:
http://forex-nawigator.biz/forum/s-d-ta ... ml#p605703
Odpuściłem ostatecznie.
- Kuba Brzeziński
- Gaduła
- Posty: 353
- Rejestracja: 26 paź 2009, 10:38
Re: Wszystkie pytania dozwolone początkujących programistów
Witam kolegów trader`ów
Mam Prośbę,,,, czy jest na sali ktoś kto zna się... nie koniecznie dobrze na języku MQL ??
otóż mam zapisany skrypt do automatycznego handlu na bazie Moving Average. Po wielu walkach i wkur**** udało się coś skleić.Niestety, dla mnie to jest w dalszym ciągu czarna magia. Przy kompilacji wyświetliło mi łącznie 14 błędów i 7 warnigs, za cholere nie wiem jak to wyeliminować.Części problemów się pozbyłem ale stanąłem i nie mogę ruszyć dalej, Gdy klikam (by zobaczyć konkretne wersy i linie to np, zaznacza mi nawias albo "c" przy crossed. nie wiem gdzie popełniam błąd i nie wiem jak mam się go pozbyć... jeżeli jest ktoś w stanie pomóc bądź chociaż nakierować to będe wdzięcyzny.
Szkoda by było gdyby to nie dzialało...poprostu dalej będe pracowal na pólautomacie.Jednak czas i obowiązki jakie mam uniemożliwiają mi czasami wejście w pozycje o dogodnych warunkach stąd też moja prośba o pomoc.
pozdrawiam
Kuba
Mam Prośbę,,,, czy jest na sali ktoś kto zna się... nie koniecznie dobrze na języku MQL ??
otóż mam zapisany skrypt do automatycznego handlu na bazie Moving Average. Po wielu walkach i wkur**** udało się coś skleić.Niestety, dla mnie to jest w dalszym ciągu czarna magia. Przy kompilacji wyświetliło mi łącznie 14 błędów i 7 warnigs, za cholere nie wiem jak to wyeliminować.Części problemów się pozbyłem ale stanąłem i nie mogę ruszyć dalej, Gdy klikam (by zobaczyć konkretne wersy i linie to np, zaznacza mi nawias albo "c" przy crossed. nie wiem gdzie popełniam błąd i nie wiem jak mam się go pozbyć... jeżeli jest ktoś w stanie pomóc bądź chociaż nakierować to będe wdzięcyzny.
Szkoda by było gdyby to nie dzialało...poprostu dalej będe pracowal na pólautomacie.Jednak czas i obowiązki jakie mam uniemożliwiają mi czasami wejście w pozycje o dogodnych warunkach stąd też moja prośba o pomoc.
pozdrawiam
Kuba
Racja jest jak dupa,każdy ma swoją - J.Piłsudski
Re: Wszystkie pytania dozwolone początkujących programistów
Użyj funkcji GetLastError() żeby sprawdzic co to za błąd. Wklej tą listę błędów tutaj to może coś podpowiem. 

"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"
- Kuba Brzeziński
- Gaduła
- Posty: 353
- Rejestracja: 26 paź 2009, 10:38
Re: Wszystkie pytania dozwolone początkujących programistów
Witam ... gdybyś dopatrzył się czegokolwiek to byłoby zajeb*ście....
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Racja jest jak dupa,każdy ma swoją - J.Piłsudski
Re: Wszystkie pytania dozwolone początkujących programistów
A tak w ogóle to czego oczekujesz? Bo chyba nie chodzi o przetłumaczenie tego, co masz czarno na białym?!Kuba Brzeziński pisze:Witam ... gdybyś dopatrzył się czegokolwiek to byłoby zajeb*ście....
Ewidentnie masz błędy kompilacji (w składni) a więc bez kodu nikt nie wskaże dokładnej przyczyny problemu. Szczególnie że jeden błąd może powodować kolejne.
Najprościej będzie jak przepiszesz wszystko od początku (raczej nie jest tego dużo), a po wprowadzeniu każdej nowej instrukcji będziesz kompilował kod i na bieżąco poprawiał pojawiające się błędy.
Re: Wszystkie pytania dozwolone początkujących programistów
Same podstawowe błędy. Jakbyś wrzucił ten skrypt to bym Ci je poprawił i mógłbyś sobie porównac co było źle. Niektóre nie pamiętam co znaczą ale jakby zobaczył to odrazu bym wiedział. Mniej więcej tak to wygląda:
1) brak zamknięcia tego nawiasu }
2) użycie złej zmiennej
3) nie ma zdefiniowanej takiej funkcji
4) zła liczba parametrów funkcji
5) musiałbym zobaczyc
6) brak ;
7) brakuje jakiegoś operatora
8) zły operator
9) musiałbym zobaczyc
10) funkcje operujące na zleceniach powinny byc sprawdzane np. int ord = OrderSelect(...
11) brak operatora
12) brak zamknięcia nawiacu
13) zły opreator
14) to samo co 10
15) to samo co 10
1) brak zamknięcia tego nawiasu }
2) użycie złej zmiennej
3) nie ma zdefiniowanej takiej funkcji
4) zła liczba parametrów funkcji
5) musiałbym zobaczyc
6) brak ;
7) brakuje jakiegoś operatora
8) zły operator
9) musiałbym zobaczyc
10) funkcje operujące na zleceniach powinny byc sprawdzane np. int ord = OrderSelect(...
11) brak operatora
12) brak zamknięcia nawiacu
13) zły opreator
14) to samo co 10
15) to samo co 10
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"
- Kuba Brzeziński
- Gaduła
- Posty: 353
- Rejestracja: 26 paź 2009, 10:38
Re: Wszystkie pytania dozwolone początkujących programistów
w takiej formie czy inaczej to przedstawić ???
//+------------------------------------------------------------------+
//| Blue Line .mq4 |
//| General Investments Jakub Brzeziński |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "General Investments Jakub Brzeziński"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//--- input parameters
input int longMAPeriod=50;
input int shortMAPeriod=30;
input double takeProfit=1500.0;
input double stopLoss=300.0;
input double lot=0.1;
int CROSSED_UP = 1;
int CROSSED_DOWN = 2;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int init() {
return(0);
}
//---
//---
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
int denit() {
return(0);
}
//---
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
if (validate()) {
int crossed = crossDirection();
Print("Przeciecie: "+crossed);
closePositions(crossed);
openPositions(crossed);
}
return(0);
}
bool validate() {
if(Bars < 100) {
Print("bars less than 100");
return(false);
}
if(stopLoss < 100) {
Print("stopLoss less than 100");
return(false);
}
return(true);
}
int crossDirection() {
double previousLongMA, previousShortMA, currentLongMA, currentShortMA;
previousLongMA = iMA(NULL, 0, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 2);
currentLongMA = iMA(NULL, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
previousShortMA = iMA(NULL, 0,shortMAPeriod, 0, MODE_EMA, PRICE_CLOSE, 2);
currentShortMA = iMA(NULL, 0, shortMAPeriod, 0,MODE_EMA, PRICE_CLOSE, 1).
if ((previousLongMA >= previousShortMA) && (currentLongMA < currentShortMA)) {
return(CROSSED_UP);
}
else if ((previousLongMA <= previousShortMA) && (currentLongMA > currentShortMA)) {
return)(CROSSED_DOWN);
}
else {
return(0);
}
}
void closePositions(int crossed) {
int position;
int total = OrdersTotal();
if (total > 0) {
for(position = 0; position < total; position++) {
OrderSelect(position, SELECT_BY_POS, MODE_TRADES);
if((OrderType() <= OP_SELL) && (OrderSymbol() ==Symbol())) {
if ((OrderType() == OP_BUY) && (crossed ==CROSSED_DOWN)) {
closeBuyPosition();
}
else if (OrderType() == OP_SELL) && (crossed == CROSSED_DOWN)) {
closeSellPosition();
}
}
}
}
}
void closeBuyPosition() {
OrderClose(OrderTicket(), OrderLots(),Bid, 3, Violet);
}
void closeSellPosition() {
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);
}
void openPosition(int crossed) {
int total = OrdersTotal();
if (total == 0) {
if (crossed == CROSSED_UP) {
openBuyPosition();
}
if (crossed == CROSSED_DOWN) {
openSellPosition();
}
}
}
void openBuyPosition() {
int position = OP_BUY;
double volume = lot;
double price = Ask;
double sl = Bid - stopLoss * Point;
double tp = 0;
if (takeProfit > 0) {
tp = Ask + takeProfit * Point;
}
color clr = Green;
openPosition(position, volume, price, sl, tp, clr);
}
void openSellPosition() {
int position = OP_SELL;
double volume = lot;
double price = Bid;
double sl = Ask + stopLoss * Point;
double tp = 0;
if (takeProfit > 0) {
tp = Bid - takeProfit * Point;
}
color clr = Red;
openPosition(position, volume, price, sl, tp, clr);
}
void openPosition(int position, double volume, double price,
double sl, double tp, color clr) {
int ticket = OrderSend(Symbol(), position, volume, price, 3,
sl, tp, "General Investments EA", 12345, 0, clr);
if (ticket > 0) {
if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) {
Print("Pozycja otwarta: ", OrderOpenPrice());
}
} else {
Print("Blad otwarcia pozycji: ", GetLastError());
}
}
-- Dodano: sob 20-12-2014, 19:01 --

//+------------------------------------------------------------------+
//| Blue Line .mq4 |
//| General Investments Jakub Brzeziński |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "General Investments Jakub Brzeziński"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//--- input parameters
input int longMAPeriod=50;
input int shortMAPeriod=30;
input double takeProfit=1500.0;
input double stopLoss=300.0;
input double lot=0.1;
int CROSSED_UP = 1;
int CROSSED_DOWN = 2;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int init() {
return(0);
}
//---
//---
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
int denit() {
return(0);
}
//---
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
if (validate()) {
int crossed = crossDirection();
Print("Przeciecie: "+crossed);
closePositions(crossed);
openPositions(crossed);
}
return(0);
}
bool validate() {
if(Bars < 100) {
Print("bars less than 100");
return(false);
}
if(stopLoss < 100) {
Print("stopLoss less than 100");
return(false);
}
return(true);
}
int crossDirection() {
double previousLongMA, previousShortMA, currentLongMA, currentShortMA;
previousLongMA = iMA(NULL, 0, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 2);
currentLongMA = iMA(NULL, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
previousShortMA = iMA(NULL, 0,shortMAPeriod, 0, MODE_EMA, PRICE_CLOSE, 2);
currentShortMA = iMA(NULL, 0, shortMAPeriod, 0,MODE_EMA, PRICE_CLOSE, 1).
if ((previousLongMA >= previousShortMA) && (currentLongMA < currentShortMA)) {
return(CROSSED_UP);
}
else if ((previousLongMA <= previousShortMA) && (currentLongMA > currentShortMA)) {
return)(CROSSED_DOWN);
}
else {
return(0);
}
}
void closePositions(int crossed) {
int position;
int total = OrdersTotal();
if (total > 0) {
for(position = 0; position < total; position++) {
OrderSelect(position, SELECT_BY_POS, MODE_TRADES);
if((OrderType() <= OP_SELL) && (OrderSymbol() ==Symbol())) {
if ((OrderType() == OP_BUY) && (crossed ==CROSSED_DOWN)) {
closeBuyPosition();
}
else if (OrderType() == OP_SELL) && (crossed == CROSSED_DOWN)) {
closeSellPosition();
}
}
}
}
}
void closeBuyPosition() {
OrderClose(OrderTicket(), OrderLots(),Bid, 3, Violet);
}
void closeSellPosition() {
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);
}
void openPosition(int crossed) {
int total = OrdersTotal();
if (total == 0) {
if (crossed == CROSSED_UP) {
openBuyPosition();
}
if (crossed == CROSSED_DOWN) {
openSellPosition();
}
}
}
void openBuyPosition() {
int position = OP_BUY;
double volume = lot;
double price = Ask;
double sl = Bid - stopLoss * Point;
double tp = 0;
if (takeProfit > 0) {
tp = Ask + takeProfit * Point;
}
color clr = Green;
openPosition(position, volume, price, sl, tp, clr);
}
void openSellPosition() {
int position = OP_SELL;
double volume = lot;
double price = Bid;
double sl = Ask + stopLoss * Point;
double tp = 0;
if (takeProfit > 0) {
tp = Bid - takeProfit * Point;
}
color clr = Red;
openPosition(position, volume, price, sl, tp, clr);
}
void openPosition(int position, double volume, double price,
double sl, double tp, color clr) {
int ticket = OrderSend(Symbol(), position, volume, price, 3,
sl, tp, "General Investments EA", 12345, 0, clr);
if (ticket > 0) {
if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) {
Print("Pozycja otwarta: ", OrderOpenPrice());
}
} else {
Print("Blad otwarcia pozycji: ", GetLastError());
}
}
-- Dodano: sob 20-12-2014, 19:01 --
bfx pisze:Same podstawowe błędy. J

Racja jest jak dupa,każdy ma swoją - J.Piłsudski
Re: Wszystkie pytania dozwolone początkujących programistów
[quote="Kuba Brzeziński"][/quote]
Trochę pozamiatałem.
Walcz dalej sam.
Trochę pozamiatałem.
Walcz dalej sam.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Wszystkie pytania dozwolone początkujących programistów
w linijce 108 masz jeden nawias za dużo: return)(CROSSED_DOWN);
w 136 o jeden za mało: else if(OrderType()==OP_SELL) && (crossed==CROSSED_DOWN))
w 99 masz . zamiast ; : currentShortMA = iMA(NULL,0,shortMAPeriod,0,MODE_EMA,PRICE_CLOSE,1).
w 136 o jeden za mało: else if(OrderType()==OP_SELL) && (crossed==CROSSED_DOWN))
w 99 masz . zamiast ; : currentShortMA = iMA(NULL,0,shortMAPeriod,0,MODE_EMA,PRICE_CLOSE,1).