Daha İyi Bir Programcı Nasıl Olunur? (4. Bölüm): Programlama hızını artırmak
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.
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
— 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:
- Diziler
- For/While döngüleri
- Verileri depolamak/okumak için dosyalar
- Bir web sunucusundan veri isteme ve okuma
- ve hepsinden bu yazıda bahsedemeyeceğim bir sürü başka kullanışlı şey
07: Aralıklı tekrarlar
— 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ı 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:
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:
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
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
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz