Poszukuję kogoś kto zrobił by dla mnie prosty automat
Poszukuję kogoś kto zrobił by dla mnie prosty automat
Witam. Chciałem przeprowadzić pewien eksperyment i potrzebuję w miarę prostego automatu. Automat do mt4 miał by porównać cenę otwarcia i zamknięcia poprzedniego dnia i o określonej godzinie otworzyć pozycję krótką albo długą ustawi sl po czym o określonej godzinie zamyka pozycję ewentualnie przestawia sl. Ktoś coś ?
-- Dodano: 30 sie 2018, 12:34 --
Zapomniałem dodać że jeśli będzie trzeba to oczywiście zapłacę Chyba że się znajdzie jakaś duszyczka co zrobi to dla zabawy.
-- Dodano: 30 sie 2018, 12:34 --
Zapomniałem dodać że jeśli będzie trzeba to oczywiście zapłacę Chyba że się znajdzie jakaś duszyczka co zrobi to dla zabawy.
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
A ja chce czerwone ferrari i sto tysiecy milionów dolarów...
Nie ma opcji z przesuwaniem SL, jest prosty mechanizm otwierania w określonych godzinach oraz zamykania o określonej godzinie. Przykład otwiera pozycje o 8 rano i zamyka o 14. Jeśli cena o 8 jest nad Open poprzedniej świecy otwiera BUY, jeśli jest pod otwiera SELL. Stwórz nowy plik w kreatorze EA o nazwie EATime31082018 i wklej ten kod.
A teraz wyjaśnienie konkretnych linijek kodu
Tutaj ustawiasz między jakimi godzinami ma BUDOWAĆ POZYCJE, tak możesz ustalić godziny pomiędzy którymi będzie otwierało pozycje np co 5 minut albo będzie otwierało do póki starczy marginu, ale...
...ja zablokowałem możliwość dodawania kolejnych pozycji przerywając funkcje warunkiem if (OrdersTotal() > 0) return; - OrdersTotal() pokazuje ilość wszystkich pozycji, więc jeśli jest otwarta 1 pozycja to ta funkcja zwraca 1, więc ten warunek sprawdza czy jest więcej od 0, i jeśli jest otwarta jakaś pozycja wtedy return przerywa funkcje na początku, zanim przejdzie do kolejnych linijek kodu gdzie jest wysłanie zlecenia. Poczytaj o funkcjach, o przerywaniu funkcji returnem etc. Jeśli skasujesz ten fragment if (OrdersTotal() > 0) return; to zobaczysz że nawali Ci pozycjami.
Następnie masz warunki do otwarcia pozycji w instrukcji warunkowej która sprawdza godzinę. Skup się dokładnie na tej linijce kodu if (lastTick.bid > iOpen(Symbol(), PERIOD_D1, 1)) - tutaj sprawdzasz czy cena BID ostatniego Ticka jest większa od OPEN poprzedniego dnia. Tutaj masz dokumentacje https://docs.mql4.com/series/iopen jak wyciągać poszczególne informacje o świecy z danego interwału, ale Ciebie interesuje świeca Daily z poprzedniego dnia więc to będzie iOpen(Symbol(), PERIOD_D1, 1) - 1 na końcu oznacza 1 świece wstecz, czyli poprzednią świece. I w zależności gdzie jest cen BID w stosunku do otwarcia poprzedniego dnia otworzy BUY lub SELL. jeśli nie wiesz co to są instrukcje warunkowe if else to poczytaj o tym.
Jeśli chcesz sprawdzić inne warunki np porównać ostatni Tick w danej godzinie do Close poprzedniej świecy D1 wtedy dajesz zamiast iOpen(Symbol(), PERIOD_D1, 1) ---> iClose(Symbol(), PERIOD_D1, 1)
Jeszcze raz wrzucam dokumentacje o tym https://docs.mql4.com/series/iclose
Pozycje zamykasz o konkretnej godzinie, ustawiłem że o 14 dla przykładu
Masz wstępny kod, możesz już go pozmieniać według własnego uznania, z resztą sam pokombinuj.
-- Dodano: 31 sie 2018, 10:40 --
Chyba nie musze pisać że możesz to sprawdzić na testerze historycznym...
Nie ma opcji z przesuwaniem SL, jest prosty mechanizm otwierania w określonych godzinach oraz zamykania o określonej godzinie. Przykład otwiera pozycje o 8 rano i zamyka o 14. Jeśli cena o 8 jest nad Open poprzedniej świecy otwiera BUY, jeśli jest pod otwiera SELL. Stwórz nowy plik w kreatorze EA o nazwie EATime31082018 i wklej ten kod.
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| EATime31082018.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int MagicNumber = 100;
extern int Slippage = 3;
extern double LotSize = 0.1;
int counter = 0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
MqlTick lastTick;
if (Hour() > 7 && Hour() < 9) {
// open order
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iOpen(Symbol(), PERIOD_D1, 1)) {
sendBuyOrder();
} else {
sendSellOrder();
}
}
}
if (Hour() == 14) {
// close order
manuallyCloseOrder();
}
//Print( iOpen(Symbol(), PERIOD_D1, 1) );
//Print( iLow(Symbol(), PERIOD_D1, 1) );
//Print( iHigh(Symbol(), PERIOD_D1, 1) );
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {}
//+------------------------------------------------------------------+
void sendBuyOrder() {
if (OrdersTotal() > 0) return;
OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, 0, 0,"Buy[" + counter +"]", MagicNumber, 0, clrGreen);
counter++;
}
void sendSellOrder() {
if (OrdersTotal() > 0) return;
OrderSend(Symbol(), OP_SELL, LotSize, Bid, Slippage, 0, 0,"Sell[" + counter +"]", MagicNumber, 0, clrRed);
counter++;
}
void manuallyCloseOrder() {
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS)==true) {
if (OrderType() == 0) {
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 0, clrNONE);
} else if (OrderType() == 1) {
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 0, clrNONE);
}
}
}
}
Tutaj ustawiasz między jakimi godzinami ma BUDOWAĆ POZYCJE, tak możesz ustalić godziny pomiędzy którymi będzie otwierało pozycje np co 5 minut albo będzie otwierało do póki starczy marginu, ale...
Kod: Zaznacz cały
if (Hour() > 7 && Hour() < 9) {
Kod: Zaznacz cały
void sendBuyOrder() {
if (OrdersTotal() > 0) return;
OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, 0, 0,"Buy[" + counter +"]", MagicNumber, 0, clrGreen);
counter++;
}
Kod: Zaznacz cały
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iOpen(Symbol(), PERIOD_D1, 1)) {
sendBuyOrder();
} else {
sendSellOrder();
}
}
Jeszcze raz wrzucam dokumentacje o tym https://docs.mql4.com/series/iclose
Kod: Zaznacz cały
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iClose(Symbol(), PERIOD_D1, 1)) {
sendBuyOrder();
} else {
sendSellOrder();
}
}
Kod: Zaznacz cały
if (Hour() == 14) {
// close order
manuallyCloseOrder();
}
-- Dodano: 31 sie 2018, 10:40 --
Chyba nie musze pisać że możesz to sprawdzić na testerze historycznym...
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
Pięknie dziękuję. Wrzucam i będę kombinował. Nie wrzucę tego na historyczny bo to nie ma sensu. Nie cofnę się w przeszłość i nie odpalę go do zarabiania. Będzie testowany na realu ale spokojnie na mikrolotach
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
Zła decyzja. Masz teraz weekend. Możesz pozmieniać godziny w tym krótkim kodzie i sprawdzić np otwarcie od 8 do 10, czyli o 9, a zamknięcie o 22 itd. Możesz dać inny instrument. Wyciągnąć z tego wnioski, wprowadzić potem poprawki, znaleźć bardziej optymalny wariant. Jak włączysz to na realnym rynku to stracisz czas zanim dostaniesz wyniki musisz czekać te kilka godzin, a żeby dostać wyniki w dłuższej serii zagrań, zobaczyć krzywą kapitału itp minął dni. Dlatego jest tester historyczny. I lepiej naucz się z niego korzystać jeśli jeszcze nie używałeś. Zrób ten plik tak jak napisałem, wrzuć ten kod do niego i potem na historii sprawdź jak w danym okresie zachowuje się dane ustawienie. Możesz przecież jeszcze sprawdzić otwieranie po cenie CLOSE bo dałem w przykładowym kodzie OPEN poprzedniej świecy.Zlepek pisze:Pięknie dziękuję. Wrzucam i będę kombinował. Nie wrzucę tego na historyczny bo to nie ma sensu. Nie cofnę się w przeszłość i nie odpalę go do zarabiania. Będzie testowany na realu ale spokojnie na mikrolotach
TESTER HISTORYCZNY ODPAL NA WEEKENDZIE I SPRÓBUJ POZMIENIAĆ GODZINY W KODZIE I TESTUJ NA HISTORII, DOPIERO POTEM ZOBACZYSZ CZY W OGÓLE MA SENS WŁĄCZANIE TEGO NA DEMO ALBO NAWET NA REALNYM KONCIE Z MIKROLOTAMI.
...
Pewnie nawet nie wiesz o czym piszę... opis ja włączyć tester
https://images90.fotosik.pl/28/c1e639724c367ffa.png
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
Dobra wszystko ogarnąłem wiem już co i jak zmiana godzin ilość świec do zbadania itp. rozkminione. Pytanie tylko jest teraz następujące. Czy da się do tego podczepić stały sl ? powiedzmy 20 pipsów albo coś takiego ?
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
Kilka pytań do.
Jeśli napiszę Otworzy pozycję konkretnie o godzinie 18. i właśnie o to mi chodziło o konkretnej godzinie dokładnie 1 pozycja. Teraz najwięcej problemów sprawia mi ten kod.
Czyli sprawdza mi poprzednią świecę D1. i teraz pytanie czy on pobiera cenę zamknięcia tej świecy otwarcia ?
Bo już rozkminiłem to troszeczkę i chciałem się zapytać czy mam rację.
Tu wychodziło by na to że otwarta pozycja będzie o godzinie 18 sprawdzając cenę o godzinie 15. Teraz moje pytanie czy ten kod sprawdza mi cenę zamknięcia świeczki H1 o godzinie 15 ?
No i kolejne pytanie. Czy da się do tego podczepić jakoś SL ?
Kod: Zaznacz cały
if (Hour() > 7 && Hour() < 9) {
Kod: Zaznacz cały
if (Hour()== 18 ) {
Kod: Zaznacz cały
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iOpen(Symbol(), PERIOD_D1, 1)) {
sendBuyOrder();
} else {
sendSellOrder();
}
}
Bo już rozkminiłem to troszeczkę i chciałem się zapytać czy mam rację.
Kod: Zaznacz cały
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iOpen(Symbol(), PERIOD_H1, 3 )){
sendBuyOrder();
} else {
sendSellOrder();
No i kolejne pytanie. Czy da się do tego podczepić jakoś SL ?
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
Kod: Zaznacz cały
iOpen(Symbol(), PERIOD_H1, 0 )
Kod: Zaznacz cały
iOpen(Symbol(), PERIOD_H1, 3 )
Jezeli chcesz cene zamkniecia to musisz uzyc iClose
SL i/lub TP ustawiasz w funkcji OrderSendCzy da się do tego podczepić jakoś SL ?
np.
Kod: Zaznacz cały
double SL = 1.11111;
double TP = 1.22222;
OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, SL , TP, "Buy[" + counter +"]", MagicNumber, 0, clrGreen);
Linki do dokumentacji
https://docs.mql4.com/ lub jezeli nie ogarniasz po angielsku to http://bossafx.pl/fx/narzedzia/automatyzacja/
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
To juz chcesz jakies cuda na kiju teraz heh
Więc o godzinie 18 chciałbyś sprawdzić świece H1 z godziny 15...
Następnie z close tej świecy H1 wziąć cene close jako stop loss
czyli to będzie świeca z 15 jeśli dać shift = 3 od 18
I nie ma zamykac o konkretnej godzinie tylko na SL albo TP
To wygląda mniej więcej tak https://images92.fotosik.pl/29/5a4c1aaf4524ae52.png
Tylko według czego ma otwierać wtedy BUY lub SELL ?!
Ustawiłem że według tej świecy, według właśnie ceny CLOSE tej H1 3 świece wstecz od 18
i jeśli o 18 jest nad close to BUY, pod close wyślij zlecenie SELL
Ok, już tyle pomocy, teraz dokumentacja MQL https://docs.mql4.com/ i nauka metodą prób i błędów co jak działa.
-- Dodano: 01 wrz 2018, 21:11 --
Żeby otwierało tylko 1 pozycje w tej godzinie to zmień z
na
Bo teraz fałszuje wyniki przez to że po uderzeniu w SL może otworzyć kolejną pozycje jeśli nie ma jeszcze 19 tylko jest nadal 18. Więc można m.in. tak to obejść dodając dodatkowy warunek który sprawdza minutę
Więc o godzinie 18 chciałbyś sprawdzić świece H1 z godziny 15...
Następnie z close tej świecy H1 wziąć cene close jako stop loss
czyli to będzie świeca z 15 jeśli dać shift = 3 od 18
I nie ma zamykac o konkretnej godzinie tylko na SL albo TP
To wygląda mniej więcej tak https://images92.fotosik.pl/29/5a4c1aaf4524ae52.png
Tylko według czego ma otwierać wtedy BUY lub SELL ?!
Ustawiłem że według tej świecy, według właśnie ceny CLOSE tej H1 3 świece wstecz od 18
i jeśli o 18 jest nad close to BUY, pod close wyślij zlecenie SELL
Ok, już tyle pomocy, teraz dokumentacja MQL https://docs.mql4.com/ i nauka metodą prób i błędów co jak działa.
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| EATime31082018_BetaTest2.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int MagicNumber = 100;
extern int Slippage = 3;
extern double LotSize = 0.1;
int counter = 0;
extern int SL_POINT = 10;
extern int TP_POINT = 30;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
MqlTick lastTick;
/*
if (Hour() > 7 && Hour() < 9) {
// open order
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iClose(Symbol(), PERIOD_D1, 1)) {
sendBuyOrder();
} else {
sendSellOrder();
}
}
}
*/
if (Hour() == 18) {
// open order
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iClose(Symbol(), PERIOD_H1, 3)) {
//Print( iClose(Symbol(), PERIOD_H1, 3) );
double sl_price = iClose(Symbol(), PERIOD_H1, 3);
sendBuyOrder(sl_price);
} else {
//Print( iClose(Symbol(), PERIOD_H1, 3) );
double sl_price = iClose(Symbol(), PERIOD_H1, 3);
sendSellOrder(sl_price);
}
}
}
if (Hour() == 14) {
// close order
//manuallyCloseOrder();
}
//Print( iOpen(Symbol(), PERIOD_D1, 1) );
//Print( iLow(Symbol(), PERIOD_D1, 1) );
//Print( iHigh(Symbol(), PERIOD_D1, 1) );
//Print( "test" );
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {}
//+------------------------------------------------------------------+
/*
void sendBuyOrder() {
if (OrdersTotal() > 0) return;
double minstoplevel_SL = MarketInfo(Symbol(),MODE_STOPLEVEL)+SL_POINT*10;
double minstoplevel_TP = MarketInfo(Symbol(),MODE_STOPLEVEL)+TP_POINT*10;
double stoploss = NormalizeDouble(Bid-minstoplevel_SL*Point,Digits);
double takeprofit = NormalizeDouble(Bid+minstoplevel_TP*Point,Digits);
OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, stoploss, takeprofit,"Buy[" + counter +"]", MagicNumber, 0, clrGreen);
counter++;
}
void sendSellOrder() {
if (OrdersTotal() > 0) return;
double minstoplevel_SL = MarketInfo(Symbol(),MODE_STOPLEVEL)+SL_POINT*10;
double minstoplevel_TP = MarketInfo(Symbol(),MODE_STOPLEVEL)+TP_POINT*10;
double stoploss = NormalizeDouble(Ask+minstoplevel_SL*Point,Digits);
double takeprofit = NormalizeDouble(Ask-minstoplevel_TP*Point,Digits);
OrderSend(Symbol(), OP_SELL, LotSize, Bid, Slippage, stoploss, takeprofit,"Sell[" + counter +"]", MagicNumber, 0, clrRed);
counter++;
}
*/
void sendBuyOrder(double sl_price) {
if (OrdersTotal() > 0) return;
double minstoplevel_TP = MarketInfo(Symbol(),MODE_STOPLEVEL)+TP_POINT*10;
double takeprofit = NormalizeDouble(Bid+minstoplevel_TP*Point,Digits);
OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, sl_price, takeprofit,"Buy[" + counter +"]", MagicNumber, 0, clrGreen);
counter++;
}
void sendSellOrder(double sl_price) {
if (OrdersTotal() > 0) return;
double minstoplevel_TP = MarketInfo(Symbol(),MODE_STOPLEVEL)+TP_POINT*10;
double takeprofit = NormalizeDouble(Ask-minstoplevel_TP*Point,Digits);
OrderSend(Symbol(), OP_SELL, LotSize, Bid, Slippage, sl_price, takeprofit,"Sell[" + counter +"]", MagicNumber, 0, clrRed);
counter++;
}
void manuallyCloseOrder() {
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS)==true) {
if (OrderType() == 0) {
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 0, clrNONE);
} else if (OrderType() == 1) {
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 0, clrNONE);
}
}
}
}
Żeby otwierało tylko 1 pozycje w tej godzinie to zmień z
Kod: Zaznacz cały
if (Hour() == 18) {
Kod: Zaznacz cały
if (Hour() == 18 && Minute() == 0) {
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
OK. Ostatnie moje pytanie odnośnie tego kodu i daje wam spokój.
Czy jest opcja usunąć tp. Bo nie chcę TP ale chciał bym aby sl był przesuwany. Więc już tłumaczę o co chodzi. Pozycja otwierana powiedzmy o godzinie 18:00 Przy otworzeniu pozycji sl musi być zachowany powiedzmy 30 pipsów. Następnie cena sobie śmiga w tą i we nazad. I teraz bardzo ciekawa opcja wpadła mi do czaszki. Jeśli pozycja buy zyskała powiedzmy 60 pipsów od ceny otwarcia sl zostaje przesunięty na cena otwarcia +40 pis więc jak będzie zawrotka i tak wyjdzie na + a jeśli nie to ciągnie pozycję do godzinie 23 i wtedy zamyka. Analogicznie z shortami. Jak cena zarobi 60 pipsów sl zostaje zmieniony na cena otwarcia - 40 pipsów. Czyli zamknięcie pozycji musiało by być zrobione w pętli if --> else
Czy da się w ogóle zrobić coś takiego ? jeśli tak to gdzie szukać informacji jak to napisać.
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| EATime31082018.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int MagicNumber = 100;
extern int Slippage = 3;
extern double LotSize = 0.1;
int counter = 0;
extern int distance_between_HighLow_and_Stoploss = 0; // mozna tutaj przesunac stop loss w pipsach od jakiegos poziomu 10 = 1 pips
extern int SL_POINT = 65;
extern int TP_POINT = 97;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
MqlTick lastTick;
if (Hour() ==18 ) {
// open order
if(SymbolInfoTick(Symbol(),lastTick)) {
//Print( lastTick.bid );
if (lastTick.bid > iOpen(Symbol(), PERIOD_H1, 3)) {
sendBuyOrder();
} else {
sendSellOrder();
}
}
}
if (Hour() == 23) {
// close order
manuallyCloseOrder();
}
//Print( iOpen(Symbol(), PERIOD_D1, 1) );
//Print( iLow(Symbol(), PERIOD_D1, 1) );
//Print( iHigh(Symbol(), PERIOD_D1, 1) );
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {}
//+------------------------------------------------------------------+
void sendBuyOrder() {
if (OrdersTotal() > 0) return;
double minstoplevel_SL = MarketInfo(Symbol(),MODE_STOPLEVEL)+SL_POINT*10;
double minstoplevel_TP = MarketInfo(Symbol(),MODE_STOPLEVEL)+TP_POINT*10;
double stoploss = NormalizeDouble(Bid-minstoplevel_SL*Point,Digits);
double takeprofit = NormalizeDouble(Bid+minstoplevel_TP*Point,Digits);
OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, stoploss, takeprofit,"Buy[" + counter +"]", MagicNumber, 0, clrGreen);
counter++;
}
void sendSellOrder() {
if (OrdersTotal() > 0) return;
double minstoplevel_SL = MarketInfo(Symbol(),MODE_STOPLEVEL)+SL_POINT*10;
double minstoplevel_TP = MarketInfo(Symbol(),MODE_STOPLEVEL)+TP_POINT*10;
double stoploss = NormalizeDouble(Ask+minstoplevel_SL*Point,Digits);
double takeprofit = NormalizeDouble(Ask-minstoplevel_TP*Point,Digits);
OrderSend(Symbol(), OP_SELL, LotSize, Bid, Slippage, stoploss, takeprofit,"Sell[" + counter +"]", MagicNumber, 0, clrRed);
counter++;
}
void manuallyCloseOrder() {
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS)==true) {
if (OrderType() == 0) {
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 0, clrNONE);
} else if (OrderType() == 1) {
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 0, clrNONE);
}
}
}
}
Czy da się w ogóle zrobić coś takiego ? jeśli tak to gdzie szukać informacji jak to napisać.
Re: Poszukuję kogoś kto zrobił by dla mnie prosty automat
Wrzuce takie coś ale teraz sam musisz się wysilić skoro chcesz... i jeśli będziesz blisko rozwiązania jak to zrobić wtedy wstawię gotowca.