English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
더 나은 프로그래머 (Part 04): 어떻게 빠른 개발자가 될 수 있을까요

더 나은 프로그래머 (Part 04): 어떻게 빠른 개발자가 될 수 있을까요

MetaTrader 5 | 29 3월 2022, 14:39
160 0
Omega J Msigwa
Omega J Msigwa

소개

더 빠르게 개발하는 것은 모든 개발자의 꿈입니다. 코딩을 하다가 어느 부분에 갇혔을 때 문제를 파악하기 위해 일주일 내내 프로그램이나 코드 조각을 개발하거나 하면서 많은 시간을 보내고 싶어하는 사람은 없습니다.

더 빠른 개발

코더라면 누구나 빠르게 개발하고 싶어합니다

  • YouTube에서 MQL5 코딩 비디오를 보며 강사의 속도가 엄청 빠른 경우를 본 적이 있을 것입니다. 또한 그 수준에 도달하고 싶어 하였을 것입니다.
  • 키보드를 잘 다루며 뛰어난 코딩 속도를 가진 개발자를 본 적이 있을 것입니다. 그들은 코딩을 할 때 몇 시간이 걸릴 수 있는 복잡한 알고리즘을 몇 분 만에 작성할 수 있습니다.
  • 또는 프리랜스에서 경쟁자보다 빨리 작업을 전달할 수 있도록 더 빠르고 효과적으로 코딩할 수 있기를 원할 수도 있습니다.
  • 아니면 당신의 배우자/파트너에게 키보드를 다루는 당신의 슈퍼맨과 같은 능력이나 버그가 적거나 없는 코딩이라던가 혹은 짧은 시간에 복잡한 알고리즘을 만들어 깊은 인상을 남기고 싶을 수도 있습니다.
  • 때로는 마켓의 제품에 대해 빠른 업데이트를 제공하고 고객이 이메일 또는 MQL5 메시지 받은 편지함으로 보낸 버그와 오류의 내용을 수정할 수 있기를 원할 수 있습니다.

귀하와 귀하의 고객을 위해 높은 품질의 제품을 생산하면서 코딩 속도를 높이는 방법과 관련한 엄청난 정보를 드리고자 합니다. 그러니 주의를 기울이고 펜과 노트북을 가까이 가져오십시오.

코딩을 빠르게 하기 위해서 다음 중 어느 것도 필요하지 않습니다.

    • 풍부한 코딩 경험
    • 최고의 기계식 키보드
    • 몸이 기억하는 키보드 타이핑
    • 개인용 컴퓨터(PC)의 많은 기가바이트 RAM, 많은 코어, 강력한 GPU

더 빠른 개발자 vs 더 빠른 코더

상기의 내용에 대해 다루기 전에 다음 둘의 차이를 설명하는 것이 필요할 것 같습니다. 개발자와 코더.

개발자 코더
개발자는 경험이 더 풍부한 코드 작성자입니다. 그들은 다음과 같은 프로젝트의 거의 모든 것을 책임집니다:

디자인, 작업 계획, 코딩 및 기타 프로젝트와 관련된 모든 것.                                                                                                                                                                                                                                                                                                                            
일부 코드를 작성할 수 있는 사람을 사람들은 종종 코더라고 부릅니다. 그러나 일반적으로 코더는 가장 덜 훈련되거나 경험이 있는 프로그래머(개발자) 수준으로 간주됩니다. 이러한 개인은 프로그래머나 개발자와 같은 알고리즘 지식을 갖고 있지 않은 경우가 많으며 한 가지 코딩 언어에만 능한 이 분야의 초보자인 경우가 많습니다. 코더는 일반적으로 개발자의 지시에 따라 작업 전체에서 부분과 관련한 코드를 작성하게 됩니다.

코더는 프로젝트 내부의 모든 것을 알 필요는 없습니다. 예를 들어 프리랜서의 고객이 EA 내에 Trailing Stop 기능을 추가하기를 원할 경우 코더는 곧바로 코딩하고 Ontick 내부에서 호출할 수 있습니다. 그런 다음 MetaTrader 5에서 한 번 또는 두 번 기능을 테스트하여 고객에게 다시 보내게 됩니다

이 기사에서 우리는 개발자의 더 넓은 의미, 즉 시스템 개발 속도를 높이는 방법에 대해 논의할 것입니다. 우리는 디자인, 직업 윤리, 사용 도구, 코딩, 디버깅 등 모든 것에 대해 알아볼 것입니다. 


개발자로서 더 빨라지는 방법

01: 버그와 나쁜 아키텍처 피하기

개발자가 코드를 작성하는 데 많은 시간을 할애한다고 생각하겠지만 실제로 개발자는 대부분의 시간을 코드를 읽고, 디버깅하고, 무엇을 해야 할지 파악하는 데 보냅니다.

30분 동안 코딩한 코드를 디버그하는 데 3시간이 걸릴 수 있습니다. 즉 버그가 많을수록 프로젝트를 완료하는 데 더 오래 걸리게 됩니다. 버그가 개발 프로세스를 느리게 한다는 것을 알아야 합니다. 따라서 우리가 할 수 있는 최선의 방법은 가능한 한 빨리 버그를 피하는 것입니다.

나쁜 아키텍처 + 버그 = 세상 끝나는 겁니다 (농담입니다)

프로젝트에 버그가 있는 것은 좋지 않지만 아키텍처가 좋지 않아 디버그하기 어려워지고 버그를 쉽게 발견하지 못하는 것은 더 나쁩니다. 버그 수정을 위해 누군가에게 받은 EA에서 가져온 이 코드를 보세요.

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);              }
}

아키텍처가 얼마나 나쁜지 한번 봐 보세요. 코드에 버그가 있다는 것이 놀라운 일이 아닙니다. 보시다시피 처음에 코드를 작성한 사람이라도 한 눈에 쉽게 이해하기 어려운 코드입니다.

당신은 너무 운이 좋지 않을 것입니다 (저처럼), 누군가 당신을 프리랜서로 고용하여 버그를 수정하기를 요청하고 위의 코드와 같은 10000줄 이상의 코드가 표시되면 말입니다(지금 3주가 넘었지만 아직 완료하지 못했습니다).

요점은 이와 같습니다. 항상 코딩 패턴과 일관성을 유지하도록 하고, 함수 이름을 지정하고, 변수를 생성하는 방식 등을 유지하고, 자신이 편한 것을 선택하고, 자신과 다른 모든 사람이 쉽게 사용할 수 있도록 하십시오.


02: 빠른 디버그

버그가 우리의 속도를 늦추고 시간을 갉아먹는다는 것을 첫 번째 요점에서 보았습니다. 디버깅은 이 기사에서 다루는 모든것이자 긴 주제입니다. 나는 모든 사람들이 다음의 기사를 읽을 것을 권장합니다. MQL5 프로그램 디버깅.

빠르려면 매우 빠르게 디버그하는 방법을 배워야 합니다. 여기에 몇 가지 팁이 있습니다.

01: 다음을 사용하세요 MetaEditor CodeStyler .

이것은 디버깅을 향한 첫걸음과 같습니다. 이 놀라운 도구는 자체적으로 디버깅을 할 수는 없지만 코드의 모양을 변경하고 코드를 명확하게 하고 읽기 쉽게 만드는 데 도움이 될 수 있습니다.

02: 프린트코멘트 를 더 사용하세요.

올바르게 작동하지 않는 부분을 찾으려면 미심쩍은 부분에서 더 많은 코드를 인쇄하고 주석을 추가해야 합니다.

항상 찾을 수 없는 영역에서 버그를 찾아야 합니다.

03: 어떻게 작동하고 있는 것인지 명확하게 이해하기 전에는 아무 것도 변경하지 마십시오.

전에 이런 일을 겪어 봤을 것이라고 확신합니다. 시스템이 정상적으로 동작하게 하기 위해 코드를 삭제한 다음 나중에 되서야 삭제한 코드가 시스템 버그와는 아무 관련이 없다는 것을 알게 될 경우 이제 코드를 다시 작성하는데 많은 시간을 들이게 됩니다. 그러나 이것이 시스템을 다른 버그에 노출하게 되지 않을 것이라는 보장은 없습니다. 

삭제하고자 하는 것이 내장 함수 또는 메서드인 경우에는 삭제하기 전에 문서에서 확인 하십시오. 만약 확실하지 않다면 포럼에 질문하십시오. 나는 개인적으로 텍스트 파일에 있는 모든 코드를 복사할 것입니다. 그렇게 하면 코드를 유연하게 변경하고 새로운 것을 테스트할 수 있으며 무엇이 오류인지 알아냈을 때 기본 코드를 참조할 수 있습니다.


03: 라이브러리는 특정 용도를 위해 생성된 것입니다

라이브러리를 사용할 때는 제공된 클래스가 의도한 목적대로 사용하는 것이 중요합니다. 깨끗한 것을 구현하기에는 너무 게으르기 때문에 강제로 우리의 길을 가는 것은 재앙에 이르는 확실한 방법입니다.

표준 라이브러리를 사용 중인 경우 명확하고 쉽고 일관성이 있으며 전문적인 라이브러리 개발자들이 권장하는 방식으로 인스턴스화하고 참조하는 것이 좋습니다.

예를 들어 아래 처럼 일관성조차 없는 불분명한 이름으로Trade Classes 라이브러리를 참조하지 말아야 합니다.

#include <Trade\AccountInfo.mqh> //Class for working with trade account properties
#include <Trade\SymbolInfo.mqh>  //Class for working with trade instrument properties
#include <Trade\OrderInfo.mqh>   //Class for working with pending order properties
#include <Trade\OrderHistoryInfo.mqh>  //Class for working with history order properties
#include <Trade\PositionInfo.mqh>   //Class for working with open position properties
#include <Trade\DealInfo.mqh>       //Class for working with history deal properties
#include <Trade\Trade.mqh>          //Class for trade operations execution
#include <Trade\TerminalInfo.mqh>   //Class for getting the properties of the terminal environment
//--- 
CAccountInfo       ac;
CSymbolInfo        symb;
COrderInfo         orders;
CHistoryOrderInfo  hist_orders;
CPositionInfo      pos;
CDealInfo          _clos;
CTrade             my_trade;
CTerminalInfo      info;

대신 일관되고 이해하기 쉬운 방식으로 모든 라이브러리를 참조하고 이를 수행하는 가장 좋은 방법은 m_*** - 특정 클래스의 구성원을 나타냅니다.Class 멤버 참조 형식으로 참조하는 것입니다.

이와 같이 말입니다,

#include <Trade\AccountInfo.mqh> //Class for working with trade account properties
#include <Trade\SymbolInfo.mqh>  //Class for working with trade instrument properties
#include <Trade\OrderInfo.mqh>   //Class for working with pending order properties
#include <Trade\OrderHistoryInfo.mqh>  //Class for working with history order properties
#include <Trade\PositionInfo.mqh>   //Class for working with open position properties
#include <Trade\DealInfo.mqh>       //Class for working with history deal properties
#include <Trade\Trade.mqh>          //Class for trade operations execution
#include <Trade\TerminalInfo.mqh>   //Class for getting the properties of the terminal environment
//--- 
CAccountInfo       m_account;  //members of account info
CSymbolInfo        m_symbol;   //members of symbolInfo
COrderInfo         m_order;    //mambers of OrderInfo
CHistoryOrderInfo  m_orderhistory; //members of Orderhistory info
CPositionInfo      m_position; //members of position info
CDealInfo          m_deal;     //members of deal info
CTrade             m_trade;    //members of trade info
CTerminalInfo      m_terminal; //members of terminal info

또한 다음에 코드를 작성할 경우 레퍼런스에 액세스하려고 할 때 레퍼런스에 대한 모든 것을 알 수 있도록 라이브러리의 레퍼런스 끝에 주석을 추가하는 것을 잊지 마십시오. 

또한 코딩 능력의 속도를 높이려면 모든 것을 처음부터 구현하려고 하는 것보다는 내장된 표준 라이브러리를 사용하는 것을 선호해야 합니다. 이러한 라이브러리는 MQL5 코드를 간소하게 만들고 개발 프로세스의 속도를 높이기 위해 전문 프로그래머가 만들었습니다. 모든 사람이 이 라이브러리를 사용하도록 권장합니다. 또한 코드베이스와 시장에 나와 있는 다른 좋은 라이브러리도 좋습니다. 

이 둘 중 누가 더 빨리 코드를 작성한다고 생각합니까?

모든것을 처음부터 하는 코더(아마도 초짜) 표준 라이브러리를 사용하는 코더
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";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
     string symbol = Input_symbol=="" ? Symbol() : Input_symbol;
      m_symbol.Name(symbol); //Sets symbol name for our CSymbolInfo class object
//---
   return(INIT_SUCCEEDED);
  } 
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
      m_symbol.RefreshRates(); //Refresh to Get the Last quote 
      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();
  }



















표준 라이브러리 사용자는 비사용자보다 3배 이상 더 생산적입니다. 프로그램의 코드가 적으므로 버그가 적습니다.


04: 복잡한 코드 피하기

코딩 경력에서 누군가의 EA에서 아래의 코드와 같은 것을 본 적이 있기를 바랍니다.

        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);
                        }
                }
        }

이 코드 블록을 작성하는 순간에는 쉬울 수 있지만 디버그 하려면 읽기가 쉽지 않습니다. 모든 변수는 아니더라도 일부 변수를 잊어버릴 가능성이 높으므로 그들을 다시 참조하기 시작하게 됩니다. 그것이 얼마나 시간 낭비인지 생각해보십시오!

복잡한 알고리즘을 작성하면 사람들은 당신을 싫어하게 되고 스스로도 혼란스러울 것입니다.

모든 로직이 한 곳에 나타나도록 하는 것은 안좋습니다. 단일 함수에서 너무 많은 연산을 하면 개발 프로세스가 느려질 것입니다 왜냐하면 코드를 정렬하고 모든 것이 잘 작동하는지 확인해야 하기 때문입니다.

특정 종류의 작업이 필요한 경우 한 작업을 완료하고 다른 작업으로 넘어가기 쉽도록 해당 작업만 수행할 수 있는 독립적인 기능을 만드는 것이 좋습니다.


05: 산만함을 피하십시오.

"주의가 산만해지면 해야 할 일을 그만두고 아무 가치도 없는 일에 대해 숙고하게 되고 주의를 산만하게 한다는 것을 알게 될 것입니다."
— Beverly R. Imes

휴대전화를 무음으로 유지(꺼지지 않는 경우)하고 소셜 미디어 사진에서 좋아하는 것이나 공유한 것을 확인하기 위해 위로 당기지 마십시오. 그렇게 하면 비효율적으로 일을 하게 될 것입니다. 시끄럽고 산만한 집에 있다면 편히 앉아 프로젝트를 마칠 수 있는 장소를 찾으십시오.

이렇게 하는 것이 당신에게 중요하다면 모든 방해 요소를 차단할 것입니다. 문을 닫고, 전화를 끄고, 소셜 미디어를 끄고, 집중하여 작업을 완료합니다.

인스타그램의 매혹적인 아름다운 모델과 Snapchat의 귀여운 고양이 동영상을 클릭 한 번으로 볼 수 있는 현대 사회에서 이것이 개발자로서 우리가 극복해야 하는 가장 큰 일이라고 생각합니다.

구현하기에 적합한 코드를 찾을 수 없을 때, 휴식을 취하고 소셜 미디어에서 무슨 일이 일어나는지 볼 수 없을 때, 또는 그냥 나가서 돌아다니고 싶을 때 프로젝트가 어렵게 돌아가면 유혹을 받을 수 있습니다.

쉬지 말고 친구들과 수다를 떨지도 말라는 것이 아닙니다. 오해하지 마십시오 많은 MQL5과 웹 개발 프로젝트가 있지만 제가 24/7 코딩하는 것은 아닙니다. 그러나 개발자는 자신에게 맞는 일정을 지켜야 한다고 생각합니다. 소셜 미디어를 확인할 시간이 아니라면 하지 마십시오. 코딩 하기로 한 시간에는 세션이 끝날 때까지만 계속하십시오.(아무리 혼란스럽거나 힘든 일이 있어도) 그 이후에 중요한 할 일이 없다면 코딩 세션을 연장하는 것을 선호합니다.

산만한 코더는 5시간 이상 코딩할 수 있지만 집중하는 프로그래머는 45분 동안 코딩할 수 있습니다.


06: 문서 읽기와 학습

포럼에서 문제에 대한 해결책을 찾은 후, 이 방법으로 프로젝트를 더 빨리 마칠 수 있을 거라고 서둘러 복사하여 붙여넣지 마십시오.(첫번째 기사에서 다루었습니다). 스스로 솔루션을 찾아 코딩하는 방법을 이해했는지 확인하십시오. 특히 복사한 코드를 이해 하지 못한 상태에서 코드에 버그가 있어 문제가 발생하면 작업하기가 어렵습니다.

나는 모든 코더들이 문서를 자주 읽을 것을 권장합니다. 특히 아직 익숙하지 않은 것에 대한 문서를 자주 읽으십시오.

이것이 어떻게 우리의 개발 속도를 증가시킬까요?

MQL5 언어에 대해 더 많이 알면 알수록 더 편안해지고 더 편해질수록 프로그래머로서 더 빨라질수 있습니다. 아이디어를 효과적으로 현실화 하기 위한 올바른 코드를 찾는 것(프로그램)은 항상 힘이 들고 여기서 대부분의 시간이 낭비됩니다. 코딩 지표, 스크립트, Expert Advisor 등과 같은 것들에 대한 지식이 많지 않은 경우 간단한 것을 코딩하는 것도 얼마나 어려운 것인지를 알 수 있기를 바랍니다. 여기서 시작할 수 있습니다.

그럼 어떻게 경험을 얻을 수 있을까요? 내 대답은 항상 간단합니다.여러가지를 배우고 시도하고하는 것입니다

MQL5 언어에 대해 많이 알고 있는 사람들은 자신의 아이디어를 효과적이고 의미 있는 코드로 바꾸는 방법에 대한 무한한 선택을 할 수 있습니다. 그들은 어디에 무엇을 사용하는지를 잘 압니다.


07: 간격을 둔 반복

"인간은 짧은 시간에 반복적으로 공부하는 것보다 장기간에 걸쳐 여러 번(간격적으로) 공부할 때 더 쉽게 기억하거나 학습합니다."
— Hermann Ebbinghaus

이것이 우리가 아는 모든 것을 제2의 천성이 될 때까지 천천히 반복하면서 배운 방법입니다. 우리 뇌의 기억은 제한적이며 우리가 정기적으로 하는 것만 기억하므로 무언가를 기억하고 싶다면 정기적으로 해야 합니다. 우리는 이를 우리에게 유리하게 사용하도록 하는 법을 배워야 합니다.

그 방법

우리가 느려지는 이유 중 하나는 특정 주제에 대해 알지 못하기 때문입니다. 그러므로 우리는 항상 개선해야 할 영역을 찾아야 합니다(일부는 이 기사에서 논의됨). 그 부분에서 우리의 능력이 좋아질 때까지 그 영역에서 개선하십시오. 이러한 방법은 다음과 같은 특정 기술을 배우고 마스터하려고 할 때 잘 맞습니다.머신 러닝, 자기 적응 알고리즘 등.


08: 키보드 단축키 및 MetaEditor 설정

키보드 단축키

키보드 단축키는 키보드로 코드를 작성할 때 많은 시간을 절약할 수 있는 재미있는 것입니다. 저는 이 분야의 전문가이며 코더에게 메타에디터의 생산적인 키보드 단축키를 가르치는 것을 좋아합니다.

키보드 단축키를 배우는 것은 코드 입력과 관련해서 인생을 바꾸는 일입니다. 우리는 대부분의 시간을 키보드에서 보내므로 키보드에 능숙해야 합니다. 저는 모든 개발자가 마우스 대신 키보드를 사용해야 한다고 생각합니다.

다음은 Window PC(Mac 및 Linux의 경우)에서 내가 가장 좋아하는 몇 가지 키보드 단축키입니다. 확실하지 않지만 Mac 사용자는 CTRL을 COMMAND로 바꾸면 될 것입니다.

단축키 사용법
 F4 MT5와 MetaEditor 간 전환
 F7  컴파일 코드 
 CTRL+F7  열린 모든 문서 컴파일 
 CTRL+C 선택한 코드 복사 
 CTRL+V 선택한 코드 붙여넣기 
 CTRL+X 선택한 코드 잘라내기 
 CTRL+Z 코드의 변경 사항 실행 취소  
 CTRL+Y 코드에서 변경 사항 다시 실행
 CTRL+A 모든 코드 선택 
 CTRL+END 문서의 마지막 코드 줄로 커서 이동 
 CTRL+HOME 문서의 첫 번째 코드 줄로 커서 이동 
 SHIFT + Directions(LEFT,UP,RIGHT,DOWN) 그 방향으로 코드를 선택   
 TAB 선택한 코드의 들여쓰기 증가 
 SHIFT+TAB 선택한 코드 들여쓰기 줄이기  
 CTRL+ Backspace 한 줄의 전체 단어 삭제 
 HOME 커서를 줄의 시작 부분으로 이동 
 END 커서를 줄 끝으로 이동 
 CTRL+ ? 
//--- 다음 줄에 코드 구분 기호를 넣기
 CTRL+>
//+----------------------------------------------- -------------------+     //| 이것을 현재 줄과 다음 두 줄에 추가하십시오| //+----------------------------------------------- -------------------+
 CTRL+"
// 라인 시작 부분에 슬래시 2개 추가  
 CTRL+, 현재 문서에 스타일러 적용 
 CTRL+F4  현재 문서 닫기 
 CRL +F5 히스토리 데이터에 대한 디버깅 시작/재개 
 CTRL+T 도구 상자 열기/숨기기 
 CTRL+D 탐색기 열기/숨기기
 ALT+G  변수/함수 선언으로 이동 
 WINDOWS+T 앱을 열고 싶은 경우 작업 표시줄에서 앱을 탐색하려면
인터넷 브라우저(CHROME) 및 문제 검색 
 CTRL+F  찾기 검색 상자 열기
 CTRL+S  현재 문서 저장 
 CTRL + Directions  해당 방향으로 코드 공간 (단어에서 단어) 공간으로 이동
 CTR + +   앞으로 탐색
 CTRL+ -  뒤로 탐색 
 CTRL+SHIFT+U  선택한 코드(단어)를 대문자로 만들기 
 CTRL+U  선택한 코드(단어)를 소문자로 만들기

MetaEditor 설정

코드를 더 빠르게 작성하는 데 도움이 되는 최상의 MetaEditor 설정을 갖는 것도 중요합니다. 모든 사람에게 권장하는 몇 가지 설정을 살펴보겠습니다.


이 확인란을 선택해야 합니다.

  • Insert()와 closing }]" — 이것은 오류(예기치 않은 프로그램 종료, 불균형 괄호)를 피하고 너무 많은 코드 라인을 잡는 데 도움이 됩니다.
  • 맞열고 닫는 대괄호 강조 표시 — 이것은 당신이 어떤 기능이나 어떤 블록에 있는지 알려줄 것입니다.
  • 현재 줄 강조 표시 — 마지막으로 코딩한 위치로 이동하는 것이 혼란스러울 수 있습니다. 이 옵션을 설정하면 한 눈에 빠르게 이동하는 데 도움이 됩니다. 그렇지 않을 경우 코드를 계속 스크롤하면 현재 줄이 강조 표시됩니다.
  • 클립보드 기록 — 복사 및 붙여넣기 기록을 보기 위해 다른 코드 줄을 복사하고 쉽게 액세스할 수 있습니다.

다른 설정은 시력에 맞는 글꼴 크기를 선택하고 눈과 PC 사이의 거리를 적절히 하면 작은 글꼴 크기를 설정할 필요가 없습니다.

도구>옵션에서 더 많은 설정을 찾아 보고 설정하면 더 빨리 작업 할 수 있을 것입니다.


09: Google에 배우기

올바른 Google 검색을 배우는 것은 시간을 절약하게 하며 코딩 속도를 높일 수 있습니다. 코딩하는 동안 많은 문제에 부딪힐 가능성이 높고 즉각적인 솔루션이 필요하지만 솔루션을 찾을 곳을 아는 것만으로는 충분하지 않으며 솔루션을 효과적으로 검색하는 방법도 알아야 합니다.

Google 검색을 수행하면 질문에 대한 올바른 답변을 빠르게 얻을 수 있을까요?아닙니다

바이너리의 배열 파일에 막혀 있는 Google 사용자인 코더가 Google을 사용하여 솔루션을 검색하는 예를 봅시다.

대부분의 사람들이 가장 먼저 하는 일은 Google에 가서 다음과 같이 검색을 하게 됩니다. how to read an array in a binary file 그러면 다음과 같은 결과를 얻게 됩니다.

MQL5를 구글 검색하는 방법

주의: 총 결과가 9,800만 개 이상입니다. 

웹은 쓰레기같은 문서와 시간 낭비하기 좋은 사이트로 가득 차 있습니다. 조심하지 않으면 결국 시간을 낭비하게 되고 개인 데이터는 해커에 의해 도용될 것입니다. 검색어가 너무 모호하여 필요한 특정 결과를 즉시 얻을 수 없었습니다. 원하는 결과를 얻으려면 매우 명확하고 구체적이어야 합니다.

이 주제에 대해 더 자세히 알고 싶은 사람들에게 유용한 검색 팁은 너무나 많습니다. 이 짧은 동영상을 시청하는 것을 추천합니다. 여기서는 두 가지 팁에 대해서만 이야기하겠습니다. 

01: 검색할 특정 사이트

Google 검색을 할 때마다 MQL5.com보다 MQL5와 관련한 솔루션을 얻을 수 있는 더 좋은 곳은 없습니다. MQL5.com에서 Google이 귀하의 답변을 검색하도록 하십시오.

site:MQL5.com를 검색어 끝에 추가하십시오 그러면 검색 결과가 다음과 같습니다.

mql5에서 검색한 결과

이번에는 모두 MQL5.com에서 가져온 568개의 결과만 반환됩니다. (site: URL) 명령어는 지정된 사이트에서만 검색하도록 Google에 명령합니다.

02: 더 구체적으로

MQL5.com은 큰 사이트라 원하는게 뭔지 아주 명확하면 검색하기에는 애매한 사이트입니다. 제가 사용하는 방법이 있긴 하지만 구글에서는 추천하지 않는데 잘 되네요 그 이후로 계속 사용하고 있지만 여기서의 핵심은 예를 들어 기사, 포럼, 코드베이스 등과 같이 결과의 우선 순위를 지정하려는 MQL5의 부분을 알아야 한다는 것입니다. 다음과 같은 결과를 선호할 수 있습니다:

  •  주제에 대해 자세히 배우고 싶다면 기사 섹션에서 찾아 보십시오.
  •  빠른 솔루션을 원하는 경우에는 포럼입니다 
  •  이전에 다른 사람들이 코딩한 내용을 보려면 코드베이스에서 찾아보세요.

이 형식으로 검색MQl5 + 섹션 + 검색어, 이 경우의 예는 다음과 같습니다. 

MQL5 forum how to read an array in a binary file의 검색 결과입니다.

명확하지만 모호한 MQL5 검색

이 방법은 구체적이지만 여전히 Google에 특정 사이트(귀하가 현재 있는 웹사이트만)에서 검색하도록 명령하지는 않았습니다. 가장 좋은 방법은 site:MQL5.com을 추가하는 것입니다. 최종 검색어는 forum how to read an array in a binary file site:MQL5.com이고 Google은 이번에 399개의 결과를 반환합니다.


결론

이 기사에서는 이상으로 충분합니다. 저는 여전히 프로그래밍 속도를 높이고 생산성을 높이기 위한 다른 팁들을 연구하고 있습니다. 팁은 많습니다. 다음 기사에 더 많은 팁을 소개해 보도록 하겠습니다. 나는 모든 코더들이 매일 이러한 습관과 방법을 연습할 것을 권장합니다.

읽어 주셔서 감사합니다. 이 기사의 토론 섹션에서 여러분들로부터도 몇 가지 팁을 듣고 싶습니다.

감사합니다.

MetaQuotes 소프트웨어 사를 통해 영어가 번역됨
원본 기고글: https://www.mql5.com/en/articles/9752

트레이딩에서의 수학: 샤프 및 소르티노 비율 트레이딩에서의 수학: 샤프 및 소르티노 비율
투자에 따른 수익은 투자자와 초보 트레이더가 거래의 효율성을 분석하기 위해 사용하는 가장 확실한 지표입니다. 전문적인 트레이더는 샤프 및 소르티노 비율과 같은 전략을 분석하기 위해 보다 안정적인 도구를 사용합니다.
더 나은 프로그래머 (Part 03): 성공적인 MQL5 프로그래머가 되고자 한다면 이 5가지를 하지 마세요 더 나은 프로그래머 (Part 03): 성공적인 MQL5 프로그래머가 되고자 한다면 이 5가지를 하지 마세요
이글은 프로그래밍 경력을 향상시키려는 사람이라면 반드시 읽어야 하는 글입니다. 이 시리즈는 프로그래머 경험이 어떻든 간에 최고의 프로그래머로 만드는 것을 목표로 합니다. 글에서 다루는 내용은 MQL5 프로그래밍 초보자와 전문가 모두에게 해당됩니다.
더 나은 프로그래머 (Part 05): 어떻게 하면 빠르게 개발하는 개발자가 될 수 있을까요 더 나은 프로그래머 (Part 05): 어떻게 하면 빠르게 개발하는 개발자가 될 수 있을까요
모든 개발자는 코드를 더 빨리 작성할 수 있기를 바랍니다. 그러나 이렇게 더 빠르고 효율적으로 코드를 작성할 수 있는 것은 소수의 사람들이 가지고 태어난 일종의 특별한 능력이 아닙니다. 그것은 배워서 얻을 수 있는 기술이며 이것이 제가 이 기사에서 알려드리고자 하는 것입니다.
더 나은 프로그래머(파트 02): 성공적인 MQL5 프로그래머가 되기 위해서는 다음의 5가지를 하지 말아야 합니다. 더 나은 프로그래머(파트 02): 성공적인 MQL5 프로그래머가 되기 위해서는 다음의 5가지를 하지 말아야 합니다.
이 글은 성공적인 개발자가 되고자 하는 모든 사람이라면 반드시 읽어야 하는 글입니다. 이 연재 글은 귀하가 경험이 많은 개발자라 하더라도 최고의 프로그래머가 되도록 돕는 것을 목표로 합니다. 글에서 다루는 내용은 MQL5 프로그래밍의 초보자와 전문적인 프로그래머 모두에게 적용됩니다.