Poszukuje programisty do współpracy przy kodowaniu
Poszukuje programisty do współpracy przy kodowaniu
Cześć
Chciałbym nawiązać współpracę z programistą znającym język MQL4.
Potrzebuję potestować na back testach indywidualne strategie i pomysły.
Więcej w załączonym pliku.
krzem
Chciałbym nawiązać współpracę z programistą znającym język MQL4.
Potrzebuję potestować na back testach indywidualne strategie i pomysły.
Więcej w załączonym pliku.
krzem
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Poszukuje programisty do współpracy przy kodowaniu
Może po prostu naucz się programowania.krzem78 pisze:Cześć
Chciałbym nawiązać współpracę z programistą znającym język MQL4.
Potrzebuję potestować na back testach indywidualne strategie i pomysły.
Więcej w załączonym pliku.
krzem
Tylko MQL5 nie MQL4, jeśli chcesz robić back testy na wielu parach jednocześnie.
Chyba taniej cię to wyniesie.
Re: Poszukuje programisty do współpracy przy kodowaniu
@Jarek67
Zaczynam uczyć się programowania. A ponieważ jestem noga w tym temacie, to idzie mi to mozolnie.
Zaczynam od C++, ponieważ z tego co poczytałem jest podobny do MQL.
Czy Twoim zdaniem od razu zacząć od MQL5?
Czy Metatrader 4 współpracuje z MQL5 czy tylko z MQL4?
Zaczynam uczyć się programowania. A ponieważ jestem noga w tym temacie, to idzie mi to mozolnie.
Zaczynam od C++, ponieważ z tego co poczytałem jest podobny do MQL.
Czy Twoim zdaniem od razu zacząć od MQL5?
Czy Metatrader 4 współpracuje z MQL5 czy tylko z MQL4?
Re: Poszukuje programisty do współpracy przy kodowaniu
Nie musisz zaczynać od C++ mql jest łatwiejszy, największą barierą jest przestawienie się na 'myślenie abstrakcyjne', potem tylko szukasz szczegółów w dokumentacji.
Dla początkujących polecam ten ebook https://www.investmentuniversity.pl/e-b ... tomatyczny
Tak mql5 działa na mt4
Dla początkujących polecam ten ebook https://www.investmentuniversity.pl/e-b ... tomatyczny
Tak mql5 działa na mt4
Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.
Re: Poszukuje programisty do współpracy przy kodowaniu
Back testów na wielu parach jednocześnie nie zrobisz na MT4.Mustafa pisze:Nie musisz zaczynać od C++ mql jest łatwiejszy, największą barierą jest przestawienie się na 'myślenie abstrakcyjne', potem tylko szukasz szczegółów w dokumentacji.
Dla początkujących polecam ten ebook https://www.investmentuniversity.pl/e-b ... tomatyczny
Tak mql5 działa na mt4
Re: Poszukuje programisty do współpracy przy kodowaniu
Jak wchodzę z poziomu Metatrader4 do MQL (np poprzez F4) to oczywiście otwiera mi się MQL4. Nie wiem jak używać MQL 5 i kompilować do MT4. Ale odpowiedź na to pytanie pewnie dość łatwo znajdę w necie. Być może przesiąść się na MT5.
Back testy na kilku parach jednocześnie - myślę, że nie jest to warunek konieczny. Chciałbym jednak aby back test na danej parze uwzględniał trend na innych parach (korelacja) - być może to też jest niemożliwe na MQL4.
Back testy na kilku parach jednocześnie - myślę, że nie jest to warunek konieczny. Chciałbym jednak aby back test na danej parze uwzględniał trend na innych parach (korelacja) - być może to też jest niemożliwe na MQL4.
Re: Poszukuje programisty do współpracy przy kodowaniu
Testując jedną parę w testerze MT4, masz do dyspozycji jedynie wartości OLHC innych instrumentów.krzem78 pisze:Chciałbym jednak aby back test na danej parze uwzględniał trend na innych parach (korelacja) - być może to też jest niemożliwe na MQL4.
Re: Poszukuje programisty do współpracy przy kodowaniu
Myślę, że to powinno wystarczyć. Póki co trend definiuję przy użyciu średnich EMA, które przecież można obliczyć z OLHC.JAREK67 pisze:Testując jedną parę w testerze MT4, masz do dyspozycji jedynie wartości OLHC innych instrumentów.krzem78 pisze:Chciałbym jednak aby back test na danej parze uwzględniał trend na innych parach (korelacja) - być może to też jest niemożliwe na MQL4.
Zakładam, że OLHC dla różnych TF i par walutowych poza tym, że posłuży jako baza do back testów, to już w trakcie uruchomienia systemu posłuży jako aktualizowana baza przy właściwym trejdingu.
Re: Poszukuje programisty do współpracy przy kodowaniu
Analiza kilku instrumentów oraz kilku ram czasowych jednocześnie jest w standardzie jforex. Tylko pytanie jak przeniesiesz zarządzanie na MT4. Ceny u brokerów mogą się różnić, ale czas otwarcia pozycji, czyli kiedy pojawi się sygnał będzie ten sam, więc możesz generować sygnały na jforex, połączyć to mostem z MT4 (niestety nie mam działającego mostu ale jest dostępny tutaj http://fxcraft.biz/ za opłatą i z supportem). Możesz też robić to bez mostu jeśli będziesz ręcznie zawierał pozycje np w formie alarmów dźwiękowych albo okienek popup kiedy masz sygnał oraz logów które będą zapisywały się do pliku tekstowego albo innego jak csv na dysku, taki track rekord sygnałów oraz tego co zwraca strategia. Pisze to tylko żebyś zainteresował się tym skoro MT4 nie pozwala na takie testy
Zobacz ten obrazek, wygenerowany jest równolegle sygnał MACD (histogram nad/pod osią 0) dla 3 instrumentów, ale możesz testować 24 tak jak zakładasz https://images84.fotosik.pl/1094/0183c3c2540ee050.png . I tak, dla USDJPY dało sygnał BUY, a dla EURUSD i GBPUSD sygnał SELL. Tylko coś pomieszałem wskaźniki na wykresie i w kodzie, ale to bez znaczenia teraz, bo to przyklad.
I to wszystko jest w standardzie jforex za FREE, tylko musiałbyś troche poznać język java.
Kod tej przykładowej strategii która jest tutaj na obrazku wygląd tak. Jak widzisz nie ma tego dużo, a już masz generowanie sygnałów z MACD dziennego. Teraz trzeba dopisać kolejne warunki twojej strategii, dodać wiecej instrumentów, potem zrobić te alerty i tak dalej, ale ja nie zamierzam się w tym grzebać, wrzucam żebyś wiedział że coś takiego można zrobić w JForex.
Chyba nie z tej tablicy wzialem wartsci macd ale to bez znaczenia teraz, to tylko przykład jak zrobić takie sygnały dla kilku instrumentów jednocześnie. Chodzi o ten różowy słupkowy wykres macd, akurat tutaj chcialem pobrać dla przykładu ten sygnal do trendu, nad 0 buy, pod 0 sell.
Zobacz ten obrazek, wygenerowany jest równolegle sygnał MACD (histogram nad/pod osią 0) dla 3 instrumentów, ale możesz testować 24 tak jak zakładasz https://images84.fotosik.pl/1094/0183c3c2540ee050.png . I tak, dla USDJPY dało sygnał BUY, a dla EURUSD i GBPUSD sygnał SELL. Tylko coś pomieszałem wskaźniki na wykresie i w kodzie, ale to bez znaczenia teraz, bo to przyklad.
I to wszystko jest w standardzie jforex za FREE, tylko musiałbyś troche poznać język java.
Kod tej przykładowej strategii która jest tutaj na obrazku wygląd tak. Jak widzisz nie ma tego dużo, a już masz generowanie sygnałów z MACD dziennego. Teraz trzeba dopisać kolejne warunki twojej strategii, dodać wiecej instrumentów, potem zrobić te alerty i tak dalej, ale ja nie zamierzam się w tym grzebać, wrzucam żebyś wiedział że coś takiego można zrobić w JForex.
Kod: Zaznacz cały
package jforex;
import java.util.*;
import com.dukascopy.api.*;
import com.dukascopy.api.IEngine.OrderCommand;
import com.dukascopy.api.IIndicators.AppliedPrice;
import com.dukascopy.api.IIndicators.MaType;
import java.util.Date;
import java.text.*;
public class strategy_12062018_BetaTesty1 implements IStrategy {
private IEngine engine;
private IConsole console;
private IHistory history;
private IContext context;
private IIndicators indicators;
private IUserInterface userInterface;
private IOrder order;
private IChart chart;
DateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd - HH:mm:ss.SSS");
private int counter = 0;
public void onStart(IContext context) throws JFException {
this.engine = context.getEngine();
this.console = context.getConsole();
this.history = context.getHistory();
this.context = context;
this.indicators = context.getIndicators();
this.userInterface = context.getUserInterface();
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
}
public void onAccount(IAccount account) throws JFException {}
public void onMessage(IMessage message) throws JFException {}
public void onStop() throws JFException {}
public void onTick(Instrument instrument, ITick tick) throws JFException {}
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
double[] macdDaily = indicators.macd(instrument, Period.DAILY, OfferSide.BID, AppliedPrice.CLOSE, 12, 26, 9, 0);
double[] macdOneHour = indicators.macd(instrument, Period.ONE_HOUR, OfferSide.BID, AppliedPrice.CLOSE, 12, 26, 9, 0);
double[] macdFourHours = indicators.macd(instrument, Period.FOUR_HOURS, OfferSide.BID, AppliedPrice.CLOSE, 12, 26, 9, 0);
if (instrument.equals(Instrument.EURUSD)) {
checkTime(instrument, period, bidBar, macdDaily);
} else if (instrument.equals(Instrument.GBPUSD)) {
checkTime(instrument, period, bidBar, macdDaily);
} else if (instrument.equals(Instrument.USDJPY)) {
checkTime(instrument, period, bidBar, macdDaily);
} else if (instrument.equals(Instrument.GBPJPY)) {
checkTime(instrument, period, bidBar, macdDaily);
} else if (instrument.equals(Instrument.EURJPY)) {
checkTime(instrument, period, bidBar, macdDaily);
} else if (instrument.equals(Instrument.USDCHF)) {
checkTime(instrument, period, bidBar, macdDaily);
}
}
public void checkTime(Instrument instrument, Period period, IBar bidBar, double[] macdDaily) throws JFException {
Date date = new Date(bidBar.getTime());
if (date.getHours() > 7 && date.getHours() < 9) { // 8 AM GMT
//createSignal(instrument, period, bidBar, date);
} else if (date.getHours() > 15 && date.getHours() < 17) { // 16 (4 PM) GMT
//createSignal(instrument, period, bidBar, date);
} else if (date.getHours() > 20 && date.getHours() < 22) { // 21 (9 PM) GMT
//createSignal(instrument, period, bidBar, date);
simpleCloseOrders(instrument, bidBar);
// stop
//context.stop();
}
createSignal(instrument, period, bidBar, date, macdDaily);
}
public void createSignal(Instrument instrument, Period period, IBar bidBar, Date date, double[] macdDaily) throws JFException {
OrderCommand orderCommand;
IBar dailyBar = history.getBar(instrument, Period.DAILY, OfferSide.BID, 0);
ITick lastTick = history.getLastTick(instrument);
// open position
if (lastTick.getBid() > dailyBar.getOpen()) {
orderCommand = OrderCommand.SELL;
sendOrder(instrument, orderCommand);
} else {
orderCommand = OrderCommand.BUY;
sendOrder(instrument, orderCommand);
}
//print( instrument + " " + macdDaily[0] + " " + macdDaily[1] + " " + macdDaily[2] );
if (macdDaily[2] < 0) {
// sell
print( " sell " + instrument + " " + macdDaily[2] );
} else {
// buy
print( " buy " + instrument + " " + macdDaily[2] );
}
}
public void sendOrder(Instrument instrument, OrderCommand orderCommand) throws JFException {
if (engine.getOrders(instrument).size() > 0) {
return;
}
engine.submitOrder(getLabel(instrument), instrument, orderCommand, 0.001);
}
public void simpleCloseOrders(Instrument instrument, IBar bidBar) throws JFException {
if (engine.getOrders().size() == 0) {
return;
}
for (IOrder order : engine.getOrders()) {
order.close();
}
}
protected String getLabel(Instrument instrument) {
Double random = Math.floor(Math.random() * 100);
String label = instrument.name();
label = label + (counter ++) + random.intValue();
label = label.toUpperCase();
return label;
}
public void print(Object o) {
console.getOut().println( o );
}
}
Re: Poszukuje programisty do współpracy przy kodowaniu
@rookie
Zapoznam się ze spokojem z treścią Twojego postu, na razie tylko szybko przeczytałem.
Od czego tu zacząć naukę programowania... Teraz piszesz o Javie / JForex. Sam już nie wiem. Nie można wszystkich srok za ogon. czy JForex to czysta Java, czy też analogia podobnie jak MQL do C++? Czy Java/JForex jest trudniejszy od MQL?
Akurat mam konto w Dukascopy, więc również i JForex. Z tym że znam go bardzo słabo, nawet ostatnio SL nie mogłem ustawić - pewnie gdzieś zablokowane w innych ustawieniach dziwna sprawa.
Korzystam z MT z uwagi na jego popularność.
JForex pewnie i technicznie wyprzedza MT, ale ma 2 wady:
- nie jest tak popularny, więc np. dyskusje na forach będą utrudnione
- jestem zmuszony do konta w Dukascopy a nie lubię być zmuszany (tak jak pisałem obecnie mam tam konto, ale to nie oznacza ze na zawsze).
A przenoszenie kodu z JForex do MT - z tego co czytałem pewnie i możliwe choć są też pewne problemy. Krótko mówiąc kolejne schody.
Zapoznam się ze spokojem z treścią Twojego postu, na razie tylko szybko przeczytałem.
Od czego tu zacząć naukę programowania... Teraz piszesz o Javie / JForex. Sam już nie wiem. Nie można wszystkich srok za ogon. czy JForex to czysta Java, czy też analogia podobnie jak MQL do C++? Czy Java/JForex jest trudniejszy od MQL?
Akurat mam konto w Dukascopy, więc również i JForex. Z tym że znam go bardzo słabo, nawet ostatnio SL nie mogłem ustawić - pewnie gdzieś zablokowane w innych ustawieniach dziwna sprawa.
Korzystam z MT z uwagi na jego popularność.
JForex pewnie i technicznie wyprzedza MT, ale ma 2 wady:
- nie jest tak popularny, więc np. dyskusje na forach będą utrudnione
- jestem zmuszony do konta w Dukascopy a nie lubię być zmuszany (tak jak pisałem obecnie mam tam konto, ale to nie oznacza ze na zawsze).
A przenoszenie kodu z JForex do MT - z tego co czytałem pewnie i możliwe choć są też pewne problemy. Krótko mówiąc kolejne schody.