Share
Go down
gandra
Global Moderator
Number of messages : 3578
Points : 8505
Date of Entry : 2013-01-13
Year : 49
Residence Country : Serbia
View user profilehttps://www.mql5.com/en/users/drgandrahttps://www.fxjunction.com/profile/gandra/account/I

ma1 Re: OOP full EA mql5 code

on Thu Jul 18, 2019 6:03 pm
Pozdrav svima,

U koliko ste preuzeli ovaj EA. Potrebno je da ulozite  mali napor i rezultat moze da bude pozitivan. Danas sam pravio nove izmene u signal  logici i ubacio potpuno novu. Rezultat je sledeci:
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]

Koliko se secam, prosli put je bio profit negde oko 164 dolara. Sad je profit preko 300. Vreme testiranja je od pocetka ovog meseca pa sve do dana danasnjeg. Znaci nekih 17 dana. 

Sledeci test je na GBPUSD sa potpuno istim parametrima , sto se tice depozita, leveridza, i vremenskog perioda. Rezultat je jos bolji i total profit je veci od $400.  Pogledajte:
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.].

Sledeci valutni par koji je testiran je EURJPY inputi su isti kao  u predhodna dva testa. Ovde je profit nesto manji i iznosi svega 300 i nesto dolara.
[You must be registered and logged in to see this image.]


Dobro. Sad cu da pokusam da nadjem neki valutni par koji nije bas tako profitabilan. I evo to je  NZDUSD. Ovde je EA napravio minus od par stotina dolara.Da pogledamo:
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]

Znaci ima jos da se radi. Sledeci EA koji ce biti objavljen je baziran na custom indikatoru koji  kalkulise velicinu japaskih sveca , trazi preokret trenda i na osnovu toga daje signal koji se graficki prikazuje na grafikonu  u bilo kom vremenskom opsegu. Indikator je ful operativan i moze se odmah koristiti. Na osnovu njega je sklepan jedan EA. Znaci dobijate indikator i EA na kom mozete videti kako i na koji nacin integirsati custom  indikator modul. I ujedno mozete videti kako se pravi indikator. Projekat je vec gotov , i bice objavljen narednih dana kao posebna tema. Evo i snimka ekrana sa mt5 platforme kako indikator izgleda,sta radi i mozete videti kako ovaj EA trguje.
[You must be registered and logged in to see this image.]

Toliko, odoh.
                              bad boys
gandra
Global Moderator
Number of messages : 3578
Points : 8505
Date of Entry : 2013-01-13
Year : 49
Residence Country : Serbia
View user profilehttps://www.mql5.com/en/users/drgandrahttps://www.fxjunction.com/profile/gandra/account/I

ma1 Re: OOP full EA mql5 code

on Tue Jul 16, 2019 11:39 am
Pozdrav svima,

Kao prvo sto zelim da napomenem je da u pojedinim slucajevima stvarno gresim u tekstu , pogotovo ako ga pisem kasno , jer neki put jedino tada imam slobodnog vremena. Tako da sam npr. napisao "objektivno orijentisanje", hahaha, ili neke druge nebuloze, umor , i posle ponocni tekstovi, itd..

U svakom slucaju greske su ipravljene kao i jedna mala greska u signal logici . Mislim signal logika je boza. Znaci ne mozete da je koristite jer nije profitabilna. Vec uradite svoju. Sve ostalo je podeseno i sljaka ok. Takodje ovo je osnovni ea u samo par stotina linija koda, koji mozete nadogradjivati kako vam volja. Na primer  ubacitete funkciju za vreme Time , da vam se buy ili sell nalozi otvaraju samo na novi bar, ubacite friz opciju , ubacite MqlTick opciju , i tako dalje i tako vise. 

Sad zelim da vam pokazem sta dobijate ako samo , napominjem samo malo poradite na signal logici , a sve ostalo ostaje potpuno isto kao pre. 
[You must be registered and logged in to see this image.]
TesterGraphReport2019.07.16

Znaci nova signal logika je testirana na EURUSD valutnom paru  u vremenskom periodu od 2019.07.01 do 2019.07.16 ,  na 1 minute OHLC , na H1 , sa startnim depozitom u visini od 1000 dolara, i leveridzom od 1:25.
Slika grafa kako izgleda :
[You must be registered and logged in to see this image.]

Sad kliknite na spojler da pogledate  Strategy Tester Report. Izvestaj o nalozima  je delimican jer ih ima par hiljada. Bitan je prvi deo izvestaja, pogledajte.
Strategy Tester Report - Ime brokera sam obrisao - Meta Trader 5 (Build 2085) - by Dragna Drenjanin:

[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]

Mislim ima tu jos dosta posla.  Znaci ovaj ea je zaradio preko 168 dolara za nedelju dana u ful automatik modu bez ljudske intervencije. Ako pak ipak kontrolisete sta vase cvokocalo radi , s'vremena na vreme , mogli ste skinuti profit i rucno . Tako da u tom slucaju bi ste imali preko 600 usd. Namena EA je ipak ful automatik trgovanje od ponedeljka do petka , 24 casa svaki dan. Da bi to bilo moguce najbolje je da zakupite negde VPS. Koliko znam na amazonu to bi vas kostalo nekih 30 dolara mesecno. Mislim cena zavisi od vasih zelja. Ali za neki solidan sistem to bi bilo otrpilike to. Takodje i MQL5 nudi VPS servis , tako da je i to odlicna opcija. Ili imate drugi izbor, da vas racunar radi 24 sata od ponedeljka do petka. Pa sad vi vidite sta je bolje.

Sto se tice ovog robota ja cu ici dalje u njegovom razvoju. Mislim da sam to napomenuo i u ranijem tekstu. Sledeci na redu je jedan ili dva indikator modula. Moduli ce biti dostupni i vama u sledecem nastavku. Takodje uskoro planiram da sve robote koje sam javno objavio ovde , budu i javno dostupni na mom GitHub profilu, a posle malog sredjivanja koda , i izbacivanja nepotrebnih stvari , odnosno lickanja. 

I to bi bilo to za sada. Znaci imate bazu , ukljucite mozak  i ubacite vase detalje . Rezultat moze da bude veoma pozitivan. Takodje jos nesto. Ja se ipak zalazem za kontrolu robota. Znaci nije samo  ono : "Push the button and forgot". To ne preporucujem ni u kom slucaju.

Odoh
      bad boys
gandra
Global Moderator
Number of messages : 3578
Points : 8505
Date of Entry : 2013-01-13
Year : 49
Residence Country : Serbia
View user profilehttps://www.mql5.com/en/users/drgandrahttps://www.fxjunction.com/profile/gandra/account/I

ma1 OOP full EA mql5 code

on Sun Jul 14, 2019 2:32 am
Dobro vece svima,

malo je kasno ali tad mozak najbolje sljaka. Kome se spava neka brate spava. Mislim da sam obecao da cu  kompletirati jedan basic EA sa trejling stopom i breakeven kao primer, ali za sad nista od toga. Mislim bice i to , sad mi je namera da vam pokazem kako i na koji nacin da napisete EA koristeci OOP , odnosno objektno orijentisano programiranje. Prosto receno koristite klase, nista nije baku. EA je kompletan i operativan i sastoji se iz jednog modula gde je klasa i naravno glavnog modula gde se nas kod izvrsava odnosno trguje. U samom kodu nisam davao nikakva objasnjenja , videcete prosto je za razumevanje , jer kod nije veliki , a i videcete kako se uvozi eksterni modul i klasa.  Sad prvo grafikon sa testiranja od malo pre:
[You must be registered and logged in to see this image.]
Jebiga zaboravio sam koji sam valutni par testiro. Ali period nisam. Datum testa  je od 01.07.2019 do 14.07.2019. Znaci zadnjih trinest dana. I, sta kazete jel ima potencijala. Ovaj projekat ide na moj github u private repository. Buy/Sell logika je veoma,veoma basic cisto da bi ea radio poso da se vidi neki graf i tako to. E sad snimak ekrana sa  MT5 platforme:
[You must be registered and logged in to see this image.]
[You must be registered and logged in to see this image.]
A sad vidim EURUSD, Smile
Ludnica ,hahaha, gomila naloga. Dobro moram ovo kasnije da sredim kao i da dodam matematiku , nove  buy/sell uslove. Znaci ovo je projekat na kom cu tek da radim. Vi imate ekskluzivno pravo da dobijete osnovni model ovog robota, koji kasnije mozete unapredjivati kako je vama volja. Mozete mu dodati neki indikator npr  bollinger bands ili MA ili neki drugi , pojma nemam, kako vam volja.

Kad odete na meta editor  kliknete na new a zatim selektujete  opciju Inklude(*.mqh) , kliknete, next,  upisete neko iime , zatim next , next, finish,  dobijate generisan templejts. Ovo je malo uputstvo za pocetnike. Ako imate iskustva onda ovo zanemarite. Zatim pljusnite kod koji se nalazi u spojleru ispod , i to vam je to.
module with class:

Code:

//+------------------------------------------------------------------+
//|                                              module_oo.mqh       |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                               [You must be registered and logged in to see this link.] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "drenjanind@mail.ru"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Order
  {
private:
   MqlTradeRequest   o_request;
   MqlTradeResult    o_result;
  
   int               OrderSL;
   int               OrderTP;

   double            order_SL;
   double            order_TP;
  
public:
     Order()
     {
      ZeroMemory(o_request);
      o_request.action        = TRADE_ACTION_DEAL;
      o_request.magic         = 0;
      o_request.symbol        = Symbol();
      o_request.volume        = 0.1;
      o_request.price         = 0;
      o_request.sl            = 0;
      o_request.deviation     = 5;
      o_request.type_filling  = ORDER_FILLING_FOK;
      o_request.type_time     = ORDER_TIME_GTC;
      o_request.expiration    = 0;

      OrderSL  = 0;
      OrderTP  = 0;

      order_SL= 0;
      order_TP= 0;
     }
  
   double GetSL(bool CheckBuyOrder)
   {
    if (OrderSL > 0)
     {
      if (CheckBuyOrder)
       {
        return SymbolInfoDouble(o_request.symbol, SYMBOL_ASK) - OrderSL * _Point;
       }
      else
       {
        return SymbolInfoDouble(o_request.symbol, SYMBOL_BID) + OrderSL * _Point;
       }
     }
     else return(order_SL);
   }
  
  double GetTP(bool CheckBuyOrder)
   {
    if (OrderTP > 0)
     {
      if (CheckBuyOrder)
       {
        return SymbolInfoDouble(o_request.symbol, SYMBOL_ASK) + OrderTP * _Point;
       }
      else
       {
        return SymbolInfoDouble(o_request.symbol, SYMBOL_BID) - OrderTP * _Point;
       }
     }
     else return(order_TP);
   }
  
  
   bool Execute()
     {
      bool err=OrderSend(o_request,o_result);
      if(!err)
        {
         Print("Greska prilikom izvrsenja naloga!");
        }
      return(err);
     }

   bool Buy()
     {
      o_request.type  = ORDER_TYPE_BUY;
      o_request.price = SymbolInfoDouble(o_request.symbol, SYMBOL_ASK);
      o_request.sl    = GetSL(true);
      o_request.tp    = GetTP(true);
      return(Execute());
     }
    
   bool Sell()
     {
      o_request.type  = ORDER_TYPE_SELL;
      o_request.price = SymbolInfoDouble(o_request.symbol, SYMBOL_BID);
      o_request.sl    = GetSL(false);
      o_request.tp    = GetTP(false);
      return(Execute());
     }

   bool Close()
     {
      bool ret;
      if(PositionSelect(o_request.symbol))
        {
         if(ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE))==POSITION_TYPE_BUY)
           {
            o_request.type  = ORDER_TYPE_SELL;
            o_request.price = SymbolInfoDouble(o_request.symbol, SYMBOL_BID);
           }
         else
           {
            o_request.type  = ORDER_TYPE_BUY;
            o_request.price = SymbolInfoDouble(o_request.symbol, SYMBOL_ASK);
           }

         double vol       = o_request.volume;
         o_request.sl     = 0;
         o_request.tp     = 0;
         o_request.volume = PositionGetDouble(POSITION_VOLUME);
         ret=Execute();
         o_request.volume=vol;
        }
      else
        {
         Print("ZATVORI: Ne mozete odabrati poziciju! ");
         ret=false;
        }
      return(ret);
     }

   void SetMagic(int magic)
     {
      o_request.magic=magic;
     }

   void SetComment(string comment)
     {
      o_request.comment=comment;
     }

   void SetLots(double lots)
     {
      o_request.volume=lots;
     }

   void SetSL(int sl)
     {
      order_SL = 0;
      OrderSL  = sl;
     }

   void SetTP(int tp)
     {
      order_TP = 0;
      OrderTP  = tp;
     }
    
  void Signal()
   {

   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(NULL,0,0,100,rates);
   if(copied<=0)
     {
      Print("Error copying price data ",GetLastError());
     }
   else
     {
      Print("Copied ",ArraySize(rates)," bars");
     }
    
   if(rates[0].open > rates[0].close && rates[0].close < rates[1].close && rates[1].high < rates[2].low && rates[1].high < rates[3].low)
    {
    Buy();
    }
  else if (rates[0].open < rates[0].close && rates[0].close > rates[1].close && rates[1].high > rates[2].low && rates[1].high > rates[3].low)
    {
     Sell();
    }
  
   }
  
  };
//+------------------------------------------------------------------+

Sad je potrebno da generiste  templejts za EA. Znaci opet klik na new ,selektujete Expert Adviser (template), next , upisete neko  ime, zatim next ,next,  finish, obriste sve i pljusnete kod ispod.
oo_ea_v0.mq5:

Code:

//+------------------------------------------------------------------+
//|                                                     oo_ea_v0.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                               [You must be registered and logged in to see this link.] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "drenjanind@mail.ru"
#property version   "1.00"
// Uvozimo nas modul. Link je malo duzi zato sto je moj fajl smesten u "Shared Project". Jer ce kasnije ici na Github.
#include <C:\Users\Korisnik\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Shared Projects\robo-traders\expert-advisors\oo_ea\modul_oo.mqh>
// ovde smo uvezli nasu klasu koju smo kreirali u nasem modulu
Order *ord;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ord=new Order();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   delete ord;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// kao sto primecujete ovde nema mnogo koda jer sve je vec odradjeno u modulu
      ord.Signal();
      ord.SetLots(0.01);
      ord.SetSL(2000);
      ord.SetTP(10);
    
  }
//+------------------------------------------------------------------+


I to bi bilo to , odoh bad boys
Sponsored content

ma1 Re: OOP full EA mql5 code

Back to top
Permissions in this forum:
You cannot reply to topics in this forum