サンプルフォームをカスタマイズする

Pocket

前回、ヘルプのサンプルフォームを表示させました。今回はこれをカスタマイズしたいと思います。前回取り込んだサンプルフォームを使用しますので、前回の記事の内容を実行していない場合は実行しておいてください。


まず、サンプルフォームをTradeStation側で表示させてから、EasyLanguage側のコード編集画面を開きます。

挿入(I) → インジケーター(I)… → !ex_WinFormを選択 → EasyLanguageを編集(E)…を選択
インジケーターの挿入

サンプルフォームのコード

なにやら英語でいろいろ書いてますが、ほとんどコメントで実コードは少ししかないので大丈夫です。コメントは無視してください。プログラミングの内容に関して概要を説明します。フォームを配置して、そのフォームにコントロール(ボタンとラベル)を配置して、ボタンクリックに対するイベント処理を記述しています。VisualStudioなどの統合開発環境を使ったプログラミングでは、イベント処理のコード(関数などの骨組み)などはGUIをダブルクリックすれば自動的に挿入されますが、EasyLanguageではコードを手で書く必要があります。ただ引数などの形は決まっているので、どこからかコピー・ペーストして中身を変更すればすぐに実装できます。では、プログラミングしていきます。

まず、この状態で独自のプログラミングをすると、前回ダウンロードしてヘルプにあったサンプルフォームと混同するので名前を変更します。名前はなんでもいいのですが、他のインジケーターとも区別したいので、あたまに$をつけるようにしました。$hello_worldとします。

ファイル(F) → 名前をつけて保存(A)… → $hello_world → OK

プログラムファイルの名前変更

次にコードを編集します。コードの中の最初の関数(AnalysisTechnique_Initialized)からまず変更します。以下のように変更してください。この関数の形はwindowsのプログラミングではよく見る形です。第一引数の”sender”はイベントを発生させたオブジェクトの参照です。どのコントロールでイベントが発生したのを知ることができます。第二引数はイベントのパラメータで、例えばマウスクリックだとマウスの座標が入ります。今回は両方とも使いません。

文字列を少し修正しただけで、前回のサンプルとほとんど変更していませんが、改めてコードを順に説明します。(3行目から)

  1. ウィンドウのキャプションと縦横のサイズを指定してウィンドウ(フォーム)を作成しています。
  2. ボタンのキャプションと縦横サイズを指定してボタンを作成しています。
  3. 初期入力文字と縦横サイズを指定してテキストボックスを作成しています。
  4. フォーム上でのボタンの位置(XY座標)を指定しています。
  5. ボタンクリックイベントを登録してイベント発生時に受け取る関数を指定しています。
  6. フォーム上でのテキストボックスの位置を指定しています。
  7. フォームにボタンを挿入しています。
  8. フォームにテキストボックスを挿入しています。
  9. フォームを表示する位置を指定しています。
  10. フォームを常に前面に表示するように指定しています。
  11. フォームを表示させます。

直観的にわかりにくいのは、クリックイベントを登録しているところくらいだと思います。このボタンのクリックイベントが発生した場合は、この関数を呼んでくださいというお願いをしている感じです。”+=”で登録されて、”-=”で解除されます。マウスクリックやキーダウンなど複数のイベントを登録できるので、複数登録する場合はどんどん加算していくイメージです。

最後の関数も同様に文字列を修正する程度ですが、以下のように修正します。

簡単に説明します。(3行目から)

  1. テキストボックスの文字列を変更しています。
  2. ボタンのキャプションを変更しています。

修正が終わったらコンパイル(F3)してください。

コンパイル終了

ウィンドウ下側のアウトプット領域に”0 エラー, 0 警告”と出ていれば問題なくコンパイルできています。前回記事のようにインジケーターを挿入してみてください。表示されたフォームのボタンを押すと以下のようなフォームに変わると思います。

プログラム実行後の画面

カスタマイズしたフォームを表示させることができました。今回作ったプログラムはここからダウンロードできます。(EasyLanguageからエクスポートすると、バイナリファイルが出力されて扱いずらいのでテキストファイルをリンクしています。そのままインポートできませんので、適宜、インジケーターを新規作成した後に貼り付けるなどして使用してください。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です