• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • ホーム
  • このサイトについて
  • 著者について

戦略的な投資家

FXや株の投資戦略を追求するサイト

  • コース一覧
  • メカニカルな
    裁量トレード
  • バックテスト結果まとめ
  • システムトレード
  • 値動きの特徴
    アノマリー/時間帯
  • プライスアクション
    攻略の完全マップ
    • 初心者向けのプライスアクション講座 はじめに~目次
    • プライスアクション完全マップ【裁量トレードから自動売買まで】
    • デイトレードとスキャル
  • FX完全マップ
    • FXの予想
    • マクロファンダ
    • MT4のすべて
    • インジケーター
    • エリオット波動
    • エリオット波動完全マップ
  • 株式投資
    • 株の暴落を攻略する方法
    • コロナショックの暴落は投資チャンス【具体的な銘柄/ETF選びとタイミング】
You are here: Home / Easylanguage / EasyLanguage初心者講座② Print文でプログラムの動きを理解する(超重要)

EasyLanguage初心者講座② Print文でプログラムの動きを理解する(超重要)

By ロボ | 更新日 2019年6月19日

EasyLanguageのプログラムはローソク足ごとに処理が実行されます。
この動きは慣れてしまえば簡単ですが、はじめのうちは少し戸惑う事があると思います。
基礎講座②ではPrint文を使ってEasyLanguageのプログラムの動きについて詳しく説明します。

もくじ

  • 今回作成するEasyLanguageプログラム
  • 今回学習する内容
  • 解説
    • 予約語:Print
    • 添字(そえじ)
    • EasyLanguageプログラムの動きについて
      • インジケーターの処理の流れ
      • 過去のデータの参照とMaxbarsback
  • まとめ

今回作成するEasyLanguageプログラム


<コード>

1
2
Plot1[0](Close[0], "終値");
Print(Close[0]);

今回はこのインジケーターを使ってEasyLanguageプログラムの動きについて説明をします。
今回の内容はEasyLanguageプログラミングを理解するうえで最も重要なことの一つです。
少しややこしい部分もありますが、出来るだけわかりやすく説明しますので
しっかり理解するようにしてください。
ここさえ理解出来てしまえば、今後のEasyLanguage学習をスムーズに進めることが出来ると思います。

今回のコードは「EasyLanguage印刷ログ」へ値を出力するので
以下の操作で印刷ログを表示してください。


TradeStationのメニューバーから「①表示」→「②EasyLanguage印刷ログ」にチェックを入れます。


印刷ログ(赤枠)が表示されればOKです。

 

今回学習する内容

  • 予約語Printについて
  • 添字(そえじ)について
  • EasyLanguageプログラムの動きについて

EasyLanguageプログラムの動きの解説の前に、まずはコード中で使用している
「Print」と「添字」について簡単に解説をします。

 

解説

予約語:Print

パラメーターで指定した値を出力することが出来ます。
出力先はデフォルトでは「印刷ログ」となります。
Printの使い方は以下のようになります。

Print(①出力先, ②~出力する値);

①出力先(省略可)

値の出力先を指定します。
出力先には「ファイル(CSVファイル等)」や「プリンタ」を指定することが出来ます。
出力先を指定せず省略した場合は、デフォルトの「印刷ログ」に出力されます。

②~出力する値

パラメーターとして指定した値を出力します。
②,③,④…とカンマ区切りで複数の値をつなげて出力することも出来ます。

<使用例1>

1
Print(File("C:\BPDATA\Data.csv"), Close);

※CSVファイル[C:\BPDATA\Data.csv]に終値が出力されます。

 

<使用例2>

1
Print(Open, "-" , High, "-" , Low, "-" , Close);

※印刷ログに4本値(始値-高値-安値-終値)を出力します。

 

添字(そえじ)

添字とは、配列の要素を指し示すための通し番号のことで、
具体的には、Plot1[0]やClose[0]の[0]の部分のことを言います。
配列の詳細についての説明は割愛しますが、連続したデータを扱うための仕組みで
ほとんど全てのプログラム言語で実装されている仕組みです。
EasyLanguageではこの配列という仕組みを使って過去のデータの履歴を管理しています。
0が一番新しいデータになり、0の部分を増やしていくことで過去のデータを参照できます。
例えばClose[1]とすることで、1つ前のローソク足の終値を参照することが出来ます。
なお、添字が0の場合は省略することが出来ます。
(CloseとClose[0]は同じ値になります)

 

EasyLanguageプログラムの動きについて

インジケーターの処理の流れ

インジケーターをチャートに適用した際、まずはチャートに読み込まれているローソク足の
数だけインジケーターの処理が実行され、その後、ティック(歩み値)が発生したり、
新しいローソク足が作成されたりしたタイミングで都度処理が実行されます。
※他の分析テクニックやストラテジーの場合も基本的には同じ動きになります。

今回作成したインジケータで具体的な処理の流れを見てみましょう。
今回は処理の流れが見えやすいように、チャートに読み込む足の数を
10本に設定しています。
(確定済みの過去10本と未確定の1本で計11本のローソク足が表示されます)

 

この設定のチャートに今回作成したインジケーターを適用すると以下のようになります。

<印刷ログに出力された内容>

1
2
3
4
5
6
7
8
9
10
108.07
108.15
108.46
108.39
108.20
108.45
108.52
108.50
108.39
108.21

チャート上には一番最初のローソク足を除く、計10本の足にラインが引かれ
印刷ログには計10行のデータが出力されました。
この処理が先ほど記載した「まずはチャートに読み込まれているローソク足の
数だけインジケーターの処理が実行される」という部分です。

もう少し詳細に処理の流れを見ていきましょう。

<印刷ログの内容>

1
108.07

インジケーターの1回目の処理が実行された状態です。
処理は古いローソク足から順に実行されていきますが、一番最初の足は無視されるので、
今回のインジケーターでは1回目の処理は左から2本目の足で実施されます。
1回目の処理が行われた状態では、2本目のローソク足が一番新しいデータ(=添字が[0])になるので、
Close[0]は2本目のローソク足の終値の108.07になり、
Plot1[0]によって値がプロットされる位置は、2本目のローソク足の位置になります。

 

<印刷ログの内容>

1
2
3
4
5
108.07
108.15
108.46
108.39
108.20

少し処理を進めて、5回目の処理が実行された状態です。
5回目の処理が実施された状態では左から6本目のローソク足が一番新しいデータになるので、
Close[0]は6本目のローソク足の終値の108.20になり、
Plot1[0]によって値がプロットされる位置は、6本目のローソク足の位置になります。
ちなみにこの5回目の処理が実施された状態でClose[1]の値を参照すると
左から5本目の足の終値(108.39)となります。


<印刷ログの内容>

1
2
3
4
5
6
7
8
9
10
108.07
108.15
108.46
108.39
108.20
108.45
108.52
108.50
108.39
108.21

最後のローソク足まで処理が実行された状態です。
チャートにインジケータが適用されると、まずはこの状態になります。
市場が動いていないときはここで処理が終了となりますが、
市場が動いているときには「その後、ティック(歩み値)が発生したり、
新しいローソク足が作成されたりしたタイミングで都度処理が実行される」
の部分が実行されます。

 


<印刷ログの内容>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
108.07
108.15
108.46
108.39
108.20
108.45
108.52
108.50
108.39
108.21
108.20
108.19
108.20
108.19

※11行目以降がティックの発生で出力された値

インジケーターを適用してから少し時間がたった状態です。
ティックが発生するたびに印刷ログにClose[0]の値が出力されます。
Plot1[0]がプロットされる位置は最後のローソク足の位置なので、
新しい足が出来るまではティックが発生するたびにPlot1[0]の値が上書き更新されます。
なので、相場が動いている状態でこのインジケーターを表示すると
終値(=Close[0])の値の変化に合わせて最後のラインの位置が上下するような動作をします。

 

過去のデータの参照とMaxbarsback

移動平均線に代表されるようなほとんどのインジケーターは過去のデータを参照します。
過去のデータはClose[3]のように添字の数値を変更することで参照することが出来ます。
ここでは、過去のデータを参照した場合のインジケーターの動きについて説明します。

まずは、コードを以下のように書き換えます。
<コード>

1
2
Plot1[0](Close[3], "終値");
Print(Close[3]);

 


<印刷ログの内容>

1
2
3
4
5
6
7
8
108.29
108.07
108.15
108.46
108.39
108.20
108.45
108.52

ラインが描かれ始める位置(=1回目の処理が実行された位置)が後ろに移動しました。
なぜこのようになるのかを確認してみましょう。

 

Close[3]は処理を実行しているローソク足から左に3本分移動した位置のローソク足の終値です。
一番最初のローソク足は無視されるので、Close[3]のデータを最初に参照できるのは
1回目の処理が実行された位置になるのがわかると思います。

このようにインジケーターが過去の情報を参照する場合は、過去のデータを参照できる位置から
処理を始める仕組みになっています。
そして、インジケーターが過去何本分のデータを参照するかは予約語の「Maxbarsback」の値を参照することで
確認ができます。

以下のようにコードを変更してMaxbarsbackの値を印刷ログに出力してみます。

<コード>

1
2
Plot1[0](Close[3], "終値");
Print(Maxbarsback);

 

<印刷ログの内容>

1
2
3
4
5
6
7
8
   1.00
   4.00
   4.00
   4.00
   4.00
   4.00
   4.00
   4.00

Maxbarsbackは4に設定され、Maxbarsbackの本数分経過した足から処理が
実行されていることがわかると思います。
最初に1が出力されていますが、Maxbarsbackを自動検出する設定になっている場合は
一度最小値の1で一度処理を実行した後、適切な値が設定されるようです。

ちなみにMaxbarsbackの値は、デフォルトでは自動検出になっていますが、
以下のインジケーターの設定から手動で設定することも出来ます。

 

まとめ

今回のポイントは以下の通りです。
EasyLanguageプログラムでは

  • チャートに読み込まれているローソク足の数だけインジケーターの処理が実行される
  • 全てのローソク足の処理が実行された後は、ティック(歩み値)が発生したり、
    新しいローソク足が作成されたりしたタイミングで都度処理が実行される
  • 過去のデータを参照する場合は、そのデータを参照可能な位置から処理が始まる

今回は以上です。

ブログランキングの1位を目指してます!

記事がお役に立てたなら↓のボタンを1回ずつクリックお願いします。

人気ブログランキング
人気ブログランキング

にほんブログ村 為替ブログ システムトレード 自作EA派へ
にほんブログ村

最後までお読みいただき、ありがとうございました。

このブログは投資やトレードのかなり深い内容をお伝えしていますので、一通り読んでいただければ、相当な力がつきます。

ただ記事数がとても多いので、全て読むのは大変かもしれません。

無料メール講座では、「現実的な聖杯」を作るために必要なノウハウや情報をメールで分かりやすく発信しております。

メール講座の読者様は全市場の季節性アノマリーチャートをプレゼントしております。

Filed Under: Easylanguage Tagged With: Easylanguage, Print, 初心者

INDI株(自動運転テーマ株)が支持線で含み線の陽線且つ短期的な比較分析の強さ

自動運転のテーマ株に試し玉~インディ・セミコンダクター(INDI)【裁量トレードネタ】

トランプ大統領により米国の黄金時代が来る!という声も聞こえてきます。そんななか僕たち投資家は、どの銘柄が次の大きな成長を遂げるかを虎視眈々と狙ってます。 自動車産業は今、大きな変革の波に直面しており、特に自動運転技術が注 […]

米国株のバックテスト 連続上げvs連続下げ

米国株のバックテスト 連続した上昇 vs 連続した下落

米国株は、日足が連続して上昇した後に買うのが有利でしょうか?それとも連続して下げた後に買うのが有利でしょうか? S&P500採用銘柄全銘柄の過去35年間のデータを使って徹底的にバックテストしました。 結論から言うと、米国 […]

短期移動平均線のデッドクロスとゴールデンクロスの買いをバックテスト

米国株のバックテスト スイングトレードなら移動平均線のデッドクロスで買う方が勝ちやすい

米国株のバックテストの続きです。 今回は、日足の終値と短期移動平均線のゴールデンクロスとデッドクロスでの買いをバックテストしました。 通常はゴールデンクロスは買い、デッドクロスはショートのシグナルなのですが、今回はどちら […]

米国株のバックテスト X日高値安値抜けと200日移動平均線【ドンチャンチャネル】

米国株のバックテスト、今回はX日間の高値か安値を抜けたら買う。そして一定期間保有してエグジットする、というのをテストしたいと思います。 いわゆる、ドンチャンチャネルブレイクアウト手法のバックテストということになりますが、 […]

200日移動平均線の下で推移中にRSIの買われすぎと売られすぎ

米国株のバックテスト~RSIの優位性はナスダック100銘柄でも通用するか?

先日行った米国株(S&P500採用銘柄)でのRSIの買われすぎ/売られすぎの傾向は、ナスダック100採用銘柄でも同じなのかを追加でバックテストしました。 結論から言うと、ナスダック100においても、S&P […]

200日移動平均線とRSIを組み合わせてバックテスト

米国株のバックテスト RSIと200日移動平均線の組合せ

米国株をRSIを使ってバックテストする企画の続きです。今回はRSIの買われすぎと売られすぎに200日移動平均線を追加してバックテストしてみます。 まずは結論から。 200日移動平均線の上で推移している場合、RSIの売られ […]

About ロボ

株のシステムトレーダー。エクセルを使った株のサヤ取り自動売買システムが専門。

Primary Sidebar

株のスイングトレードを中心に、FXや先物もトレードします。
基本は裁量トレーダーですが、高いバックテストの能力を持っており、システムトレードの良い部分はどんどん取り入れていってます。
複数の戦略ポートフォリオを運用し、市場平均を上回るリターンを市場平均よりも小さなドローダウンで実現するのが僕の仕事です。
AmazonKindleで2冊のベストセラー電子書籍を持つ「プロになるためのデイトレード入門」「日本一即戦力なFX講座」 詳しくは...

自動売買に関する凄いブログのリスト↓

人気ブログランキング
人気ブログランキング

にほんブログ村 為替ブログ システムトレード 自作EA派へ
にほんブログ村

カテゴリー

  • AUDUSD(オージードル)予想
  • CHFJPY(スイスフラン円)予想
  • Easylanguage
  • EURJPY(ユーロ円)予想
  • EURUSD(ユーロドル)予想
  • FX
  • FX為替の予想
  • GBPJPY(ポンド円)予想
  • GBPUSD(ポンドドル)予想
  • MT4
  • NZDJPY(NZドル円)予想
  • Trend-Follow
  • USDJPY(ドル円)予想
  • XAUUSD(ゴールド)予想
  • ご質問と回答
  • アノマリー
  • インジケーター
  • エリオット波動
  • システムトレード
  • ビットコイン予想
  • ファンダメンタルズ
  • プライスアクション
  • レラティブストレングス
  • 投資
  • 日経平均
  • 株トレード
  • 株価予想
  • 株式投資
  • 現実的な聖杯
  • 移動平均線
  • 米国株
  • 自動売買

Copyright © 2019 戦略的な投資家 | 免責事項