プログラミングチュートリアル - ページ 4

 

C++ 関数 (2020) - 再帰とは何ですか?再帰関数を学びましょう!


C++ 関数 (2020) - 再帰とは何ですか?再帰関数を学びましょう!プログラミングチュートリアル

再帰とは、関数がそれ自体を呼び出すプロセスであり、対応する関数は再帰関数と呼ばれます。

再帰は、プログラミングにおいて学生を混乱させることが多いトピックの 1 つです。このビデオでは、再帰がどのように機能するかを説明し、同じ問題に対するさまざまな解決策 (ループを使用する場合と再帰を使用する場合) を比較しています。

C++ FUNCTIONS (2020) - What is recursion? Learn recursive functions! PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What is recursion? Learn recursive functions! PROGRAMMING TUTORIAL
  • 2020.10.28
  • www.youtube.com
Recursion is a process in which a function invokes itself, and the corresponding function is called a recursive function.Recursion is one of those topics in ...
 

C++ で ATM アプリケーションを構築するにはどうすればよいですか? (初心者向け)


C++ で ATM アプリケーションを構築するにはどうすればよいですか? (初心者向け) - プログラミングチュートリアル (2020)

私のチャンネルへようこそ!プログラミング関連の動画を作成している Saldina です。興味がある場合は、私のチャンネルに登録し、このビデオに高評価を与えることを検討してください。

このビデオでは、ATM アプリケーションを構築する方法を説明します。まず、アプリケーションの機能を計画しましょう。次のものが必要になります。

  1. バランスチェック
  2. 供託金
  3. お金を引き出す
  4. メニューを表示

それでは、「メニューの表示」機能を実装してみましょう。ユーザーにメニュー オプションを表示する「showMenu」という関数を作成します。

メニューを定義したら、「showMenu」関数を呼び出してメニューを表示します。次に、ユーザーがオプションを選択できるようにします。

ユーザーの選択に対応するために、スイッチ ケースを使用します。それぞれのケースに対して、対応するアクションを実行します。オプション1の場合、残高を表示させていただきます。オプション 2 の場合、デポジット金額を尋ね、それに応じて残高を更新します。オプション 3 の場合、残高を更新する前に、出金額を尋ね、それが有効かどうかを確認します。最後に、プログラムを終了するオプション 4 を追加します。

ユーザーがメニューを繰り返し操作できるようにするには、do-while ループを使用します。ループは、ユーザーがオプション 4 を選択するまで継続します。

アカウント間の送金など、機能を追加してプログラムを自由に強化してください。コメントでコードを共有してください。レビューします。いいね、購読、ベルのアイコンを押すことを忘れないでください。次のビデオでお会いしましょう!

How to build an ATM application in C++? (For beginners) - PROGRAMMING TUTORIAL (2020)
How to build an ATM application in C++? (For beginners) - PROGRAMMING TUTORIAL (2020)
  • 2020.08.03
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

C++ 関数 (2020) - 汎用関数とテンプレートとは何ですか?プログラミングチュートリアル


C++ 関数 (2020) - 汎用関数とテンプレートとは何ですか?プログラミングチュートリアル

皆さんこんにちは、私のチャンネルへようこそ!私の名前は Saldina で、プログラミング関連のビデオを作成しています。プログラミングに興味がある場合は、私のチャンネルに登録し、このビデオに高評価をお願いします。あなたのサポートは、より多くの人に連絡し、プログラミングの知識を広めるのに役立ちます。

このビデオでは、C++ のジェネリックスとテンプレートについて話したいと思います。ジェネリックを使用すると、同じコードを異なるデータ型で使用できます。これは、さまざまな種類のデータを処理する単一の関数を使用できることを意味します。

この概念を理解するために例を見てみましょう。 2 つの変数の値を交換する関数を作成するとします。最初に、2 つの整数変数を交換する関数を作成しますが、他のデータ型でも機能するように拡張できます。

汎用関数を作成するには、C++ のテンプレートを使用します。キーワード「テンプレート」の後に、一般に「T」と呼ばれるタイプ名を続けてテンプレート タイプを定義します。関数内では、特定のデータ型を「T」に置き換えます。これにより、関数が汎用になり、さまざまなデータ型を処理できるようになります。

データ型ごとに個別の関数を作成する必要はなくなりました。テンプレート関数は、スワッピング ロジックをサポートする任意のデータ型で使用できます。

関数をテストするには、目的の型の変数を作成し、それらを汎用スワップ関数に渡します。 C++ の型推論メカニズムにより、型の明示的な指定を省略できます。

ジェネリックスとテンプレートを使用することで、コードの重複を排除し、より柔軟で再利用可能なコードを作成できます。このアプローチにより、型ごとに個別の関数を作成することなく、さまざまなデータ型を処理できるようになります。

このビデオが C++ のジェネリックスとテンプレートの概念を理解するのに役立つことを願っています。役に立ったと思われた場合は、私のチャンネルに登録し、このビデオに高評価をお願いします。皆様のご支援をよろしくお願いいたします。ご視聴いただきありがとうございます。次のビデオでお会いしましょう。さようなら!

C++ FUNCTIONS (2020) - What are generic functions and templates? PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What are generic functions and templates? PROGRAMMING TUTORIAL
  • 2020.11.11
  • www.youtube.com
Generic programming is used to increase the efficiency of the code. The advantage of writing generic code is code reusability (which means that code that was...
 

最新の C++ のラムダ式 (詳細なステップバイステップのチュートリアル)


最新の C++ のラムダ式 (詳細なステップバイステップのチュートリアル)

皆さん、私のチャンネルへようこそ!このビデオでは、最新の C++ における重要なトピックであるラムダ式 (ラムダとも呼ばれます) について説明します。おそらくラムダについて聞いたことがあるでしょう。今日は、最新の C++ でラムダを使用して、より高速でクリーンなコードを作成するために知っておく必要があることをすべて説明します。

最も重要な概念について説明しますが、ラムダは学ぶべきことがたくさんある幅広いトピックであることに留意してください。追加の例や実践が必要な場合は、最新の C++ のラムダに焦点を当てた説明を記載した無料の書籍を提供します。ぜひチェックしてみてください。

ラムダ式は最新の C++ で導入され、C++11 以降で使用できます。その主な目的は、インラインの匿名関数を記述できるようにすることです。では、インライン匿名関数とは何でしょうか?通常の関数を使用すると、コードを一度作成すると、そのコードが再度必要になったときにその関数を呼び出すことで再利用できるため、冗長なコードが不要になります。一方、インライン関数は、小さくて単純な関数であり、次のような再利用を目的としていません。定期的な機能。これらは多くの場合、名前を必要とせず、別の関数を作成する価値のないコードの小さなスニペットに使用されます。ここでラムダが威力を発揮します。ラムダは、簡潔で読みやすく、実行が速く、すべてを 1 か所に保管できる名前のない関数を作成する方法を提供します。

それでは、コードを詳しく見てみましょう。このデモでは、C++ ユーザー インターフェイス アプリケーションを構築するための理想的な IDE である C++Builder を使用します。 C++ ユーザー インターフェイス アプリケーションについて学習することに興味がある場合は、C++Builder をダウンロードできるリンクを説明に記載します。まず、コンソール アプリケーションを作成しましょう。 [ファイル]、[その他の新規作成]の順にクリックし、[コンソール アプリケーション]を選択します。 C++ が選択されていることを確認し、「OK」をクリックします。これが最初のコードです。それにいくつか追加してみましょう。

まず、コードの実行後にコンソール ウィンドウを開いたままにする「システム一時停止」コマンドを追加します。次に、入出力操作用の「iostream」ライブラリを組み込みます。これで、コードを実行する準備が整いました。プログラムを実行すると、「Hello, World!」というメッセージが表示されます。次に、ラムダ式の構造を見てみましょう。前のコードを削除し、簡単な例から始めます。ラムダを作成するには、山かっこ (キャプチャ句)、かっこ (パラメーター)、中かっこ (関数定義) の構文を使用します。

Capture 句内で、ラムダ内で使用する囲みスコープの変数を指定できます。ここでは、capture 句を空のままにして、パラメータに注目しましょう。括弧内のパラメータを定義できます。この例では、単一のパラメーター「p」を使用します。最後に、中括弧内にラムダの関数本体を定義します。ここで、問題が発生し、ラムダを使用してそれを解決する例を作成してみましょう。ベクターを扱うので、「ベクター」ライブラリを含める必要があります。 「v」という整数のベクトルを作成し、いくつかの値で初期化します。次に、「アルゴリズム」ライブラリの「for_each」という便利な関数を紹介します。この関数は、ベクトルなどの範囲内の要素を反復処理し、指定された関数を各要素に適用します。

「for_each」関数内では「v.begin()」と「v.end()」を使って範囲を指定します。次に、各要素で何を行うかを定義しましょう。最初にコードの問題を示し、次に解決策としてラムダを紹介します。パラメーターを出力するオーバーロードされた演算子を含む構造体を追加しました。 「for_each」関数がベクター内のすべての要素を出力することを期待します。コードを実行すると、期待どおりに動作しないことがわかります。最後の要素のみを出力します。これは、オーバーロードされた演算子が値によって渡され、呼び出しごとにパラメーターをコピーするため、不正確な出力が発生するためです。これを修正するには、オーバーロードされた演算子をラムダ式に置き換えます。前に説明したラムダ式の構文をコピーし、「for_each」関数内に貼り付けます。ここで、コードを再度実行してみましょう。

ご覧のとおり、ラムダ式は完全に機能し、ベクトル内のすべての要素を出力します。ラムダ式によりコードが簡素化され、可読性が向上します。また、正しいパラメータが各呼び出しに確実に渡されるため、以前に発生した問題が回避されます。ここで、ラムダのもう 1 つの便利な機能、つまり、外側のスコープから変数をキャプチャする機能を調べてみましょう。この機能により、ラムダは変数にアクセスし、ラムダ内で変数を使用できるようになります。ただし、デフォルトでは、ラムダは値によって変数をキャプチャします。つまり、変数のコピーが作成されます。

次の例では、「multiplier」という変数を作成し、それを 2 に設定します。ラムダ内で、この変数を使用してベクトル内の各要素を乗算します。今回は、デモの目的で、「for_each」関数の代わりに範囲ベースの for ループを使用します。コードを実行すると、キャプチャされた変数のおかげで、ベクトル内の要素が 2 倍になっていることがわかります。ただし、値による変数のキャプチャには制限があります。ラムダ内でキャプチャされた変数を変更することはできません。

この制限を克服するには、参照によって変数をキャプチャし、その値を変更できるようにします。ラムダ式にインクリメント操作を追加して、これを示します。コードを実行すると、ベクトル内の要素が 2 倍されてから 1 ずつ増加することがわかります。囲んでいるスコープから変数をキャプチャすることで柔軟性が提供され、ラムダが外部データをシームレスに操作できるようになります。変数を参照によって取得すると、有効期間管理や潜在的なデータ競合などの影響が生じる可能性があることに留意することが重要です。したがって、この機能を使用するときは注意し、ラムダの実行中にキャプチャされた変数が有効なままであることを確認してください。

要約すると、ラムダ式は、最新の C++ で簡潔で読みやすいコードを作成するための強力なツールです。これにより、インラインの匿名関数を作成できるようになり、小さなコード スニペットに別の関数を作成する必要性が減ります。 Lambda は、それを囲んでいるスコープから変数にアクセスすることもできるため、柔軟性が提供され、コードの再利用が強化されます。

このビデオが最新の C++ のラムダ式を理解するのに役立つことを願っています。ご質問がございましたら、以下のコメント欄でお気軽にお問い合わせください。このビデオを「いいね」して、C++ チュートリアルをもっと見るために私のチャンネルに登録することを忘れないでください。ご覧いただきありがとうございます。コーディングを楽しんでください。

Lambda expressions in modern C++ (in depth step by step tutorial)
Lambda expressions in modern C++ (in depth step by step tutorial)
  • 2021.11.17
  • www.youtube.com
A lambda is an unnamed function that is used for short snippets of code that cannot be reused and are not worth naming. It makes the code cleaner, easier to ...
 

プロフェッショナル向けの Visual Studio のヒントとコツ - Visual Studio チュートリアル



プロフェッショナル向けの Visual Studio のヒントとコツ - Visual Studio チュートリアル

こんにちは、みんな!私の名前は Leslie Richardson です。Visual Studio のデバッグおよび診断チームでプログラム マネージャーとして働いています。このビデオでは、オート、ローカル、ウォッチ ウィンドウの検索機能と呼ばれる Visual Studio 2019 の新機能について説明します。この機能は、デバッグ エクスペリエンスを大幅に向上させ、貴重な時間を節約し、生産性を向上させるように設計されています。

この機能を実証するために、Visual Studio 2019 で .NET Core アプリケーションを開いているシナリオを考えてみましょう。このアプリケーション内には、複数のレシピ オブジェクトを含むリストがあります。私が直面している課題は、このリスト内で特定のレシピを見つけることですが、特にリストに 61 個のオブジェクトが含まれている場合、これは非常に面倒になる可能性があります。各オブジェクトを手動で展開し、タイトル プロパティを見つけて、「サラダ」などの検索条件と一致するかどうかを確認するのは、時間のかかる作業です。

このプロセスを簡略化するために、「デバッガー表示」と呼ばれる機能を利用します。この機能を使用すると、Auto、Local、Watch ウィンドウなどのさまざまなデバッガー ウィンドウでのオブジェクトの表示方法をカスタマイズできます。オブジェクトのクラス定義に「Debugger Display」属性を追加することで、これらのウィンドウの値列にどのプロパティを表示するかを指定できます。この場合、各レシピをタイトルで表示したいので、レシピのタイトル プロパティを表示するように「デバッガー表示」属性を設定します。

レシピ リストを再度展開すると、各オブジェクトのタイトルがすぐに表示されるので、それぞれを個別に展開しなくても、目的のレシピを見つけるのがはるかに簡単になりました。これは大幅な改善ですが、アイテム数が 61 あるため、興味のある特定のレシピを見つけるのにまだ時間がかかることがあります。ここで、ウォッチ ウィンドウの検索機能が役に立ちます。

リストを手動でスクロールしたり展開したりする代わりに、提供されている検索機能を使用するだけで済みます。 「サラダ」などの検索語を入力し、Enter キーを押します。 Visual Studio では、最初に出現したキーワードにすぐに移動できるため、時間と労力を大幅に節約できます。また、[次を検索] ボタンを利用して、Visual Studio で見つかった他の一致をナビゲートすることもできます。一致リストを前後に移動するには、検索の深さを決定する検索ステップ パラメーターを調整できます。

検索機能に加えて、C#、F#、または Visual Basic を使用するマネージ コード ユーザーもデバッガー表示機能を利用できることにも触れておきたいと思います。 C++ ユーザーの場合は、NATVIS と呼ばれる同等の機能を利用できます。 NATVIS では、デバッガー ウィンドウに表示されるプロパティを定義できる別の XML ファイルを作成する必要があります。

この説明がお役に立てば幸いです。ご清覧ありがとうございました!

ここで、Visual Studio のインターフェイスをより整理し、パフォーマンスを向上させる方法を検討してみましょう。 Visual Studio でソリューションを開くと、ソリューション エクスプローラーを最後に使用したときのドキュメントの状態、スクロール位置、展開/折りたたみセクションが記憶されます。これは便利ですが、CPU サイクルも消費するため、必ずしも望ましいとは限りません。新たに開始してパフォーマンスを向上させるために、いくつかの設定を変更できます。

[ツール] > [オプション] メニューの [プロジェクトとソリューション] セクションには、考慮すべき設定が 2 つあります。 [ソリューションの読み込み時にドキュメントを再度開く] オプションは以前に開いたドキュメントを記憶し、[ソリューションの読み込み時にソリューション エクスプローラーのプロジェクト階層状態を復元する] オプションはソリューション エクスプローラーの展開/折りたたみ状態を記憶します。これらのオプションのチェックを外すと、Visual Studio はソリューションを開いたときに以前の状態を復元しません。代わりに、ドキュメントを開いたり、ソリューション エクスプローラーでセクションを展開したりしない、白紙の状態から開始します。これにより、パフォーマンスが向上し、各ソリューションの新たなスタートが可能になります。

Visual Studio で Git を使用する場合、生産性とコラボレーションを向上させる機能がいくつかあります。 [Git の変更] ウィンドウでは、Git リポジトリの包括的なビューが提供され、Visual Studio 内から直接変更をステージング、コミット、プッシュできます。このウィンドウにアクセスするには、[表示] > [Git 変更] に移動します。さらに、Visual Studio には、コードの異なるバージョン間の違いを強調表示する組み込みの Git diff ツールが用意されています。この機能にアクセスするには、ソリューション エクスプローラーでファイルを右クリックし、[未変更と比較] または [最新と比較] を選択します。

Visual Studio のもう 1 つの便利な機能は、コードをリファクタリングする機能です。リファクタリングは、コードの動作を変えることなく、コードの構造と読みやすさを向上させるのに役立ちます。 Visual Studio には、変数やメソッドの名前変更、コードの別のメソッドやクラスへの抽出、コード ブロックの再編成など、さまざまなリファクタリング オプションが用意されています。これらのリファクタリング オプションにアクセスするには、リファクタリングするコードを右クリックし、コンテキスト メニューから [リファクタリング] を選択します。 Ctrl + R、Ctrl + R などの一般的なリファクタリング操作にキーボード ショートカットを使用してシンボルの名前を変更することもできます。

コーディング エクスペリエンスをさらに向上させるために、Visual Studio のコード スニペットを利用できます。コード スニペットは、ショートカットを入力して Tab キーを押すことでコードにすぐに挿入できる、事前定義されたコード テンプレートです。 Visual Studio は、さまざまなプログラミング言語およびフレームワーク用の幅広い組み込みコード スニペットを提供します。独自のカスタム コード スニペットを作成して、反復的なコーディング タスクを自動化することもできます。コード スニペットにアクセスして管理するには、[ツール] > [コード スニペット マネージャー] に移動します。

デバッグは開発プロセスの重要な部分であり、Visual Studio は強力なデバッグ機能を提供します。コードにブレークポイントを設定して、実行を一時停止し、変数やオブジェクトの状態を検査できます。デバッグ中に、ウォッチ ウィンドウを使用して、特定の変数または式の値を監視できます。イミディエイト ウィンドウを使用すると、デバッグ中にコードを実行し、式を評価できます。特定の条件が満たされた場合にのみトリガーされる条件付きブレークポイントや、デバッガーを一時停止せずに出力ウィンドウにメッセージを出力するトレースポイントを利用することもできます。

Visual Studio は、コードの品質と正確性を確保するために重要な単体テストもサポートしています。 MSTest、NUnit、xUnit などのさまざまなテスト フレームワークを使用して単体テストを作成できます。 Visual Studio には、ソリューション内で使用可能なすべてのテストが表示され、個別またはグループで実行またはデバッグできるテスト エクスプローラー ウィンドウが用意されています。属性を使用してテスト メソッドとアサーションを定義し、期待される結果を検証できます。 Visual Studio では、単体テストでコードのどの程度がカバーされているかを示すコード カバレッジ分析も提供しています。

大規模なプロジェクトやソリューションを扱う場合、コードベースをナビゲートして理解するのは困難な場合があります。 Visual Studio は、コードのナビゲーションと理解を支援するいくつかの機能を提供します。ソリューション エクスプローラーを使用すると、ソリューションの構造を探索し、特定のファイルまたはクラスにすばやく移動できます。ナビゲート機能 (Ctrl + ,) を使用して、ソリューション内のシンボル、ファイル、またはタイプを検索することもできます。 CodeLens 機能は、参照、変更、テスト カバレッジなどのコードに関する追加情報をエディター内に直接表示します。

Web 開発の場合、Visual Studio は、HTML、CSS、JavaScript などの一般的な Web テクノロジに対する優れたサポートを提供します。 HTML エディターは、IntelliSense、コードの書式設定、エディター内で HTML ページを直接プレビューする機能などの機能を提供します。 CSS エディターは、カラー ピッカー、CSS プロパティの IntelliSense、CSS 変更のライブ プレビューなどの同様の機能を提供します。 Visual Studio は JavaScript デバッグもサポートしているため、ブレークポイントの設定、変数の検査、コードのステップ実行を行って問題を特定して修正することができます。

Visual Studio には、開発エクスペリエンスを向上させる拡張機能とプラグインの広大なエコシステムがあります。これらの拡張機能は、特定のフレームワークまたはプラットフォーム用の追加機能、言語サポート、およびツールを提供します。 [拡張機能] > [拡張機能の管理] に移動すると、Visual Studio 内から拡張機能を直接参照してインストールできます。人気のある拡張機能には、高度なコード分析およびリファクタリング ツールを提供する ReSharper や、軽量のクロスプラットフォーム コード エディターを提供する Visual Studio Code などがあります。

共同プロジェクトに取り組む場合、Visual Studio は Azure DevOps や GitHub などのコラボレーション プラットフォームとの統合を提供します。 Visual Studio プロジェクトをリモート Git リポジトリに簡単に接続し、変更のプッシュ、プル、マージなどの一般的な Git 操作を実行できます。 Visual Studio は、コード レビュー、作業項目の追跡、継続的統合と展開のワークフローのためのツールも提供します。

Visual Studio は、.NET、C++、Python、JavaScript などを含む幅広いプログラミング言語とフレームワークをサポートしています。 IntelliSense、コード スニペット、各言語に合わせたデバッグ機能などの言語固有の機能を提供します。言語固有の拡張機能と SDK をインストールして、好みのプログラミング言語の開発エクスペリエンスをさらに強化できます。

パフォーマンスの最適化とトラブルシューティングのために、Visual Studio はアプリケーションのボトルネックやメモリ リークの特定に役立つプロファイリング ツールを提供します。パフォーマンス プロファイラーを使用すると、コードのパフォーマンスを分析し、最適化できる領域を特定できます。メモリ プロファイラは、アプリケーション内のメモリ関連の問題を検出および診断するのに役立ちます。これらのプロファイリング ツールは、コードの最適化とアプリケーションのパフォーマンスの向上に役立つ詳細なレポートと洞察を提供します。

Visual Studio は、Android や iOS などのプラットフォーム向けのモバイル アプリ開発のサポートも提供します。 Xamarin や React Native などのフレームワークを使用して、クロスプラットフォームのモバイル アプリを作成できます。 Visual Studio は、ユーザー インターフェイスの設計、モバイル アプリのデバッグ、エミュレーターや物理デバイスへの展開のためのツールを提供します。バックエンドの統合とストレージのために Azure Mobile Apps などのクラウド サービスを活用することもできます。

従来のデスクトップ アプリケーションや Web アプリケーションに加えて、Visual Studio はモノのインターネット (IoT) アプリケーションの開発をサポートします。 Visual Studio を使用して、Raspberry Pi、Arduino、その他の IoT デバイスなどのデバイス用のアプリケーションを構築できます。 Visual Studio IoT 開発ツールは、プロジェクト テンプレート、デバッグ サポート、IoT シナリオの展開オプションを提供します。

Visual Studio は、Azure などの一般的なクラウド プラットフォームとの統合によるクラウド開発機能も提供します。 Visual Studio 内からクラウド リソースを直接作成、管理、デプロイできます。クラウド アプリケーションの構築と展開、クラウド サービスとの統合、クラウド リソースの監視のためのツールを提供します。

これらは、Visual Studio が開発者に提供する多くの機能の一部にすぎません。これは、幅広い開発ニーズとワークフローに対応できる、強力で多用途な IDE です。小規模なプロジェクトに取り組んでいる場合でも、大規模なエンタープライズ ソリューションに取り組んでいる場合でも、Visual Studio は開発プロセスを合理化し、生産性を向上させるツールと機能を提供します。

Visual Studio Tips and Tricks for Professionals - Visual Studio Tutorial
Visual Studio Tips and Tricks for Professionals - Visual Studio Tutorial
  • 2020.07.01
  • www.youtube.com
Learn to use Visual Studio like pro from creating layouts to keyboard shortcuts.C++ tutorial: https://youtu.be/mUQZ1qmKlLYJava tutorial : https://youtu.be/Wq...
 

MetaTrader 5 の EA を 20 分でコード完成!



MetaTrader 5 の EA を 20 分でコード完成!

本日、MetaTrader 取引プラットフォーム用の最初の EA (Expert Advisor) の記録を開始できることを嬉しく思います。この EA は MetaTrader の取引システムとして設計されており、ビデオではそのパフォーマンスを評価するための簡単なバックテストも実行します。

まず、MetaTrader プラットフォームを起動し、[ツール] をクリックしてドロップダウン メニューから [MetaQuotes Language Editor] を選択して MetaEditor にアクセスします。 MetaEditor は、エキスパートアドバイザー、MetaTrader のスクリプトおよびインジケーターを作成する場所です。

新しいエキスパートアドバイザーを作成するには、メタエディターの左上隅にある「新規」ボタンをクリックします。表示されるウィザードで、最初のオプションを選択し、「次へ」をクリックします。次に、EA に「First EA」などの名前を付けて、もう一度「次へ」をクリックします。追加のオプションの選択を省略し、[完了] をクリックして続行します。

これで、EA の初期コードが完成しました。まず、コード自体に機能を提供しない灰色のコメントなど、不要なコメントを削除してコードをクリーンアップします。好みに応じて、最初の 5 行とその他の不要な行を削除します。

コーディングを始める前に、EA に何をさせたいのかを少し考えてみましょう。このビデオの目標は、EA が 1 日の特定の時間に買い取引を開始し、別のあらかじめ決められた時間に取引を終了するようにすることです。これを実現するには、2 つの入力変数が必要です。1 つは開始時間用、もう 1 つは終了時間用です。

MetaEditor に戻り、これら 2 つの入力変数を「変数」という新しいセクションで宣言します。 「input」キーワードを使用して、これらの変数をコードの外部から変更できることを指定します。特定の時間の値を入力したいため、型を整数として設定します。たとえば、変数に「openHour」と「closeHour」という名前を付けることができます。

変数を宣言した後、コードをコンパイルしてエラーがないことを確認します。すべてが正しい場合は、ツールボックスにエラー メッセージがないことがわかります。

次に、MetaTrader プラットフォームに戻り、EA を任意のチャートにドラッグします。ナビゲータの「Expert Advisors」の下に EA の名前、バージョン、リンクが表示されます。 EA を拡張すると、コードを変更せずに入力変数にアクセスし、その値を変更できます。

次に、価格が変更されるたびに呼び出される「OnTick」関数に移りましょう。ユーザーが指定した開始時間に達したかどうかを確認したいと考えています。これを行うには、シンボルとサーバーの現在時刻を取得する必要があります。 「datetime」型の「time」という変数を作成し、「TimeCurrent」関数を使用して現在の時刻をそれに割り当てます。

現在の時刻が「time」変数に保存されているので、それがオープン時刻と一致するかどうかを確認できます。 「if」ステートメントを使用して、「openHour」変数と現在時刻の時間コンポーネント (「time.hour」) を比較します。条件が true の場合、「if」ブロックに入ります。

「if」ブロック内で、「OrderSend」関数を使用してポジションをオープンします。パラメータとしてシンボル、取引方向(買い)、ロットサイズ(1ロット)、売値を指定します。さらに、好みに応じてストップロスとテイクプロフィットの値を設定します。

コードをコンパイルし、MetaTrader ストラテジー テスターを使用してバックテストを実行した後、EA が指定されたオープン時間にポジションをオープンしていることがわかります。ただし、その後の価格変動により「OnTick」機能が再びトリガーされ、複数のポジションがオープンされていることがわかります。

複数のポジションが開かれないようにするために、取引がすでに開かれているかどうかを追跡する「isTradeOpen」と呼ばれるブール変数を導入します。最初に、「isTradeOpen」の値を false に設定します。新しいポジションをオープンする前に、「isTradeOpen」が false かどうかを確認します。そうであれば、ポジションのオープンに進み、「isTradeOpen」の値を true に設定します。こうすることで、「OnTick」関数が複数回トリガーされた場合でも、まだオープンな取引がない場合にのみ新しいポジションがオープンされます。

このロジックを実装した後、コードを再度コンパイルし、バックテストを実行します。今回は、EA が指定されたオープン時間にポジションをオープンし、前のポジションがクローズされるまで追加のポジションをオープンしないことがわかります。

指定された終了時刻に取引を終了することに移り、「OnTick」関数に別のチェックを導入する必要があります。ポジションを開いた後、現在時刻とユーザーが指定した決済時刻を比較します。一致する場合は、「if」ブロックに入ります。

「if」ブロック内で、「OrderClose」関数を使用して取引を終了します。決済するポジションのチケット番号、ロットサイズ、入札価格をパラメーターとして提供します。さらに、必要に応じて、ストップロスやテイクプロフィットの値などの追加パラメータを設定できます。

コードを再度コンパイルし、バックテストを実行して、指定された終了時刻に取引が終了することを確認します。バックテスト中、取引履歴をチェックして、指定された時間に従ってポジションがオープンおよびクローズされていることを確認できます。

MetaTrader 取引プラットフォーム用の最初の EA の作成に成功しました。 EA は、特定の開始時刻に買い取引を開始し、事前に設定された終了時刻に購入取引を終了するように設計されています。コードを変更せずに開始時間と終了時間をカスタマイズできるように入力変数を実装しました。チェックと変数を導入することで、一度に 1 つの取引のみが開かれ、指定された終了時間に取引が終了することが保証されます。

Code complete EA for MetaTrader 5 in 20 Minutes!
Code complete EA for MetaTrader 5 in 20 Minutes!
  • 2022.06.27
  • www.youtube.com
Program your first EA for MetaTrader. I will show you how you can easily code your first Expert Advisor or trading system in Mql5.As an algo trader I develop...
 

移動平均クロスオーバー EA mql5 プログラミング



移動平均クロスオーバー EA mql5 プログラミング

こんにちは、Toby です。今日のビデオでは、MetaTrader 5 用の単純な移動平均クロスオーバー エキスパート アドバイザーをコーディングする方法を説明します。始めましょう。

まず、エキスパートアドバイザーに何をしてもらいたいかを定義しましょう。 EA は、高速移動平均 (青色の線) が低速移動平均 (赤色の線) を上回ったときに買いポジションをオープンし、高速移動平均が低速移動平均を下回ったときに売りポジションをオープンするようにしたいと考えています。また、EA にストップロスとテイクプロフィットを追加し、移動平均の期間の入力変数も追加します。

コーディングを開始するには、MetaTrader 5 で MetaEditor を開きます。テンプレートを使用して新しいエキスパート アドバイザを作成し、「移動平均」という名前を付けます。不要な行やコメントを削除してコードをクリーンアップします。次に、高速移動平均と低速移動平均の期間の入力変数を追加します。これらの変数のデフォルト値を設定し、EA 設定の入力タブに表示します。

OnInit 関数でのユーザー入力をチェックして、有効な値が入力されていることを確認します。入力が無効 (ゼロまたは負) の場合は、警告メッセージが表示され、EA が停止します。 ma 関数を使用して、高速移動平均と低速移動平均のハンドルを作成します。各移動平均のシンボル、期間、および入力変数を設定します。ハンドルの作成が成功したかどうかを確認します。そうでない場合は、警告メッセージを表示し、EA を停止します。インジケーター値を保存するためのグローバル変数を作成します。高速バッファと低速バッファには動的配列を使用します。 OnTick 関数では、最新のインジケーター値をバッファーにコピーし、十分なデータが利用可能かどうかを確認します。そうでない場合は、戻って警告メッセージを表示します。

画面にインジケーターの値を印刷して、すべてが正しく機能しているかどうかを確認します。コメント機能を使用して、高速移動平均と低速移動平均の値を表示します。

ストラテジー テスターで EA をテストし、インジケーターの値が正しく表示されるかどうかを確認します。これで、移動平均のクロスオーバーを確認できます。高速移動平均がバー 1 で低速移動平均を下回り、バー 0 で低速移動平均を上回っている場合、クロスオーバーがあります。この場合は買いポジションをオープンします。

ポジションをオープンするには、CTrade クラスを使用します。取引変数を定義し、必要なアクションを進めます。コードをコンパイルし、ストラテジー テスターで EA をテストして、クロスオーバー条件が正しく機能し、それに応じてポジションがオープンされるかどうかを確認します。

MetaTrader 5 での移動平均クロスオーバー エキスパート アドバイザのコーディングは以上です。その後、trade.Buy 関数を使用して買いポジションをオープンできます。当社はポジションの量を指定します。これは固定値またはリスク管理戦略に基づいて指定できます。ここでは、0.1 ロットの固定ボリュームを使用してみましょう。次に、売りポジションを確認するための条件を追加する必要があります。高速移動平均がバー 1 の低速移動平均より上にあり、現在の足の低速移動平均より下にある場合は、反対方向のクロスオーバーがあります。この場合、売りポジションをオープンしたいと考えています。これを行うには trade.Sell 関数を使用できます。

最後に、ポジションにストップロスと利食いを追加できます。 trade.SetStopLoss 関数と trade.SetTakeProfit 関数を使用します。この例では、ストップロスを 100 pips に設定し、利確を 200 pips に設定しましょう。これで、単純移動平均クロスオーバー エキスパート アドバイザの完全なコードが完成しました。これをコンパイルして、MetaTrader 5 プラットフォームでテストできます。

エラーなくコードをコンパイルしたら、エキスパート アドバイザーを保存して、MetaTrader 5 で使用できます。実際のお金で使用する前に、エキスパート アドバイザーをバックテストして最適化することを忘れないでください。

Moving Average Crossover EA mql5 Programming
Moving Average Crossover EA mql5 Programming
  • 2022.09.06
  • www.youtube.com
Today I will show you how to code a simple Moving Average Crossover EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a f...
 

レンジ ブレークアウト EA mql5 プログラミング |パート1/4



レンジ ブレークアウト EA mql5 プログラミング |パート1/4

こんにちは、Toby です。今日のビデオでは、MetaTrader 5 のタイム レンジ ブレイクアウト エキスパート アドバイザー (EA) をコーディングする方法を説明します。目標は、ビデオで示されている戦略と同様の結果を達成することです。

まず、EA の背後にあるロジックについて説明します。特定の時刻に開始し、別の時刻に終了する単純な時間範囲を定義します。 EA はこの範囲内の最高価格と最低価格を保存します。価格がレンジの後の最高価格を上回った場合、EA は買い取引に入ります。逆に、価格が範囲を下回った場合、EA は売り取引に入ります。さらに、すべてのポジションを決済するための終了時間を設定します。この単純なロジックが EA の指針となります。

コーディングを開始するには、MetaEditor を開いて新しいエキスパート アドバイザを作成します。個人の好みに応じて、不要な行を削除してテンプレート コードをクリーンアップします。

次に、開始時間、範囲期間、終了時間、ロットサイズ、およびマジックナンバーの入力変数を定義します。これらの入力により、ユーザーは EA の動作をカスタマイズできます。誤入力を防ぐために、入力値を確認することが重要です。たとえば、マジック ナンバーがゼロまたは負ではないこと、ロットが負でないこと、開始時刻と期間が有効な範囲内であること、および終了時刻が開始時刻と範囲の期間を足したものと等しくないことを確認できます。

入力変数を定義し、その値を確認した後、グローバル変数の作成に進みます。これらの変数は EA 全体で使用されます。範囲に関連する変数を「範囲構造」と呼ばれる構造にグループ化します。この構造には、開始時間、終了時間、終了時間、高値と安値の変数、およびエントリー、高ブレイクアウト、低ブレイクアウトのフラグが含まれています。

さらに、構造体のコンストラクターを定義し、変数の初期値を事前定義します。これは、構造体をデフォルト値で初期化するのに役立ちます。また、各変数の後にコメントを追加して、その目的を説明します。

コードをコンパイルしてエラーがないかチェックし、すべてが正しく動作していることを確認します。

最後に、MetaTrader 5 の「MqlTick」タイプの「MqlTick」や「last_tick」など、さらにいくつかの変数を作成します。また、取引関連の操作を処理するために「CTrade」型の変数も定義します。

この時点で、EA に必要な変数と構造を設定しました。次のパートでは、「OnTick」関数での EA の実際のロジックのコーディングについて詳しく説明します。ビデオの次の部分では、OnTick 関数での Expert Advisor の実際のロジックのコーディングに焦点を当てます。ただし、先に進む前に、まずこれまでに行ったことを確認してみましょう。

まず、範囲の開始時間、期間、終了時間、ロットサイズ、マジックナンバーなど、EA の入力変数を定義します。また、ユーザーがこれらの入力に有効な値を入力していることを確認するための入力検証チェックも追加しました。次に、開始時刻、終了時刻、終了時刻、レンジの高値と安値、エントリー、高値ブレイクアウト、安値ブレイクアウトのフラグなど、レンジに関連する変数を保存する rangeStructure という構造体を作成しました。次に、変数をデフォルト値で初期化するために rangeStructure のコンストラクターを定義しました。さらに、rangeStructure のインスタンス、現在および前のティックを格納する MqlTick 型の 2 つの変数、取引操作を処理する CTrade オブジェクトなど、いくつかのグローバル変数を宣言しました。

次に、EA のメイン ロジックをコーディングするための OnTick 関数の実装に移りましょう。ビデオの続きは次のとおりです。 OnTick 関数では、まず SymbolInfoTick 関数を使用して現在のティック情報を更新します。これにより、買値と売値、ティック時間にアクセスできるようになります。次に、現在のティック時間がユーザーが定義した範囲内にあるかどうかを確認します。これを行うには、現在のティック時間を範囲の開始時間と終了時間と比較します。ティック時間が範囲内にある場合は、flagEntry を true に設定し、範囲内にあることを示します。

その後、ハイブレイクアウトをチェックします。現在のティック価格が範囲の前の高値を超え、flagHighBreakout が false の場合、買い取引を開始します。繰り返しのエントリを避けるために、flagHighBreakout を true に設定します。同様に、低ブレイクアウトもチェックします。現在のティック価格が範囲の前の安値を下回り、flagLowBreakout が false の場合、売り取引を開始します。複数のエントリを防ぐために、flagLowBreakout を true に設定します。最後に、現在のティック時間が終了時間と等しいかどうかを確認します。その場合は、 trade.CloseAll メソッドを使用してすべてのオープン ポジションをクローズします。

それがEAの基本的なロジックです。もちろん、ストップロスとテイクプロフィットのレベル、資金管理ルール、追加の取引フィルターなど、機能を強化するために追加できる要素もあります。ただし、このビデオでは、タイムレンジブレイクアウト戦略の中核となるコンセプトに焦点を当てました。

この EA は出発点として機能することを目的としており、要件や取引の好みに応じてさらにカスタマイズできることに注意してください。

ビデオの次の部分では、コーディング プロセスを続行し、説明したロジックを実装するために必要なコードを追加します。このビデオが役立つと思われた場合は、「いいね!」を残してチャンネル登録を忘れずに、今後のビデオの最新情報を入手してください。ご質問がある場合やサポートが必要な場合は、お気軽にコメントを残してください。喜んでお手伝いいたします。ご視聴いただきありがとうございます。また次のビデオでお会いしましょう。さよなら!

Range Breakout EA mql5 Programming | Part 1/4
Range Breakout EA mql5 Programming | Part 1/4
  • 2022.09.25
  • www.youtube.com
Today I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range br...
 

レンジ ブレークアウト EA mql5 プログラミング |パート2/4



レンジ ブレークアウト EA mql5 プログラミング |パート2/4

こんにちは、Toby です。今日のビデオでは、MetaTrader 5 のタイム レンジ ブレイクアウト EA のコーディングを続けます。最初のビデオをまだ見ていない場合は、ここにリンクがあります。前回のビデオでは、EA のロジックとコード化しようとしている内容について説明しました。

次に、MetaEditor に切り替えてコーディングを再開しましょう。私たちは、シンボルの価格が変更されるたびに呼び出される OnTick 関数に取り組んでいきます。この関数では、範囲計算とブレークアウト チェックをコーディングします。まず、シンボルの現在のティックを取得する必要があります。現在のティックを currentTick という変数に格納します。また、前のティックを格納する変数previousTickもあります。

次に、新しい範囲を計算する必要があるかどうかを確認します。新しい範囲を計算するには、いくつかの条件があります。

  1. 範囲終了時間が設定されており、現在のティック時間が範囲終了時間以上である場合、新しい範囲が計算されます。

  2. ハイブレイクアウトフラグとローブレイクアウトフラグの両方が true に設定されている場合、新しい範囲が計算されます。

  3. EA を初めて実行し、範囲をまだ計算していない場合は、新しい範囲を計算します。

  4. 範囲終了時間がゼロではなく、範囲を過ぎていて範囲に入っていない場合は、新しい範囲が計算されます。

また、空きポジションがあるかどうかも確認します。オープンポジションがない場合は、新しいレンジの計算に進みます。

新しい範囲を計算する必要があると判断したら、CalculateRange 関数を呼び出します。この関数では、すべての範囲変数をデフォルトの状態にリセットします。次に、その日の開始時刻を取得し、入力範囲開始時刻を分単位で加算することにより、範囲開始時刻を計算します。計算された開始時刻を過ぎている場合は、土曜日と日曜日を週末として翌日にずらします。同様に、入力範囲の継続時間を分単位で開始時刻に加算して、範囲の終了時刻を計算します。終了時間が土曜日または日曜日に当たる場合は、次の有効日にシフトされます。

また、開始時刻と終了時刻の計算と同じロジックを使用して、範囲終了時刻も計算します。計算された時間をチャート上で視覚化するには、ObjectCreate 関数を使用してオブジェクトを作成します。範囲開始時間の垂直線オブジェクトを作成し、以前に描画されたオブジェクトを削除します。

これまでの進捗状況です。次のビデオでコーディングを続けます。

Range Breakout EA mql5 Programming| Part 2/4
Range Breakout EA mql5 Programming| Part 2/4
  • 2022.10.01
  • www.youtube.com
Today I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range br...
 

レンジ ブレークアウト EA mql5 プログラミング |パート3/4


レンジ ブレークアウト EA mql5 プログラミング |パート3/4

こんにちは、Toby です。今日のビデオでは、ブレイクアウト EA のコーディングを続けます。前のビデオでは、範囲の開始時刻、終了時刻、終了時刻をすでに計算しました。ここで、レンジ高値とレンジ安値、さらにブレイクアウト条件とポジション決済をコード化したいと思います。以前のビデオをまだ見ていない場合は、以下の説明にあるリンクをご覧ください。 MetaEditor にジャンプしてコーディングを始めましょう。

まず、OnTick 関数に進みます。まず、範囲内にあるかどうかを確認し、最高値と最低値を保存します。 if ステートメントを使用して、現在の時刻が範囲の開始時刻と終了時刻の間にあるかどうかを確認します。そうであれば、それに応じて最高値と最低値を更新します。また、範囲内にティックがあることを示すために、エントリ フラグを true に設定します。次に、高値と安値の範囲のチャート オブジェクトを更新します。

次に、DrawObject 関数に移動して、範囲の高レベルと低レベルを描画します。終了時間のコード ブロックをコピーし、高レベルに必要な変更を加えます。オブジェクト名「レンジ高値」を使用し、レンジ開始時間からレンジ高値までトレンドラインを描きます。また、範囲の上限値を表示するようにツールチップを更新します。レンジ安値についても同じことを行い、オブジェクト名を変更し、レンジ開始時間からレンジ安値までトレンドラインを描きます。

レンジの終了時間から終了時間まで線を引いてブレイクアウトを示すには、コード ブロックを再度コピーし、それに応じて変更します。オブジェクト名を変更し、範囲終了時刻から終了時刻まで傾向線を描きます。また、線のスタイルを点線に設定します。

ビジュアル テストをコンパイルして実行すると、チャート上にレンジの高値、レンジの安値、ブレークアウト ラインが表示されることがわかります。次に、ブレークアウト条件をコーディングしましょう。 OnTick 関数内に CheckBreakouts という新しい関数を追加します。まず、範囲終了時刻を過ぎているかどうかを確認します。また、エントリ フラグが true に設定されていることを確認します。これは、範囲内にティックがあることを示します。これらの条件が満たされている場合は、高ブレークアウトと低ブレークアウトのチェックに進みます。

ハイブレイクアウトの場合、ハイブレイクアウトフラグが偽であるかどうか、および最後のティックのアスク価格が範囲の高値以上であるかどうかをチェックします。その場合は、PositionOpen 関数を使用して買いポジションをオープンします。同様に、ローブレイクアウトの場合、ローブレイクアウトフラグが false であるかどうか、および最後のティックの入札価格が範囲ロー以下であるかどうかをチェックします。これらの条件が満たされた場合、売りポジションをオープンします。

コードをコンパイルし、ビジュアル テストを実行して、ブレイクアウトが発生したときにポジションがオープンされることを確認します。次に、ポジション決済を実行します。新しい範囲を計算する前に、現在の時間が範囲終了時刻以上であるかどうかを確認します。その場合は、ClosePositions 関数を呼び出します。この関数は、指定されたマジックナンバーを持つすべてのオープンポジションをループし、PositionClose 関数を使用してそれらをクローズします。カウントダウン ループを使用して、ループ中にポジションの合計数が変化した場合でも、すべてのポジションがクローズされるようにします。

最後に、コードをコンパイルし、ビジュアル テストを実行して、レンジ終了時間に達したときにポジションが閉じられることを確認します。

このビデオはここまでです。ご質問がございましたら、お気軽に以下のコメント欄に残してください。さらに多くのコーディングビデオを視聴するには、「いいね」を押して購読することを忘れないでください。見てくれてありがとう!

Range Breakout EA mql5 Programming | Part 3/4
Range Breakout EA mql5 Programming | Part 3/4
  • 2022.10.09
  • www.youtube.com
Today I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range br...