English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
より優れたプログラマー(第04部): より速い開発者になる方法

より優れたプログラマー(第04部): より速い開発者になる方法

MetaTrader 5 | 26 10月 2021, 11:39
792 0
Omega J Msigwa
Omega J Msigwa

はじめに

より迅速な開発は、すべての開発者の夢です。プログラムやコードを1週間かけて開発したり、コーディングの過程で行き詰まったときに物事を理解するために数日ではないにしても時間をかけすぎたりすることは、誰も望んでいません。

より速い開発

すべてのコーダーはより速くなりたいと思っています。

  • インストラクターが速すぎて、遅れずについていくのが難しいMQL5コーディングビデオをYouTubeで見て、自分でそのレベルに到達したいと思った
  • キーボードでのコーディング速度が非常に速い開発者が、自分には数日とはいわなくても数時間かかるような複雑なアルゴリズムを数分で作成するのを見た
  • フリーランスでより早く納品して競合に先んじることができるように、より速く効果的にコーディングできるようにしたい
  • あるいは、複雑なアルゴリズムを短時間でバグなしで(または少量のバグで)コーディングできることでキーボードでスーパーマン並みの能力を発揮して、配偶者や恋人に感心してもらいたい
  • マーケットに出回っている製品に迅速な更新を提供し、顧客がメールやMQL5メッセージでしつこく連絡してきているバグやエラーを修正できるようにしたい

あなたとあなたのクライアントのために高品質の作品を制作しながらコーディング速度を上げる方法についての知識をお教えしますので、紙とペンを用意してよく聞いてください。

最速のコーディング速度に到達するためには、以下のいずれも必要ありません。

    • 豊富なコーディング経験
    • 最高のメカニカルキーボード
    • マッスルメモリーのキーボードタイピングが得意であること
    • 何ギガバイトものRAM、多くのコア、パーソナルコンピューター(PC)上の強力なGPU

より高速な開発者 v.s. より高速なコーダー

これらの鍵を開く前に、開発者とコーダーの違いを説明したほうがよいと思います。

開発者 コーダー
開発者は経験豊富なコードライターで、次のようなプロジェクトのほとんどすべてに責任があります。

設計、作業計画、コーディング、およびプロジェクトに関連するその他すべて。                                                                                                                                                                                                                                                                                                                            
コードを書くことができる人は誰でも、テクノロジー業界外の人からコーダーと呼ばれることがよくありますが、通常、コーダーは、最も訓練されていない、または経験の浅いレベルのプログラマー(開発者)と見なされます。これらの個人は、多くの場合、この分野の初心者であり、1つのコーディング言語に精通しているため、プログラマーや開発者と同じアルゴリズムの知識を持っていません。コーダーは通常、開発者が簡単に委任できるコードをそのまま書く仕事を与えられます。

コーダーはプロジェクト内のすべてを知る必要はありません。たとえば、フリーランスの顧客が、EA内にトレーリングストップ機能を追加したいとします。コーダーはすぐにコーディングし、Ontick関数内で呼び出してから、MetaTrader 5で1〜2回テストして確認し、機能するようなら顧客に送ります。

この記事では、定義がより広い「開発者」、つまりシステムの開発をより速くする方法について説明します。設計、労働倫理、使用するツール、コーディング、デバッグなどの間のすべてを研究します。 


開発者としてより速くなる方法

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のコードスタイリングツールを使用する

これはデバッグに向けた赤ちゃんのステップのようなものです。この驚くべきツールはそれ自体でデバッグすることはできませんが、コードの外観を変更し、コードを明確で読みやすくするのに役立ちます。

02: Printコメントをもっと使う

何が機能していないかを見つけるには、疑わしい領域でコードの出力とコメントを増やす必要があります。

バグは常にこれらがない領域で見つかります。

03: 機能の仕組みを明確に理解する前に変更を加えない

システムを動作させるためにコードの一部を削除した後で削除したコードがシステムのバグとは関係がないことに気づいて、もう一度時間をかけてコードを書くことになったことを以前に経験なさったかもしれません。この過程中にシステムが他のバグにさらされないという保証はありません。 

組み込み関数またはメソッドを削除する場合は、ドキュメントで読んでください。よくわからない場合は、フォーラムで質問してください。正しい方法がわからない場合は、テキストファイル内のすべてのコードを個人的にコピーします。そうすることで、コードを柔軟に変更して新しいことをテストし、エラーが何であるかがわかったときにプライマリコードを参照できます。


03: ライブラリは特定の用途のために作成されている

ライブラリを使用するときは、提供されたクラスを本来の目的に使用することが不可欠です。怠惰すぎてクリーンなものを実装できないからといって強引に使用しようとすれば、確実に大惨事が起こります。

標準ライブラリを使用している場合は、ライブラリのメンバーを明確、簡単、一貫性のある最善の方法でインスタンス化して参照することをお勧めします。これはおそらく、プロのライブラリ開発者が推奨する方法です。

たとえば、ライブラリの取引クラスを怠惰な方法で参照したり、このように一貫性がない不明瞭な名前を使用したりする代わりに、

#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_*** -特定のクラスのメンバーを示すクラスメンバー形式で参照することです。

以下のようにです。

#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コードDRY(Don't repeat yourself)を作成して開発プロセスを加速するために、プロのプログラマーによって作成されています。コードベースにある他の優れたライブラリやマーケットに出回っているライブラリは言うまでもなく、すべての人にそれらを使用することをお勧めします。 

これら2つの間でコーディングが速くなるのは誰だと思いますか。

すべてを一からコーディングするコーダー(おそらく初心者) 標準ライブラリを使用するコーダー
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);
                        }
                }
        }

このコードブロックを書いたときには簡単かもしれませんが、デバッグしたいときに読むのは簡単ではありません。変数すべてではないにしてもいくつかの変数を忘れてしまう可能性が高いので、それらをもう一度参照し始める必要があります。その活動がどれほど時間の浪費であるかを考えてみてください。

複雑なアルゴリズムを書くと、人々に憎まれ、自分も混乱するでしょう。

すべてのロジックを1つの場所に表示するのは嫌です。単一の関数で操作が多すぎると、コードを注意深く配置し、すべてが正常に機能することを確認する必要があるため、開発プロセスが遅くなります。

特定の種類の操作が必要な場合は、1つの作業を完了してから別の作業に簡単に進むことができるように、それのみを実行できる独立した関数を作成することを検討してください。


05: 気を散らさない

「やるべきことをやめて価値のないことを考えているならば、それは気が散っているということです。」
— Beverly R. Imes

スマートフォンをマナーモード(完全に電源を切らない場合)のままにして、ソーシャルメディアに載せた写真のいいね!や共有を確認するためにスマートフォンを手に取らないでください。効率が下がります。騒がしく邪魔が多い家にいる場合は、座ってプロジェクトを完了できる場所を見つけてください。

プロジェクトがあなたにとって十分に重要であるならば、すべての気を散らすものを締め出すものです。ドアを閉め、電話の電源を切り、ソーシャルメディアもオフにし、集中して仕事を終わらせます。

これは、Instagramの魅惑的な美しいモデルやSnapchatのかわいい猫のビデオとの距離がワンクリックである現代の世界の開発者として私たちが克服しなければならない最大の課題だと思います。

プロジェクトが上手くいっておらず実装する適切なコードがわからないとき、休憩してソーシャルメディアで何が起こっているのかを確認したりただ外に出てリラックスするのは魅力的です。

休憩や友達とリラックスするのに反対しているわけではないので誤解しないでください。MQL5やWeb開発プロジェクトが多すぎて待っていても、24時間年中無休でコーディングしているわけではありません。ただし、私は誰もが自分に合っているスケジュールに固執するべきだと信じています。ソーシャルメディアをチェックするときでなければ、チェックしないでください。コーディングの時間ならば、セッションの終了まで頑張ります(どんなに混乱したり困難になったりしても)後で重要なことが何もないなければ、コーディングセッションを延長したいと思います。

集中しているプログラマーが45分でコーディングできるものも、気が散っているコーダーには5時間以上かかります。


06: ドキュメントを読んで学習する

フォーラムで問題の解決策を見つけたら、この方法でプロジェクトをより早く完了すると考えて、急いでコピー&ペーストしないでください(最初の記事で触れました)。解決法を自分でコーディングする方法を理解するようにしてください。何か問題が発生した場合(特にバグがある場合)、個人的に理解していない、コピーしたコードを扱うのは困難です。

すべてのコーダーがドキュメントを頻繁に読むことをお勧めします。自分がまだ知らないことや、まだ慣れていないことについてはなおさらです。

これにより、開発速度はどのように向上するのでしょうか。

MQL5言語についてよく知っているほど、MQL5言語はより快適になり、より快適(簡単)になり、プログラマーとしてより速く習得できます。自分のアイデアを効果的に実現するための適切なコード(プログラム)を見つけることは常に苦労します。これは私たちの時間のほとんどが無駄になる場所です。インジケーター、スクリプト、エキスパートアドバイザーなどの特定のアクティビティについてあまり知識がない場合は、単純なものでもコーディングするのがどれほど難しいかを教えていただければ幸いです。これが経験の出番です。

では、経験はどのように積むのでしょうか。私の答えはいつも簡単です。学びそしてさまざまなことを試してみることです。

MQL5言語を熟知している人がアイデアを効果的で意味のあるコードに変換する方法には無限の選択肢があります。彼らは次をどこで使うべきか知っています。


07: 間隔を開けた反復

「人間は、短期間に繰り返し学習するよりも、長期間にわたって数回学習すると(間隔を空けて提示する)、アイテムを覚えたり学習したりしやすくなります。」
- ヘルマン・エビングハウス

これが私たちが知っていることすべてを、それが第二の性質になるまでゆっくりと何度も何度も繰り返すことによって学んだ方法です。脳内の記憶は限られており、定期的に使用するものだけを保持するので、何かを心に留めておきたいのであれば、定期的にそれを行う必要があります。私たちはこれを自分の利益のために使うことを学ぶべきです。

次が方法です。

私たちが遅くなる理由の1つはその特定の主題についての無知さです。常に改善する必要がある領域を探す必要があります(それらのいくつかはこの記事で説明されています)。このような領域を見つけたら、継続的に努力し、非常に得意になるまで改善を続けます。これは、機械学習自己適応アルゴリズムなどの特定のスキルを習得して習得しようとする場合に適しています。


08: キーボードショートカットとMetaEditorのセットアップ

キーボードショートカット

キーボードショートカットは楽しく、キーボードでコードを書く際に多くの時間を節約できます。私はキーボードショートカットのプロで、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+方向(LEFT,UP,RIGHT,DOWN) その方向に向かってコードを選択する   
 TAB 選択したコードのインデントを増やす 
 SHIFT+TAB 選択したコードのインデントを減らす  
 CTRL+ Backspace 1行の単語全体を削除する 
 HOME カーソルを行頭に移動する 
 END カーソルを行末に移動する 
 CTRL+ ? 
//--- 次の行にコード区切り文字を配置する
 CTRL+>
//+------------------------------------------------------------------+
//|           これを現在の行と次の2行に追加する          |
//+------------------------------------------------------------------+
 CTRL+"
// 行の先頭に2つのスラッシュを追加する  
 CTRL+, 現在のドキュメントにスタイラーを適用する 
 CTRL+F4  現在のドキュメントを閉じる 
 CRL +F5 履歴データのデバッグを開始/再開する 
 CTRL+T ツールボックスを開く/非表示にする 
 CTRL+D ナビゲーターを開く/非表示にする
 ALT+G  変数/関数宣言に移動する 
 WINDOWS+T 開きたい場合に備えて、タスクバーのアプリをナビゲートする
インターネットブラウザ(CHROME)と問題について検索する 
 CTRL+F  検索検索ボックスを開く
 CTRL+S  現在のドキュメントを保存する 
 CTRL+矢印  その方向のコードスペース(単語から単語へ)にジャンプする
 CTRL+ +   前方に移動する
 CTRL+ -  後方に移動する 
 CTRL+SHIFT+U  選択したコード(単語)を大文字にする 
 CTRL+U  選択したコード(単語)を小文字にする

MetaEditor設定

コードをより速く書くことを支持するのに最適なMetaEditor設定を持つことも重要です。全ての人が試してみることをお勧めする設定のいくつかを見てみましょう。


これらのボックスをオンにする必要があります。

  • Insert () and closing }]" — 困難な可能性のある(プログラムの予期しない終了、不均衡な括弧)エラーを回避し、コード行が多すぎるのを防ぐのに役立ちます。
  • Highlight matching brackets — どの関数またはどのブロックにいるかがわかります。
  • Highlight current line — 前回コーディングしていた場所にたどり着くのが難しいことがあります。このオプションを設定すると、一目ですぐにそこにたどり着くことができます。コードをスクロールし続ければ、現在の行が強調表示されています。
  • Clipboard history — コピー&ペーストの履歴が表示されます。さまざまなコード行をコピーして簡単にアクセスできます。

他の設定では目の能力に適したフォントサイズを選択することです。目とPCの間の距離でほとんど見えない小さなフォントサイズを設定する必要はありません。

[ツール]>[オプション]に移動すると、加速に必要なより多くの設定を見つけて試すことができます。


09: グーグルの仕方を学ぶ

正しいグーグル検索を行う方法を学ぶことは時間の節約になり、コーディング速度を上げることができます。コーディング中に多くの問題に遭遇し、すぐに解決策が必要になる可能性は高いですが、解決策を見つける場所を知るだけでは不十分であり、解決策を効果的に検索する方法も知る必要があります。

グーグル検索をすることは質問への正しく正しい答えを素早く得るのに十分でしょうか。違います

バイナリからの配列ファイルの読み取りに行き詰まった平均的なグーグルユーザーのコーダーがグーグルを使用して解決法を検索する方法の例を見てみましょう。

ほとんどの人が最初に行うことは、グーグルにアクセスして、バイナリファイルの配列を読み取る方法のようなものを検索することです。これが結果です。

MQL5のグーグル検索方法

: 結果の合計は9,800万を超えています。 

Webにはゴミや時間の無駄なサイトがたくさんあり、注意しないと時間を無駄にし、ハッカーに個人データが盗まれる可能性があります。検索用語があいまいすぎて、必要な特定の即時結果を取得できません。望みの結果を得るには、非常に明確で具体的である必要があります。

このテーマについて詳しく知りたい方には、検索のヒントが多すぎます。この短い動画をご覧になることをお勧めします。2つのヒントについてのみ説明します。 

01: 検索する特定のサイト

MQL5に関する解決策を得るのに最適な場所は他ならないMQL5.comです。グーグル検索をするときはグーグルに答えを検索させたいサイトとしてMQL5.comを考慮してください。

検索語の最後にsite:MQL5.comを追加すると、この検索結果が表示されます。

mql5からの検索結果

今回は568件の結果のみがMQL5.com(site: URL)から返されます。指定されたサイトでのみ検索するようにグーグルにコマンドを送信します。

02: より具体的に

MQL5.comは大規模なサイトであるため、必要なものが非常に明確である場合はあいまいなサイトです。私がいつも自分で使用する方法があります。これはグーグルでは推奨されていませんが、動作するので、以来ずっと使用しています。ここで重要なのは、記事、フォーラム、コードベースなど、結果に優先順位を付けるMQL5の部分を知っている必要があるということです。以下からの結果をお好みかもしれません:。

  •  主題について深く学びたい場合は記事セクション
  •  迅速な解決策が必要な場合はフォーラム 
  •  他の人が以前にコーディングしたものを確認したい場合はコードベース

MQl5+セクション+検索語の形式で検索します。この場合の例 

MQL5 フォーラム バイナリファイルの配列を読み取る方法の結果は次のとおりです。

明確だが曖昧なMQL5検索

この方法は特定のものですが、それでも、特定のサイト(現在アクセスしているWebサイトのみ)にグーグルを制限していません。最良の方法は、site:MQL5.comを追加することです。最終的な検索用語はフォーラム バイナリファイルの配列を読み取る方法になります。Googleは今回399件の結果を返します。


終わりに

この記事ではこれで十分です。プログラミング速度を上げて生産性を高めるための他のヒントにも取り組んでいきます。多数あるので、次の記事にはより多くのヒントがあります。すべてのコーダーにこれらの習慣と方法を毎日実践することをお勧めします。

読んでいただきありがとうございます。この記事のディスカッションセクションで、いくつかのヒントをお聞きしたいと思います。

よろしくお願いします。

MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/9752

DoEasyライブラリのグラフィックス(第83部): 抽象標準グラフィカルオブジェクトのクラス DoEasyライブラリのグラフィックス(第83部): 抽象標準グラフィカルオブジェクトのクラス
本稿では、抽象グラフィカルオブジェクトのクラスを作成します。このオブジェクトは、標準のグラフィカルオブジェクトのクラスを作成するための基礎として機能します。グラフィカルオブジェクトには複数のプロパティがあるため、抽象グラフィカルオブジェクトクラスを実際に作成する前に、多くの準備作業が必要です。この作業には、ライブラリ列挙型のプロパティの設定が含まれます。
DoEasyライブラリのグラフィックス(第82部): ライブラリオブジェクトのリファクタリングとグラフィカルオブジェクトのコレクション DoEasyライブラリのグラフィックス(第82部): ライブラリオブジェクトのリファクタリングとグラフィカルオブジェクトのコレクション
本稿では、各オブジェクトに一意のタイプを割り当てることですべてのライブラリオブジェクトを改善し、ライブラリのグラフィカルオブジェクトコレクションクラスの開発を続けます。
多色ローソク足を作成するためのオプションの探究 多色ローソク足を作成するためのオプションの探究
この記事では、ローソク足でカスタマイズされたインジケーターを作成する可能性について説明し、それらの長所と短所を指摘します。
より優れたプログラマー(第03部): MQL5プログラマーとして成功するためにあきらめなければいけない5つのこと より優れたプログラマー(第03部): MQL5プログラマーとして成功するためにあきらめなければいけない5つのこと
この記事は、プログラミングのキャリアを向上させたい人にとって必読です。本連載は、どんなに経験が豊富な読者でも最高のプログラマーになれることを目的としています。議論されたアイデアは、MQL5プログラミングの初心者だけでなくプロにも役立ちます。