Pomoc MQL4

O jezykach programowania w platformach i nie tylko.
WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: Pomoc MQL4

Nieprzeczytany post autor: WojtexWay »

personov pisze:To daj sobie po spełnieniu warunków , że jak otwiera zlecenie buy to przy okazji wartBid=10000;, a jak otwiera sell to wartBid=0;
Tak nie powinno się tego robić... To jest obejście problemu a nie jego rozwiązanie.
personov pisze:Wtedy po zamknięciu zlecenia nie otworzy Ci od razu następnego.
I tak nie powinno otworzyć od razu pozycji, bo...

Kod: Zaznacz cały

set_BID = false;
Ostatnio zmieniony 02 mar 2014, 22:02 przez WojtexWay, łącznie zmieniany 1 raz.

Lucky1978
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 01 mar 2014, 21:57

Re: Pomoc MQL4

Nieprzeczytany post autor: Lucky1978 »

Ale ja właśnie chcę aby otworzył od razu następne tylko w określonym kierunku tak jak pisałem wcześnie zamknięcie na take profit ten sam kierunek na stop loss przeciwny.

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: Pomoc MQL4

Nieprzeczytany post autor: WojtexWay »

Lucky1978 pisze:Ale ja właśnie chcę aby otworzył od razu następne tylko w określonym kierunku tak jak pisałem wcześnie zamknięcie na take profit ten sam kierunek na stop loss przeciwny.
Ale to jest bez sensu... To po co w ogóle zamykać pozycję, jak chcesz ją później otworzyć w tym samym kierunku?...

No, ale cóż... Musisz w takim razie sprawdzić jaka pozycja była ostatnio otwarta - sprawdzić czy została zamknięta na plus czy na minus i odpowiednio otworzyć nową ;]. W czym problem?

Lucky1978
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 01 mar 2014, 21:57

Re: Pomoc MQL4

Nieprzeczytany post autor: Lucky1978 »

Wiem że w tradingu to sensu nie ma ja jednak postawiłem sobie za zadanie aby stworzyć coś takiego w celach czysto ćwiczebnych mql4. Jak byś mógł jeszcze tylko podpowiedzieć jaką funkcją mogę sprawdzić czy pozycja została zamknięta na plus czy minus. Ja niestety od kilku dni próbuje uczyć się mql4 i jestem jeszcze zielony a i nie mogę znaleść żadnego kursu po polsku więc metodą wyrwanych informacji z netu się uczę. Za podpowiedź z góry dziękuje. ;-)

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Re: Pomoc MQL4

Nieprzeczytany post autor: Tymek »

Lucky1978 pisze:Wiem że w tradingu to sensu nie ma ja jednak postawiłem sobie za zadanie aby stworzyć coś takiego w celach czysto ćwiczebnych mql4. Jak byś mógł jeszcze tylko podpowiedzieć jaką funkcją mogę sprawdzić czy pozycja została zamknięta na plus czy minus. Ja niestety od kilku dni próbuje uczyć się mql4 i jestem jeszcze zielony a i nie mogę znaleść żadnego kursu po polsku więc metodą wyrwanych informacji z netu się uczę. Za podpowiedź z góry dziękuje. ;-)
Jak zapytasz brata googla to ci poda kilka przykładów jak to zrobić ;)
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

Lucky1978
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 01 mar 2014, 21:57

Re: Pomoc MQL4

Nieprzeczytany post autor: Lucky1978 »

Zapytałem brata Google i zbierając wasze rady do kupy stworzyłem coś takiego i działa!!!
:-)

Kod: Zaznacz cały

  //+------------------------------------------------------------------+
//|                                                      trening.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
double pips;
int x=0;
bool buy=true;
extern int TakeProfit=20;
extern int StopLoss=20;
extern int MagicNumber=1234;
extern double LotSize=0.01;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()

  {double ticksize = MarketInfo(Symbol(),MODE_TICKSIZE);
   if (ticksize == 0.00001 || ticksize == 0.001)
   pips = ticksize*10;
   else pips= ticksize;

   return(INIT_SUCCEEDED);
  }
  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void start()
 
  {
  if(buy)
      {  if (OrdersTotal()==0)
          OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,Ask-(StopLoss*pips),Ask+(TakeProfit*pips),NULL,0,0,Green);
           if(OrderSelect(x,SELECT_BY_POS)==True)
           if(OrderClosePrice()>OrderOpenPrice()) buy=true;
           if(OrderClosePrice()<OrderOpenPrice()) buy=false;
             x=x++; }
   else
  {
          if (OrdersTotal()==0)
           OrderSend(Symbol(),OP_SELL,LotSize,Bid,3,Bid+(StopLoss*pips),Bid-(TakeProfit*pips),NULL,0,0,Red);
            if(OrderSelect(x,SELECT_BY_POS)==True)
            if(OrderClosePrice()<OrderOpenPrice()) buy=false;
            if(OrderClosePrice()>OrderOpenPrice()) buy=true;
            }
  }
  
//+------------------------------------------------------------------+
   
-- Dodano: 03 mar 2014, 01:53 --

Dzięki za pomoc.:-)

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: Pomoc MQL4

Nieprzeczytany post autor: WojtexWay »

Gratuluję wytrwałości ;-)
Nie chce mi się wgłębiać w ten kod (nie jest on zbyt czytelny a w ogóle to jest już późno), ale czy on na pewno dobrze działa? ;]
Bo tak na szybko analizując zastanawiam się co on w ogóle robi...

Lucky1978
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 01 mar 2014, 21:57

Re: Pomoc MQL4

Nieprzeczytany post autor: Lucky1978 »

Działa,działa dzięki napisaniu tego tworu sporo się nowego nauczyłem jest to moja metoda na naukę programowania czyli postawić sobie zadanie i je zrealizować. ;-)
A robi to:
Czyli w skrócie gdy zlecenie kupna zamykam na take profit to w tym momencie zawieram kolejną transakcje kupna a jak zamykam na stop loss to automatycznie zawieram transakcje sprzedaży. I odwrotnie w przypadku zlecenia sprzedaży take profit kolejne zlecenie sprzedaży stop loss zlecenie kupna.

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: Pomoc MQL4

Nieprzeczytany post autor: WojtexWay »

hehehe, wczoraj nie zwróciłem na to uwagi, ale co to jest:

Kod: Zaznacz cały

x=x++;
?! ;D Przecież x zawsze zwróci wartość 0 O_o. W sumie to tylko dlatego ten kod "jakoś" działa... Gdybyś dał x++, ++x, x=++x lub coś w tym stylu to mogłyby się dziać ciekawe rzeczy :)
Poza tym warunek:

Kod: Zaznacz cały

if(OrderClosePrice()<OrderOpenPrice()) buy=false;
if(buy) oraz

Kod: Zaznacz cały

if(OrderClosePrice()>OrderOpenPrice()) buy=true;
dla !buy
wykona się niezależnie od tego co zwróci OrderSelect (jego if tu nie sięga!)

Lucky1978
Stały bywalec
Stały bywalec
Posty: 25
Rejestracja: 01 mar 2014, 21:57

Re: Pomoc MQL4

Nieprzeczytany post autor: Lucky1978 »

OK rozumiem ale jednak wygląda na to że pobiera wartości true i false bo zmienia kierunki wchodzenia w zlecenia w zależności od spełnienia warunku if.

-- Dodano: 04 mar 2014, 20:06 --

Teraz się morduje w sumie z tym samym bo chcę aby w zależności od warunku if była zwiększana stawka zlecenia i nie wychodzi mi jakoś :-(

Kod: Zaznacz cały

  #property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
extern double TakeProfit=60;
extern double StopLoss=60;
extern double LotSize=0.3;
double bid_price;
double pips;
double Change_LotSize;
extern double step_of_pips=60;
double FAccount;
int x=0;
int OnInit()
  {
   double ticksize = MarketInfo(Symbol(),MODE_TICKSIZE);
   if (ticksize == 0.00001 || ticksize == 0.001)
       pips = ticksize*10;
   else pips= ticksize;
        bid_price=Bid;
        FAccount=AccountBalance();
   return(INIT_SUCCEEDED);
  }


void start()
   { if(Change_LotSize>0.1)Change_LotSize=0;

     if (OrdersTotal()==0)
     { 
  
    if (Ask>bid_price+step_of_pips*pips)
      {   OrderSend(Symbol(),OP_BUY,LotSize+Change_LotSize,Ask,3,Ask-(StopLoss*pips),Ask+(TakeProfit*pips),NULL,0,0,Green); 
          bid_price=bid_price+step_of_pips*pips;
          if(OrderSelect(x,SELECT_BY_POS,MODE_HISTORY)==True)
          if(OrderClosePrice()<=OrderOpenPrice())Change_LotSize=Change_LotSize+0.1;
          if(OrderClosePrice()>=OrderOpenPrice())Change_LotSize=0;
         
         }
   
    if (Bid<bid_price-step_of_pips*pips)
      {  
          OrderSend(Symbol(),OP_SELL,LotSize+Change_LotSize,Bid,3,Bid+(StopLoss*pips),Bid-(TakeProfit*pips),NULL,0,0,Red);
          bid_price=bid_price-step_of_pips*pips;
          if(OrderSelect(x,SELECT_BY_POS,MODE_HISTORY)==True)
          if(OrderClosePrice()>=OrderOpenPrice())Change_LotSize=Change_LotSize+0.1;
          if(OrderClosePrice()<=OrderOpenPrice())Change_LotSize=0;
        
        }
  }} 
-- Dodano: 04 mar 2014, 20:07 --

Nie kumam chyba OrderSelect do końca

ODPOWIEDZ