English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Daha İyi Bir Programcı Nasıl Olunur? (4. Bölüm): Programlama hızını artırmak

Daha İyi Bir Programcı Nasıl Olunur? (4. Bölüm): Programlama hızını artırmak

MetaTrader 5Örnekler | 4 Nisan 2022, 13:10
386 0
Omega J Msigwa
Omega J Msigwa

Giriş

Daha hızlı şekilde kod yazmak, her geliştiricinin hayalidir. Hiç kimse küçük bir program veya kod parçası yazmak ya da geliştirme sürecini yavaşlatan bir sorunu çözmek için saatler hatta günler harcamak istemez.

Daha hızlı geliştirme

Her kodlayıcı daha hızlı olmak ister

  • Belki YouTube'da anlatıcının hızına yetişemeyecek kadar yavaş olduğunuz için takip etmekte zorlandığınız MQL5 kodlama videoları izlediniz ve o seviyeye kendi başınıza gelmek istiyorsunuz.
  • Belki de olağanüstü kodlama hızına sahip bazı geliştiriciler gördünüz, kodlaması saatler sürebilecek karmaşık bir algoritmayı birkaç dakika içinde yazabiliyorlardı.
  • Veya Freelancete işleri daha hızlı teslim edebilmek ve rakiplerinizin önünde olabilmek için daha hızlı ve etkili bir biçimde kod yazabilmek istiyorsunuz.
  • Ya da eşinizi/partnerinizi klavyedeki yeteneklerinizle, daha az hatayla veya hiç hata olmadan kod yazabilmenizle, kısa sürede karmaşık algoritmalar oluşturabilmenizle etkilemek istiyorsunuz.
  • Ya da müşterilerinizin e-posta veya MQL5 Sohbet yoluyla size spamladığı hataları düzeltmek için Marketteki ürünlerinize hızlıca güncellemeler yayınlayabilmek istiyorsunuz.

Arkanıza yaslanın, kaleminizi ve defterinizi alın ve dikkatli olun çünkü kendiniz ve müşterileriniz için yüksek kaliteli işler kodlarkenki hızınızı nasıl artıracağınıza dair bilgi bombaları bırakmak üzereyim.

Kodlama hızınızın maksimum potansiyeline ulaşmanız için bunlardan hiçbirisine ihtiyacınız yok:

    • Kapsamlı kodlama deneyimi
    • En iyi mekanik klavye
    • Klavyede yazarken çok iyi bir kas hafızası
    • Bilgisayarınızda gigabaytlarca RAM, çok sayıda çekirdek, güçlü GPU

Hızlı geliştirici vs hızlı kodlayıcı

Yazıma başlamadan önce, öncelikle geliştirici ile kodlayıcı arasındaki farkı açıklamanın daha iyi olacağını düşünüyorum.

Geliştirici Kodlayıcı
Geliştiriciler daha deneyimli kod yazarlarıdır. Projedeki hemen hemen her şeyden sorumludurlar, örneğin:

Tasarım, iş planlama, kodlama ve proje ile ilgili her şey.                                                                                                                                                                                                                                                                                                                            
Kod yazabilen herkes, teknoloji endüstrisinin dışındaki kişiler tarafından genellikle kodlayıcı olarak adlandırılır. Ancak, genellikle kodlayıcılar, en az eğitimli veya deneyimli programcılar (geliştirici) olarak kabul edilir. Bu kişiler programcılar veya geliştiricilerle aynı algoritmik bilgiye sahip değillerdir çünkü genellikle bu alanda yeni başlıyorlardır ve sadece tek bir kodlama dilinde yeteneklilerdir. Çoğu zaman, kodlayıcılara projede kullanılmak üzere geliştiricilere kolaylık sağlayacak kod parçaları yazma işi verilir.

Bir kodlayıcı olarak, projenin içindeki her şeyi bilmenize gerek yoktur. Örneğin, freelancete bir müşteri, Uzman Danışmanına bir takip eden durdurucu eklemek isteyebilir ve bunun için bir kodlayıcı kiralayabilir. Kodlayıcı doğrudan o bölümü kodlar, Ontick fonksiyonunda çağırır ve ardından müşteriye göndermeden önce çalışıp çalışmadığından emin olmak için de onu MetaTrader 5'te birkaç kez test eder.

Bu makalede, geliştirici terimini daha geniş anlamda inleyeceğiz - sistemlerinizi geliştirirken nasıl daha hızlı hale gelebilirsiniz. Bu nedenle, tasarım, iş etiği, kullanılan araçlar, kodlama süreci, hata ayıklama vb. dahil olmak üzere farklı proje bölümlerine değineceğiz. 


Nasıl daha hızlı programlama yapılır

01: Hatalardan ve kötü mimariden kaçının

Geliştiriciler kod yazmaya çok zaman harcadıklarını düşünürler, ancak gerçekte zamanımızın çoğunu kodu okuyarak, düzelterek, hata ayıklayarak ve ne yapacağımızı bulmaya çalışarak harcıyoruz.

30 dakika boyunca kodladığınız bir kod parçasının hatalarını ayıklamak bazen üç saatinizi alabilir, bu nedenle ne kadar çok hatanız olursa projenizi kodlamayı bitirmeniz o kadar uzun sürer. Yani, hatalar nedeniyle tüm süreç yavaşlar. Bu nedenle, en iyi çözüm hatalardan olabildiğince kaçınmaktır.

kötü mimari + hatalar = dünyanın sonu (şaka yapıyorum)

Projenizde hataların olması kötüdür, ancak yalnızca kötü mimari nedeniyle hataları ayıklayamamak veya kolayca tespit edememek daha da kötüdür. Örneğin, hataları düzeltmek için bana verilen bir Uzman Danışmandaki şu kod parçasına bakın.

ouble NPB=ND(m_account.Balance()*PortionPC,2);
if(CbT==0||PortChange<0||(PortChange>0&&NPB>PortionBalance))PortionBalance=NPB;
if(Pb+Ph<0)DrawDownPC=-(Pb+Ph)/PortionBalance;
if(!FirstRun&&DrawDownPC>=MaxDDPercent/100)
{       ET(A,displayColorLoss,"Equity Stop Loss Reached");
        if(PlaySounds)PlaySound(AlertSound);
        return(0);
}
if(-(Pb+Ph)>MaxDD)MaxDD=-(Pb+Ph);
MaxDDPer=MathMax(MaxDDPer,DrawDownPC*100);
if(SaveStats)Stats(false,TimeCurrent()<NextStats,PortionBalance,Pb+Ph);

//+-----------------------------------------------------------------+
//|                                                                 |
//+-----------------------------------------------------------------+
double StepAB=InitialAB*(1+StopTradePercent),StepSTB=m_accout.Balance()*(1-StopTradePercent), NextISTB=StepAB*(1-StopTradePercent);
if(StepSTB>NextISTB){   InitialAB=StepAB;
        StopTradeBalance=StepSTB;       }
        
double InitPortion=StopTradeBalance*PortionPC;
if(PortionBalance<InitPortion)
{       if(CbT==0)
 {      AllowTrading=false;
        if(PlaySounds)PlaySound(AlertSound);
        Print("Portion Balance dropped below stop trade percent");
        MessageBox("Reset EA, account balance dropped below stop trade percent on "+Symbol()+Period()," Warning",48);
        return(0); }
        else if(!ShutDown&&!RecoupClosedLoss)
        {       ShutDown=true; if(PlaySounds)PlaySound(AlertSound);
                Print("Portion Balance dropped below stop trade percent");
                return(0);              }
}

Mimarinin ne kadar kötü olduğunu görüyorsunuz. Bu nedenle, kodda çok sayıda hata olması da şaşırtıcı değil. Gördüğünüz gibi, kod o kadar kafa karıştırıcı ki, bir bakışta anlamak gerçekten zor.

Çok şanssız da olabilir (benim gibi), 10.000 satırının tamamının bu örneğe benzediği bir programdaki hataları düzeltmek için freelance olarak iş almış olabilirsiniz (üç haftadan fazla zaman harcadım, ancak hala bitiremedim).

Burada söylemek istediğim şey şu: kodlama kalıplarınız, fonksiyonları adlandırma şekliniz, değişkenleri oluşturma şekliniz vb. konusunda her zaman tutarlı olun, size uygun olanı seçin ve sizin ve diğer herkesin kullanmasının kolay olabileceğinden emin olun.


02: Hızlı şekilde hata ayıklamayı öğrenin

Hataların tüm süreci yavaşlattığını ve zamanımızı çaldığını daha yukarıda bahsettiğim ilk maddede gördük. Hatalarla uğraşmak ve hata ayıklamak çok geniş bir konudur, tek bir makaleye sığdırılamaz. Hata ayıklama hakkında daha fazla bilgi edinmek için herkesin MQL5 Programlarında Hata Ayıklama makalesini okumasını tavsiye ederim.

Programlamada hızlı olmak için çok hızlı bir şekilde nasıl hata ayıklanır öğrenilmesi gerekiyor, işte bazı hata ayıklama hileleriyle hızlanmanın yolları:

01: MetaEditor'da stilist kullanın.

Stilist doğrudan hata ayıklama ile ilgili değildir, ancak bunun için çok önemli bir adımdır. Bu harika araç, kodun görünümünü güzelleştirir, daha net hale getirir ve okunmasını kolaylaştırır.

02: Daha fazla Print ve Comment kullanın.

Neyin işe yaramadığını hızlıca bulmak ve anlamak adına tüm şüpheli alanlar için daha fazla çıktı ve yorum ekleyin.

Bu, beklemediğiniz bir hatayı yakalamanıza yardımcı olabilir.

03: Nasıl çalıştığını tam olarak anlamadan hiçbir şeyi değiştirmeye çalışmayın.

Elbette birçok kişi bunu yaşamıştır: sistemin düzgün çalışması için bir kod parçasını silersiniz ve ardından sorunun bu kodla ilişkili olmadığı ortaya çıkar. Sonrasında, o kod parçasını yeniden yazmak için zaman harcamanız gerekir ve bu süreç boyunca her şeyi doğru yapacağınızın, daha da fazla hata eklemeyeceğinizin garantisi yoktur. 

Herhangi bir şeyi silmeden önce, yerleşik bir fonksiyon mu yoksa bir metot mu diye dokümantasyondan okuyun. Hala emin değilseniz forumda sorun. Ben bazı anlarda şüpheye düştüğümde, tüm kodu bir metin dosyasına kopyalarım. Bu yüzden kod üzerinde silme, değiştirme yapmaktan ve yeni çözümler denemekten korkmuyorum, daha sonra hatalardan dolayı çalışmayan kaynak koda son kopyaladığım çalışan kod kopyasını uygulayabilirim.


03: Kütüphaneler özel amaçlar için oluşturulmuştur

Kütüphanelerle çalışırken sınıfları amaçlarına uygun olarak kullanmak çok önemlidir. Tembellik veya başka nedenlerle önemli adımları atlamak kaçınılmaz şekilde felakete yol açacaktır.

Standart Kütüphaneyi kullanıyorsanız, kütüphane sınıflarını kodlarınıza uygularken veya bunlara erişirken kütüphane geliştiricilerinin açıkladığı standart prosedürleri izlemeniz önerilir.

Örneğin, buradaki gibi Ticaret Sınıfları kütüphanesine tembelce referans vermek ve anlaşılmaz ve tutarsız adlar kullanmak yerine,

#include <Trade\AccountInfo.mqh> // işlem hesabının özellikleriyle çalışmak için sınıf
#include <Trade\SymbolInfo.mqh>  // ticaret enstrümanının özellikleriyle çalışmak için sınıf
#include <Trade\OrderInfo.mqh>   // bekleyen emrin özellikleriyle çalışmak için sınıf
#include <Trade\OrderHistoryInfo.mqh>  // geçmişteki emrin özellikleriyle çalışmak için sınıf
#include <Trade\PositionInfo.mqh>   // açık pozisyonun özellikleriyle çalışmak için sınıf
#include <Trade\DealInfo.mqh>       // geçmişteki işlemin özellikleriyle çalışmak için sınıf
#include <Trade\Trade.mqh>          // ticaret işleminin gerçekleştirilmesi için sınıf
#include <Trade\TerminalInfo.mqh>   // terminal ortamının özelliklerini almak için sınıf
//--- 
CAccountInfo       ac;
CSymbolInfo        symb;
COrderInfo         orders;
CHistoryOrderInfo  hist_orders;
CPositionInfo      pos;
CDealInfo          _clos;
CTrade             my_trade;
CTerminalInfo      info;

tutarlı ve anlaşılır kütüphane çağrıları kullanmalısınız. Bunu yapmanın en iyi yolu, sınıf üyeleriyle çalışmaktır; m_*** - belirli bir sınıfın üyelerini ifade eder.

Şunun gibi:

#include <Trade\AccountInfo.mqh> // işlem hesabının özellikleriyle çalışmak için sınıf
#include <Trade\SymbolInfo.mqh>  // ticaret enstrümanının özellikleriyle çalışmak için sınıf
#include <Trade\OrderInfo.mqh>   // bekleyen emrin özellikleriyle çalışmak için sınıf
#include <Trade\OrderHistoryInfo.mqh>  // geçmişteki emrin özellikleriyle çalışmak için sınıf
#include <Trade\PositionInfo.mqh>   // açık pozisyonun özellikleriyle çalışmak için sınıf
#include <Trade\DealInfo.mqh>       // geçmişteki işlemin özellikleriyle çalışmak için sınıf
#include <Trade\Trade.mqh>          // ticaret işleminin gerçekleştirilmesi için sınıf
#include <Trade\TerminalInfo.mqh>   // terminal ortamının özelliklerini almak için sınıf
//--- 
CAccountInfo       m_account;  // AccountInfo sınıfının üyeleri
CSymbolInfo        m_symbol;   // SymbolInfo sınıfının üyeleri
COrderInfo         m_order;    // OrderInfo sınıfının üyeleri
CHistoryOrderInfo  m_orderhistory; // HistoryOrderInfo sınıfının üyeleri
CPositionInfo      m_position; // PositionInfo sınıfının üyeleri
CDealInfo          m_deal;     // DealInfo sınıfının üyeleri
CTrade             m_trade;    // Trade sınıfının üyeleri
CTerminalInfo      m_terminal; // TerminalInfo sınıfının üyeleri

Ayrıca, kütüphane referansının sonuna yorum eklemeyi unutmayın, böylece kod yazarken bir daha ona erişmeye çalıştığınızda referansın neyle ilgili olduğunu yorum size hatırlatır. 

Ek olarak, kodlama hızınızı artırmak adına, her seferinde sıfırdan kodunuzu yazmaya çalışmak yerine, görevlerinizi yerine getirmek için hazır Standart Kütüphaneleri kullanmayı tercih etmelisiniz. Bu kütüphaneler, MQL5 diliyle optimum şekilde çalışma için profesyonel programcılar tarafından oluşturulmuştur. DRY (kendini tekrar etme) ilkesini takip etmenizi sağlar ve geliştirme sürecini hızlandırır. Standart kütüphanelerin yanı sıra Kod Kütüphanesinde yayınlanan veya piyasada bulunan birçok ek kütüphaneyi de kullanmanızı tavsiye ediyorum. 

Sizce bu ikisi arasından kim daha hızlı kodlar:

Her şeyi sıfırdan kodlayan (muhtemelen bir noob) Standart Kütüphaneyi kullanarak kodlayan
double SymbolAsk(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_ASK);
}

double SymbolBid(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_BID);
}

int SymbolDigits(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
}

double SymbolLotSize(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE);
}

double SymbolLotStep(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);
}

double SymbolMaxLot(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
}

double SymbolMinLot(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);

}


#include <Trade\SymbolInfo.mqh>
CSymbolInfo   m_symbol; 

input string Input_symbol = "EURUSD";
//+------------------------------------------------------------------+
//| Uzman Danışman başlatma fonksiyonu                               |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
     string symbol = Input_symbol=="" ? Symbol() : Input_symbol;
      m_symbol.Name(symbol); // CSymbolInfo sınıf nesnesi için sembol adını ayarlar
//---
   return(INIT_SUCCEEDED);
  } 
//+------------------------------------------------------------------+
//| Uzman Danışman tik fonksiyonu                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
      m_symbol.RefreshRates(); // son fiyatı almak için yenile
      double    SymbolAsk = m_symbol.Ask();
      double    SymbolBid = m_symbol.Bid();
      double    SymbolDigits = m_symbol.Digits();
      double    SymbolLotSize = m_symbol.ContractSize();
      double    SymbolLotStep = m_symbol.LotsStep();
      double    SymbolMaxLot = m_symbol.LotsMax();
      double    SymbolMinLot = m_symbol.LotsMin();
  }



















Standart Kütüphane kullanıcıları, kullanmayanlara göre 3 kat+ daha üretkendir ve programlarında daha az koda sahip olduklarından bahsetmiyorum bile, bu da daha az hata anlamına gelir.


04: Karmaşık kodlardan kaçının

Kodlama kariyeriniz boyunca, muhtemelen bir kişinin Uzman Danışmanında aşağıdakine benzer bir kod görmüşsünüzdür:

        if(LbT>0)
        {       BEb=ND(BEb/LbT,Digits());
                if(BCa<0)BEb-=ND(BCa/PipVal2/(LbB-LbS),Digits());
                if(Pb>PbMax||PbMax==0)PbMax=Pb;
                if(Pb<PbMin||PbMin==0)PbMin=Pb;
                if(!TradesOpen)
                {       FileHandle=FileOpen(FileName,FILE_BIN|FILE_WRITE);
                        if(FileHandle>-1)
                        {       FileWriteInteger(FileHandle,TbF);
                                FileClose(FileHandle);
                                TradesOpen=true;
                                if(Debug)Print(FileName+" File Written: "+TbF);
                        }
                }
        }

Bu kod bloğunu yazdığınız an kolay olabilir, ancak hata ayıklamak istediğiniz anda onu okumak kolay olmayacaktır, büyük ihtimalle değişkenlerin bazılarını unutmuş olacaksınız ve çoğu şeyi tekrar yazmanız gerekecek. Bunun ne kadar zaman kaybı olduğunu bir düşünün!

Karmaşık algoritmalar yazmak, hem kendi kafanızı karıştıracak hem de insanların sizden nefret etmesine neden olacak.

Tüm mantığı tek bir yere, bir sürü işlemi tek bir fonksiyona sokmak iğrenç bir şeydir — her şeyin çalıştığından emin olurken kodu dikkatli bir şekilde düzenlemek için çok zaman harcayacaksınız.

Belirli işlemlere ihtiyacınız varsa, bu, her biri için farklı fonksiyonlar oluşturmaya değer olabilir — eylemlerinizi düzene sokarlar, bir diğerine geçmeden önce bir şeyi tamamlamanızı sağlarlar.


05: Dikkat dağıtıcı unsurları ortadan kaldırın

"Dikkatinizin dağıldığının farkında olun. Yapmanız gereken şeyi yapmayı bıraktığınızda ve kendinizi değersiz şeyler düşünürken bulduğunuzda bunun bir dikkat dağınıklığı olduğunu anlayın."
— Beverly R. Imes

Telefonunuzu sessizde tutun (veya mümkünse telefonunuzu tamamen kapatın). Kendinizi kontrol etmeyi öğrenin - her seferinde telefonu açıp sosyal ağlardaki beğenileri veya paylaşımları kontrol etmenize gerek yok. Böyle yaparsanız üretken olamazsınız, çok verimsiz kalırsınız. Eviniz gürültülü ise, projenizi sakince bitirebileceğiniz sessiz bir yer bulmaya çalışın.

Proje gerçekten önemliyse, tüm dikkat dağıtıcı unsurları ortadan kaldırın: kapıyı kapatın, telefonunuzu kapatın, sosyal ağları kapatın, konsantre olun ve işi tamamlayın.

Geliştiriciler olarak, pek çok ilginç şeyin sadece birkaç tık ötemizde, elimizdeki telefonlarda olduğu bu modern dünyada odaklanma konusunda çok zor zamanlar geçiriyoruz.

Projede zor bir göreve ulaşıldığında ve bunun için çözüm ya da kod akla gelmediğinde, oradan uzaklaşıp dünyada neler olup bittiğini görmek ya da farklı şeylerle uğraşmak, ilgilenmek çok cazip geliyor.

Tabi ki molalar vermeniz ve arkadaşlarınızla sohbet etmeniz gerekiyor, beni yanlış anlamayın. Beni bekleyen çok fazla MQL5 ve web geliştirme projesi olsa bile günün 24 saati bilgisayar başında oturup kod yazmıyorum. Ama herkesin kendine uygun bir programa bağlı kalması gerektiğine inanıyorum. Programınız henüz sosyal medyayı kontrol etmenize izin vermiyorsa, onu açmayın. Eğer programınızın o zamanı kodlama zamanıysa, sonuna kadar o zamana bağlı kalın (yapılacaklar ne kadar kafa karıştırıcı veya zor olursa olsun, pes etmeyin). Dürüst olmak gerekirse, başka acil meselelerim yoksa, projede daha uzun süre oturacağım şekilde programımı düzenliyorum.

İnanın bana, tüm bu dikkat dağıtıcı unsurlarla birlikte, 45 dakikada yazılmış olabilecek kodu yazmak için beş saat harcayabilirsiniz.


06: Dokümantasyonu okuyun ve öğrenin

Forumda sorununuzun çözümünü bulduktan sonra bu şekilde projenizi daha hızlı bitireceğinizi düşünerek kopyalayıp yapıştırmayın (buna ilk makalemde değinmiştim). Önerilen çözümün nasıl çalıştığını anlamak çok daha önemlidir. Bir şeyler ters gittiğinde, özellikle de hatalar olduğunda, bireysel olarak anlamadığınız için kopyalanan kodla çalışmak zordur.

Her kodlayıcıyı, özellikle henüz bilmediğimiz veya henüz rahat olamadığımız konularda dokümantasyonu sık sık okumaya teşvik ediyorum.

Bu, geliştirme hızınızı artırmaya nasıl yardımcı olur?

MQL5 dili hakkında ne kadar çok şey bilirseniz, kendinize o kadar güvenirsiniz, daha hızlı karar verirsiniz ve doğru kodu o kadar hızlı yazarsınız. Fikrinize etkin bir şekilde gerçeğe dönüştürecek (program) en uygun doğru kodu bulmak her zaman zordur. Bu kadar zaman alan, araştırma ve düşünmedir. Göstergeler, komut dosyaları, Uzman Danışmanlar vb. gibi belirli bir alanda henüz yeterince bilgili değilseniz, basit şeyleri bile kodlamak zor olabilir. Gerekli beceri ve yetenekler ancak deneyimle gelir.

Peki deneyim nasıl elde edilir? Cevap basit: öğrenin, pratikte uygulayın ve deneyin

MQL5 dilini iyi bilenler neredeyse sonsuz olanaklara sahiptir ve fikirlerini kolayca etkili ve anlamlı kodlara dönüştürebilirler. Örneğin, bunları ne zaman kullanacaklarını biliyorlar:


07: Aralıklı tekrarlar

"İnsanlar, kısa bir süre içinde sıkıca çalışmak yerine, uzun bir süre boyunca aralıklı tekrarlarla çalıştıklarında, bilgileri daha kolay öğrenirler ve hatırlarlar."
— Hermann Ebbinghaus

Belli aralıklarla konuya dönerek, tekrar ederek konuyu çok daha iyi öğreniyoruz ve dolayısıyla hatırlıyoruz. Hafızamız sınırlıdır ve sadece düzenli olarak kullandığımız şeyleri depolar. Bu nedenle, bir şeyi hafızada tutmamız gerekiyorsa, onu düzenli olarak tekrarlamamız gerekir. Bunu lehimize kullanmalıyız.

Nasıl?

Kod yazmadaki yavaşlığın nedenlerinden biri de belirli alanlardaki bilgi eksikleri olduğundan, bu alanları bulmak gerekir (bazıları bu makalede tartışılmıştır). Bulduktan sonra, geliştirme sürecini artık yavaşlatamayacaklarından emin olana kadar sıkı ve düzenli bir şekilde tekrar ederek bunlar üzerinde çalışılmalıdır. Etkili öğrenme teknikleri kullanılarak, makine öğrenimi veya özuyarlanan algoritmalar gibi en karmaşık becerilerde bile ustalaşılabilir.


08: MetaEditor'ın kısayol tuşları ve özelleşmiş ayarları

Kısayol tuşları

Kısayol tuşları eğlencelidir ve kod yazarken size çok zaman kazandırabilir. Kısayol tuşlarını kullanmak söz konusu olduğunda kendime profesyonel diyebilirim. Bu nedenle, MetaEditor'da çalışmak için bazı etkili ve kullanışlı kombinasyonları paylaşıyor olmaktan mutluluk duyuyorum.

Kısayol tuşlarını kullanmaya başlayın, hayatınız değişecek. İdeali, tüm eylemleri genel olarak klavyeden gerçekleştirmek, fareyi kullanmamaktır. Her programcının yolculuğunun en başında klavyede mümkün olduğunca tam olarak ustalaşması gerektiğini düşünüyorum, çünkü bu bizim çalışma aracımız.

İşte Windows PC'de çalışırken en sevdiğim kısayol tuşları. Pek emin değilim ama, Mac kullanıcılarının CTRL'yi COMMAND ile değiştirebileceğini düşünüyorum;

Kısayol Eylem
 F4 MT5 ve MetaEditor arasında geçiş yap
 F7  Kodu derle 
 CTRL+F7  Tüm açık belgeleri derle 
 CTRL+C Seçili kodu kopyala 
 CTRL+V Seçili kodu yapıştır 
 CTRL+X Seçili kodu kes 
 CTRL+Z Koddaki değişiklikleri geri al  
 CTRL+Y Koddaki değişiklikleri yinele
 CTRL+A Tüm kodu seç 
 CTRL+END İmleci belgedeki son kod satırına taşı 
 CTRL+HOME İmleci belgedeki ilk kod satırına taşı 
 SHIFT + oklar (sol, yukarı, sağ, aşağı) İlgili yöne doğru kod seç   
 TAB Seçili kodun girintisini artır 
 SHIFT+TAB Seçili kodun girintisini azalt  
 CTRL+Backspace Satırdaki tüm kelimeleri sil 
 HOME İmleci satırın başına taşı 
 END İmleci satırın sonuna taşı 
 CTRL+? 
//--- Sonraki satıra kod ayırıcı ekle
 CTRL+>
//+------------------------------------------------------------------+
//|            Bu bloğu mevcut ve sonraki iki satıra ekle            |
//+------------------------------------------------------------------+
 CTRL+"
// Satırın başına iki eğik çizgi ekle  
 CTRL+, Mevcut belgeye stilist uygula 
 CTRL+F4  Mevcut belgeyi kapat 
 CTRL+F5 Geçmiş verileri üzerinde hata ayıklamayı başlat/devam ettir 
 CTRL+T Araç kutusunu aç/gizle 
 CTRL+D Kılavuzu aç/gizle
 ALT+G  Değişken/fonksiyon bildirimine git 
 WINDOWS+T görev çubuğundaki uygulamalarda gezinmek için,
örneğin bir tarayıcı (Chrome) açıp bilgi aramak istersem 
 CTRL+F  Arama kutusunu aç
 CTRL+S  Mevcut belgeyi kaydet 
 CTRL + oklar  İlgili yönde kod boşluklarından (kelimeden kelimeye) atla
 CTR++   İleri atla
 CTRL+-  Geri atla 
 CTRL+SHIFT+U  Seçili kodu (kelimeyi) büyük harf yap 
 CTRL+U  Seçili kodu (kelimeyi) küçük harf yap

MetaEditor için özelleşmiş ayarlar

MetaEditor için yapılan doğru ayarlar, daha hızlı kod yazmanıza da yardımcı olabilir. İşte herkesin denemesini tavsiye ettiğim bazı ayarlar.


Bu kutular işaretlenmelidir:

  • () ve }]" ekle — özellikle büyük kodlarla çalışırken bazen fark edilmesi zor olan saçma hatalardan (beklenmeyen program sonlanması, eksik parantezler) kaçınmanın güçlü bir yoludur.
  • Eşleşen parantezleri vurgula - içinde bulunduğunuz fonksiyon veya kod bloğunun sınırlarını anlamanıza yardımcı olur.
  • Geçerli satırı vurgula — bazen üzerinde çalıştığınız kod satırını bulmak zor olabilir; vurgulama, kaydırma yaparken ilgili satırı hızlı bir şekilde bulmanıza yardımcı olur.
  • Pano geçmişini etkinleştir - kopyalama geçmişi, önceden kopyalanmış herhangi bir parçayı seçmeyi kolaylaştırır.

Diğer kullanışlı ayarlar, size uygun yazı tipi boyutunu seçmeyi içerir.

Sizin için neyin işe yaradığını bulmak için ayarlarla oynayın. Ayarlara, Araçlar sekmesinden ulaşabilirsiniz.


09: Google'da etkili arama yapmayı öğrenin

Etkili bilgi arama becerileri zamandan tasarruf etmenizi sağlayabilir ve kodlamayı hızlandırabilir. Programlama yaparken genellikle acil çözümler gerektiren sorunlar ve zorluklarla karşılaşırız. Çözümleri nerede bulacağınızı bilmek yeterli değildir, aynı zamanda çözümleri nasıl etkili bir şekilde arayacağınızı da bilmeniz gerekir.

Doğru cevabı bulmak için sadece Google'da arama yapmak yeterli, değil mi? Değil!

Bir kullanıcının ikili dosyadan dizi okumada takıldığı ve çözüm bulmak için Google'a gittiği şu örneği ele alalım.

Çoğu kişinin yaptığı ilk şey, Google'ı açıp ikili dosyadan dizi nasıl okunur (how to read an array in a binary file) gibi bir şey aramaktır. Aramanın sonucu:

MQL5'le ilgili bir sorun nasıl Google'da aranır?

Not: Toplam arama sonucu miktarının 98 milyondan fazla olduğuna dikkat edin. 

İnternette o kadar çok boş ve gereksiz bilgi var ki. İhtiyacınız olanı bulmak için çok zaman harcamanız gerekebilir (veya daha da kötüsü, güvenilmez bir siteye düşersiniz, bilgisayar korsanları kişisel verilerinizi çalabilir). Arama sorgusu, ihtiyacımız olan kesin sonucu elde etmek için çok belirsiz. İstediğimiz sonuçları alabilmemiz için çok net ve spesifik olmamız gerekiyor.

Bu konuda daha derine inmek isteyenler için birçok arama ipuçları var. Örneğin, bu kısa videoyu izlemenizi tavsiye ederim. Burada sadece iki ipucundan bahsedeceğim. 

01: Belirli site içerisinde arama

MQL5 ile ilgili çözümleri bulabileceğiniz en iyi yer elbette MQL5.com'dur. Bu nedenle, Google'da arama yaparken, MQL5.com sitesinde aranmasını istediğinizi belirtin.

Bunun için, arama sorgunuzun sonuna site:MQL5.com ekleyin. Elde edeceğiniz sonuç şudur:

MQL5 sitesi için arama sonuçları

Bu sefer arama, tümü MQL5.com'dan gelen yalnızca 568 eşleşen sonucu gösterdi. site: URL şeklinde belirterek, Google'a hangi site içerisinde arama yapacağını söylemiş oluruz.

02: Daha spesifik arama

Site çok büyük olduğu için bazen MQL5.com sitesinden alınan sonuçlar bile çok fazla sayıda olabilir. Bazen tam olarak ne elde etmek istediğinizi bilirsiniz. Bu gibi durumlar için şahsen kullandığım bir yöntem var. Her zaman işe yarıyor, ancak arama yaparken MQL5 web sitesinin hangi bölümünden sonuçların daha öncelikli olmasını istediğinizi bilmeniz gerekir: Makaleler, Forum, Kod Kütüphanesi vb. Böyle bir arama ne zaman faydalı olabilir:

  •  Makalelerle konuyu daha derinlemesine incelemek istiyorsanız
  •  Forumdan hızlı bir çözüm bulmak istiyorsanız 
  •  Kod Kütüphanesinin önceden hazırlanmış kodlarında başkalarının çözüme nasıl ulaştığını görmek istiyorsanız

Arama, MQL5 + MQL5'teki bölüm + aramak istediğiniz konu sorgusu biçiminde yapılmalıdır. Örneğimizde şu şekilde olacak: 

MQL5 forum how to read an array in a binary file

Hala en yakın MQL5 arama sonuçları değil

Bu yöntemle belirli bir bölümde arama yapılsa da, Google'a hangi sitede arama yapacağını söylemedik, bu nedenle arama sorgusuna site:MQL5.com komutunu eklemek sonuçları daha spesifik hale getirecek. Böylece, arama sorgusu şu şekilde olur: forum how to read an array in a binary file site:MQL5.com. Google bu sefer ise 399 sonuç gösterdi.


Sonuç

Şimdilik bu kadar, programlama hızımızı ve üretkenliğimizi artırmak için hala başka ipuçları üzerinde çalışıyorum. Bir sonraki makalede, daha fazla yeni ipucuna değineceğim. Bunlar, her gün uygulayabileceğiniz ve iyi alışkanlıklar geliştirebileceğiniz basit kurallardır.

Okuduğunuz için teşekkürler, bu makalenin tartışma bölümünde sizden başka ipuçları da duymak isterim.

Saygılarımla.

MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/9752

Ticarette matematik: Sharpe ve Sortino oranları Ticarette matematik: Sharpe ve Sortino oranları
Yatırım getirisi, yatırımcıların ticaret performansını analiz etmek için kullandıkları en belirgin göstergedir. Profesyonel yatırımcılar, strateji analizi için Sharpe ve Sortino oranları gibi daha güvenilir araçlar kullanır.
Daha İyi Bir Programcı Nasıl Olunur? (3. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha vazgeçin Daha İyi Bir Programcı Nasıl Olunur? (3. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha vazgeçin
Bu makale, programlama kariyerini geliştirmek isteyen herkesin okuması gereken bir makaledir. Bu makale dizisinin amacı, ne kadar deneyimli olursanız olun, sizi olabileceğiniz en iyi programcı yapmaktır. Makalede açıklanan fikirler hem yeni başlayan hem de profesyonel MQL5 programcıları için işe yarardır.
Daha İyi Bir Programcı Nasıl Olunur? (5. Bölüm): Nasıl daha hızlı bir geliştirici olunur Daha İyi Bir Programcı Nasıl Olunur? (5. Bölüm): Nasıl daha hızlı bir geliştirici olunur
Her geliştirici daha hızlı şekilde kod yazabilmek ister. Daha hızlı ve verimli bir şekilde kod yazabilmek, yalnızca birkaç kişinin sahip olduğu doğuştan gelen bir tür özel yetenek değildir. Bu, öğrenilebilir bir beceridir, işte bu makalede öğrenmeye çalışacağımız şey bu.
Daha İyi Bir Programcı Nasıl Olunur? (2. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha kurtulun Daha İyi Bir Programcı Nasıl Olunur? (2. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha kurtulun
Bu makale, programlama kariyerini geliştirmek isteyen herkesin okuması gereken bir makaledir. Bu makale dizisinin amacı, ne kadar deneyimli olursanız olun, sizi olabileceğiniz en iyi programcı yapmaktır. Makalede açıklanan fikirler hem yeni başlayan hem de profesyonel MQL5 programcıları için işe yarardır.