Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
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 »

zacker2 pisze:1.Czy jest technicznie taka możliwość aby robot sam zamykał na wyznaczonym przeze mnie poziomie (lub np. na podstawie Fibo ) część zlecenia ? Np. Otworzyłem longa za 1 lot, a 20 pipsów wyżej chce zamknąć tylko połowę tj. 0,5 lota.
2. Czy przy pracy robota potrzebna jest otwarta platforma (np. jak. z trailing stop) czy robot działa na serwerze ?
Pozdrawiam
ad.1 Tak, możesz tak zrobic.
ad.2 Jak robot działa na twoim komputerze to platforma musi byc włączona. Co do serwera to Ci nie powiem. Myślę, że jest taka opcja ale nigdy się tym nie interesowałem. Prawdopodobnie było by to płatne..
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

Jeremiasz
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 17 gru 2013, 06:13

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

Nieprzeczytany post autor: Jeremiasz »

Witam;
Proszę o odpowiedź na pytanie:
Czy Expert Advisors lub inne programy napisane w języku MQL5 (z użyciem elementów nie występujących w MQL4)
mogą być używane (i czy będą działać poprawnie) na platformie Meta Trader 4, czy też wyłącznie na MT5? Pozdrawiam; Jeremiasz

grafikk
Gaduła
Gaduła
Posty: 131
Rejestracja: 15 cze 2012, 10:59

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

Nieprzeczytany post autor: grafikk »

czy jest mozliwe porownanie wartosci linii np rvi i stochastika by moc wykorzystac w automacie ich przeciecie? na wspolny wykres da sie je wrzucic, natomiast jeden przyjmuje wartosci ujemne i dodatnie, drugi 0-100. nie wiem czy to bedzie mialo sens, ale na wykresie wyglada obiecujaco.

Awatar użytkownika
por. Borewicz
Gaduła
Gaduła
Posty: 93
Rejestracja: 25 cze 2014, 11:58

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

Nieprzeczytany post autor: por. Borewicz »

grafikk pisze:czy jest mozliwe porownanie wartosci linii np rvi i stochastika by moc wykorzystac w automacie ich przeciecie? na wspolny wykres da sie je wrzucic, natomiast jeden przyjmuje wartosci ujemne i dodatnie, drugi 0-100. nie wiem czy to bedzie mialo sens, ale na wykresie wyglada obiecujaco.
Spróbuj przeskalować wartości rvi do przedziału 0-100, tzn. rvi_przeskalowane=50*rvi + 50 i takie wartości porównuj.
To pewnie nie sprawdzi się w praktyce, bo rvi rzadko kiedy wychodzi poza przedział (-0.5, 0.5), więc możesz jeszcze spróbować tak:
rvi_przeskalowane = 100*rvi+50 z tym, że jeżeli wynik wyjdzie większy niż 1 to ustaw na 1. Jeżeli wyjdzie mniejszy niż 0 ustaw na 0.

LeeZero
Bywalec
Bywalec
Posty: 11
Rejestracja: 20 cze 2014, 11:31

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

Nieprzeczytany post autor: LeeZero »

Ja tylko rzucam pomysł: co do RVI i stochastika można było by spróbować zmienić te wartości na procent (w sumie stoch nie trzeba) a RVI można by spróbować dodać 0,5 i przedział od 0 do 1 zmienić na procentowe wartości
teraz czytam post Borewicz'a i całkiem podobnie napisałem

-- Dodano: 15 wrz 2014, 13:25 --

Ja mam nieco inny problem otóż mam takie dane jak Dwie daty 2014.09.09 22:00 i 2014.09.15 14:00 i chciał bym znać wartość świeczek pomiędzy nimi z wybranego interwału. wszystko mam okej oblicza mi ilość świeczek pomiędzy nimi tylko jak jest weekend dodaje mi do wyniku "świeczki weekendowe" i nie mam pomysłu jak ich sie pozbyć

xan023
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 16 wrz 2014, 10:13

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

Nieprzeczytany post autor: xan023 »

Witam proszę o pomoc bo skończyły mi się pomysły

int OrdSend(string _symbol, int _cmd, double _volume, double _price, int _slippage, double _stoploss, double _takeprofit, string _comment="", int _magic=0, datetime _expiration=0, color _arrow_color=CLR_NONE) {
//Send order with retry capabilities and log
int _stoplevel=MarketInfo(_symbol,MODE_STOPLEVEL);
double _priceop=0;
int ticket,err,tries;
tries = 0;
switch (_cmd) {
case OP_BUY:
while (tries < NumberOfTries) {
RefreshRates();
if (ECNBroker)
{
ticket = OrderSend(_symbol,OP_BUY,_volume,Ask,_slippage,0,0,_comment,_magic,_expiration,_arrow_color);
if (ticket>0)
dummyResult = OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),0,CLR_NONE);
}
else ticket = OrderSend(_symbol,OP_BUY,_volume,Ask,_slippage,NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),_comment,_magic,_expiration,_arrow_color);
if(ticket<=0) {
Write("Error Occured : "+ErrorDescription(GetLastError()));
Write(Symbol()+" Buy @ "+Ask+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
tries++;
} else {
tries = NumberOfTries;
Write("Order opened : "+Symbol()+" Buy @ "+Ask+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
}
Sleep(RetryTime*1000);
}
err=ticket;
break;

case OP_SELL:
while (tries < NumberOfTries) {
RefreshRates();
if (ECNBroker)
{
ticket = OrderSend(_symbol,OP_SELL,_volume,Bid,_slippage,0,0,_comment,_magic,_expiration,_arrow_color);
if (ticket>0)
dummyResult = OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),0,CLR_NONE);
}
else ticket = OrderSend(_symbol,OP_SELL,_volume,Bid,_slippage,NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),_comment,_magic,_expiration,_arrow_color);
if(ticket<=0) {
Write("Error Occured : "+ErrorDescription(GetLastError()));
Write(Symbol()+" Sell @ "+Bid+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
tries++;
} else {
tries = NumberOfTries;
Write("Order opened : "+Symbol()+" Sell @ "+Bid+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
}
Sleep(RetryTime*1000);
}
err=ticket;
break;

case OP_BUYSTOP:
while (tries < NumberOfTries) {
RefreshRates();
if ((_price-Ask)<_stoplevel*Point) _priceop=Ask+Point*_stoplevel; else _priceop=_price;
ticket = OrderSend(_symbol,OP_BUYSTOP,_volume,NormalizeDouble(_priceop,Digits),_slippage, NormalizeDouble(_stoploss,Digits), NormalizeDouble(_takeprofit,Digits), _comment,_magic,_expiration,_arrow_color);
if(ticket<=0) {
Write("Error Occured : "+ErrorDescription(GetLastError()));
Write(Symbol()+" Buy Stop @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
tries++;
} else {
tries = NumberOfTries;
Write("Order opened : "+Symbol()+" Buy Stop@ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
}
Sleep(RetryTime*1000);
}
err=ticket;
break;


case OP_SELLSTOP:
while (tries < NumberOfTries) {
RefreshRates();
if ((Bid-_price)<_stoplevel*Point) _priceop=Bid-_stoplevel*Point; else _priceop=_price;
ticket = OrderSend(_symbol,OP_SELLSTOP,_volume,NormalizeDouble(_priceop,Digits),_slippage,NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),_comment,_magic,_expiration,_arrow_color);
if(ticket<=0) {
Write("Error Occured : "+ErrorDescription(GetLastError()));
Write(Symbol()+" Sell Stop @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
tries++;
} else {
tries = NumberOfTries;
Write("Order opened : "+Symbol()+" Sell Stop @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
}
Sleep(RetryTime*1000);
}
err=ticket;
break;


case OP_BUYLIMIT:
while (tries < NumberOfTries) {
RefreshRates();
if ((Ask-_price)<_stoplevel*Point) _priceop=Ask-_stoplevel*Point; else _priceop=_price;
ticket = OrderSend(_symbol,OP_BUYLIMIT,_volume,NormalizeDouble(_priceop,Digits),_slippage,NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),_comment,_magic,_expiration,_arrow_color);
if(ticket<=0) {
Write("Error Occured : "+ErrorDescription(GetLastError()));
Write(Symbol()+" Buy Limit @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
tries++;
} else {
tries = NumberOfTries;
Write("Order opened : "+Symbol()+" Buy Limit @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
}
Sleep(RetryTime*1000);
}
err=ticket;
break;

case OP_SELLLIMIT:
while (tries < NumberOfTries) {
RefreshRates();
if ((_price-Bid)<_stoplevel*Point) _priceop=Bid+_stoplevel*Point; else _priceop=_price;
ticket = OrderSend(_symbol,OP_SELLLIMIT,_volume,NormalizeDouble(_priceop,Digits),_slippage,NormalizeDouble(_stoploss,Digits),NormalizeDouble(_takeprofit,Digits),_comment,_magic,_expiration,_arrow_color);
if(ticket<=0) {
Write("Error Occured : "+ErrorDescription(GetLastError()));
Write(Symbol()+" Sell Limit @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
tries++;
} else {
tries = NumberOfTries;
Write("Order opened : "+Symbol()+" Sell Limit @ "+_priceop+" SL @ "+_stoploss+" TP @"+_takeprofit+" ticket ="+ticket);
}
Sleep(RetryTime*1000);
}
err=ticket;
break;

default:
Write("No valid type of order found");
err=-1;
break;
}
return(err);
}

2014.09.16 09:18:22.949 I_Will_Make_You_Rich-1.01 EURUSD,H1: Time 2014.09.16 10:18:30: Error Occured : invalid stops
2014.09.16 09:18:22.947 I_Will_Make_You_Rich-1.01 EURUSD,H1: NormalizeDouble(_priceop,Digits) = 1.2936
2014.09.16 09:18:21.809 I_Will_Make_You_Rich-1.01 EURUSD,H1: Time 2014.09.16 10:18:28: EURUSD Buy Stop @ 1.2936 SL @ 1.2933 TP @1.2943 ticket =-1
2014.09.16 09:18:21.807 I_Will_Make_You_Rich-1.01 EURUSD,H1: Time 2014.09.16 10:18:28: Error Occured : invalid stops
2014.09.16 09:18:21.805 I_Will_Make_You_Rich-1.01 EURUSD,H1: NormalizeDouble(_priceop,Digits) = 1.2936
2014.09.16 09:18:20.625 I_Will_Make_You_Rich-1.01 EURUSD,H1: Time 2014.09.16 10:18:27: EURUSD Buy Stop @ 1.29361 SL @ 1.29331 TP @1.29431 ticket =-1
2014.09.16 09:18:20.623 I_Will_Make_You_Rich-1.01 EURUSD,H1: Time 2014.09.16 10:18:27: Error Occured : invalid stops
2014.09.16 09:18:20.621 I_Will_Make_You_Rich-1.01 EURUSD,H1: NormalizeDouble(_priceop,Digits) = 1.2936
2014.09.16 09:18:19.469 I_Will_Make_You_Rich-1.01 EURUSD,H1: Time 2014.09.16 10:18:26: EURUSD Buy Stop @ 1.29361 SL @ 1.29331 TP @1.29431 ticket =-1

Lucky_Man
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 07 paź 2014, 22:37

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

Nieprzeczytany post autor: Lucky_Man »

Witam wszystkich :-)
Mam pytanko jakiej funkcji użyć aby sprawdzić czy pozycja jest otwarta czy zamknięta?

Awatar użytkownika
akukaracza
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 09 wrz 2014, 09:57

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

Nieprzeczytany post autor: akukaracza »

witam wszystkich.
chcialbym stworzyc sobie bardzo prosty skrypt (wlasciwie 2, na sell i buy).
skrypt mialby wykonywac tylko jedna funkcje, mianowicie skladac zlecenie kupna
po cenie wyzszej niz obecna ale z limitem aktywacji zlecenia po cenie nizszej niz obecna.
i analogicznie dla SELL.
czyli skrypt ktory zlozy mi zlecenie tylko pod warunkiem ze poprzednie zostanie zamkniete.

niestety nie mam pojecia jak sie za to zabrac....

grafikk
Gaduła
Gaduła
Posty: 131
Rejestracja: 15 cze 2012, 10:59

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

Nieprzeczytany post autor: grafikk »

pytanie, z tego co zauwazylem potem jeszcze doczytalem i doguglalem tester strategii mt4 nie obsluguje funkcji sleep(), da sie to jakos obejsc? czy da sie np zrobic tak by wykonywanie kodu kontynuowac dopiero w nastepnej swieczce, ale nie koniecznie na jej poczatku? przychodzi mi na mysl moze cos z TimeCurrent() ale nie wiem jak to ogarnac :]

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

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

Nieprzeczytany post autor: Pierz Andrzej »

grafikk pisze:pytanie, z tego co zauwazylem potem jeszcze doczytalem i doguglalem tester strategii mt4 nie obsluguje funkcji sleep(), da sie to jakos obejsc? czy da sie np zrobic tak by wykonywanie kodu kontynuowac dopiero w nastepnej swieczce, ale nie koniecznie na jej poczatku? przychodzi mi na mysl moze cos z TimeCurrent() ale nie wiem jak to ogarnac :]
skorzystaj z funkcji IsNewBar() http://forex-nawigator.biz/forum/funkcj ... ar#p656852

-- Dodano: wt 11-11-2014, 18:57 --
xan023 pisze:Witam proszę o pomoc bo skończyły mi się pomysły
Witam

nie zagłębiałem się w kod zbytnio ale nie wygląda żeby gdzieś w nim był błąd .

błąd 130 invalid stops może występować zarówno dla źle ustawionego StopLoss , TakeProfit ale także dla próby otwarcia zlecenia oczekującego o błędnej cenie np (próba otwarcia zlecenia BUYSTOP poniżej aktualnej ceny rynkowej) lub zbyt bliskiej ceny rynkowej jeżeli broker posiada limit stop i od tego bym zaczął ;-)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ