更新日:2020年4月26日
EasyLanguageの覚え書きや繰り返し使うコード類を、管理人あしお が書き溜めるページです。
随時 追加更新 してゆきます。
使用例は Tradestation開発環境のエディターに そのまま貼り付けて 使用できるように記載しています。
※開発環境のエディターに貼り付ける際、文字列を表す ” が上手く貼り付けられない場合は手で ” を入力し直してください。(入力は半角)
<参考文献>
〇株式投資自動売買で儲ける システムトレード「トレードステーション入門」 (ブルーガイド・グラフィック) ムック 実業之日本社
〇トレードステーション ヘルプ ⇐ ヘルプ へのリンク 貼っています(裏技的な使い方で便利)
○Easy Languageホームスタディコース(マネックス証券)
○Easy Languageプログラミング入門 発行:スタンダーズ株式会社 著者:本郷喜千
文の順序
Easy Languageのプログラムコードはこの順番で書きます。
・インプット宣言文
・変数宣言文
・変数代入文
・プロット文: インジケーター用
・売買文: ストラテジー用
宣言系
Input: プロパティでパラメーターを変更できる(最適化に不可欠)
Input: インプット名 (初期値);
<使用例>
Input: FastLen(13),SlowLen(30);
Vars: 変数を宣言
Vars: 変数名 (初期値);
Vars: の代わりに
Variables:
Variable:
Var:
どれを使っても同じです。
<使用例>
Vars: FastAvg(0),SlowAvg(0),Ma10Angle(“”),UpAngle(false);
※大文字、小文字は無視されます。
このようにも書けます
Vars:
FastAvg(0),
SlowAvg(0),
Ma10Angle(“”),
UpAngle(false);
倍精度浮動小数点
double 予約語は、変数のデータ型を倍精度 (64 ビット) 浮動小数点に明示的に設定します。
<使用例>
Vars:
double MyVar1(1345.6097);
演算の順序
トレードステーションは加算、減算、乗算、除算の算術演算を 次のように実行します。
乗算と除算は左から右
続いて
加算と減算を左から右
丸括弧を使用するとこの順番を変更することができます。一番内側の丸括弧の中の演算 から先に実行されます。
1 + 5 * 3 + 4 = 20
(1 + 5) * (3 + 4) = 42
1 + (5 * (3 + 4)) = 36
演算順序を決める丸括弧を使用すると、同じ数値と記号を持つ丸括弧を使用しない式の結果と大きく異なります。
引用元:EasyLanguage ホームスタディコース(ガイドブック) P28
売買注文
Buy: 新規買い
・ポジションを保持していない場合、新規で買い。
・売りポジションを保持している場合、ドテンして買いポジションを建てる。
<使用例>
Buy next bar at open;
Buy next bar at market;
※上の2つは結果として、次の足の始値で買う指示になります。
SellShort: 新規売り
・ポジションを保持していない場合、新規で売り。
・買いポジションを保持している場合、ドテンして売りポジションを建てる。
<使用例>
SellShort next bar at market;
SellShort This Bar on Close;
※ This bar on close = 現在の足の終値(バックテストのみ使用、現実のトレードでは次の足の始値で発注)
Sell: 売却
・買いポジションを決済
<使用例>
Buy next bar at market;
Sell this bar on close;
※ This bar on close = 現在の足の終値(バックテストのみ使用、現実のトレードでは次の足の始値で発注)
BuyToCover: 買戻し
・売りポジションを決済
<使用例>
BuyToCover next bar at market;
BuyToCover This Bar on Close;
※ This bar on close = 現在の足の終値(バックテストのみ使用、現実のトレードでは次の足の始値で発注)
適用する銘柄によって売買注文の呼び方が異なります。
呼び方が異なる例
SellShort
・株式は ”空売り”
・先物や為替は ”売り”
※EasyLanguage は銘柄に
関わらず一律に、上記4 つの注文シンタックスを使用します。
注文シンタックスの発注タイミング
・ Next bar at market 次の足の始値
・ Limit 次の足で指値注文条件を満たした瞬間
・ Stop 次の足でストップ注文条件を満たした瞬間
・ This bar on close 現在の足の終値(バックテストのみ使用、現実のトレードでは
次の足の始値で発注)
Limit注文とStop注文とは
・Limit(リミット)注文
日本の株式投資の取引では「指値注文」と呼ばれる事が多いでしょう。
売買価格を指定して注文を出すことをいいます。
・Stop(ストップ)注文
日本の株式投資の取引では「逆指値注文」と呼ばれる事が多いでしょう。
現在提示されている実勢価格(レート)ではなく、”ある価格(レート)以下になったら売る”、または”ある価格(レート)以上になったら買う”といった売買注文を出すことをいいます。
トレードステーションのStop(ストップ)注文の特徴と注意
トレードステーションでは、Stop(ストップ)注文の条件に達したときに、「成り行き注文」を出します。
このため、指定価格で約定するとは限りません。
SetExitOnClose; 1日の終わりで決済する
日中チャート上の取引日の最終バー上の全ポジション内の全株式または建玉を決済します。
SetExitOnClose は、デフォルトでは、チャートのカスタムセッション設定によって指定されたセッション終了時間を使用します。
※レギュラーセッションの終了時間までにすべてのポジションが決済されるようにするには、SetExitOnClose を使用しないでください。
これを行うには、チャート内の最終バーの前に終了注文を生成する必要があります。
曜日を指定して発注 DayOfWeek (Reserved Word)
指定した暦日の曜日を返します。(0 = 日曜日、6 = 土曜日
<使用例>
If dayofweek(date) = 3 then
Buytocover This bar on Close;
発注株数指定
〇shares:発注株数指定
・売買執行命令の後ろに xxxshares と記載する(xxxは発注株数)
<使用例>
Buy 5 shares next bar at market
//次の足の始値で 5 株の買い注文を生成。
SellShort 5 shares next bar at market
//次の足の始値で 5 株の売り注文を生成。
Sell 5 shares total next bar at market;
//複数のロングポジションから 指定枚数を決済。(この例は5枚)
注文に名前をつける
<Entry と Exit 売買注文2>
・特定の名前を付けて エントリー(特定の投資戦略に基づく売買発注) エグジット(特定の投資戦略に基づく売買の反対売買)
※エントリー名が必要です。エントリーは、終了するエントリーを指定するために、Exit で排他的に使用します。
<使用例>
Sell from entry (“MyTrade“) next bar market;
//次の足の最初の価格でロングポジション「MyTrade」を決済する注文を生成します。
BuyToCover from entry (“MyTrade“) this bar on close;
//今の足の終値でショートポジション「MyTrade」を決済する注文を生成します。
※ This bar on close = 現在の足の終値(バックテストのみ使用、現実のトレードでは次の足の始値で発注)
Sell from entry (“MyTrade“) next bar at 75 Stop;
//次の足で 75 以下の価格でロングポジション「MyTrade」を決済する注文を生成します。
<使用例2>
If LongExit = 1 then Sell From Entry (“R1-2Long”) Next Bar at market ;
If ShortExit = 1 then Buytocover From Entry (“R1-2Short”) next bar at market ;
<使用例3>
Buy (“MyBuy”) 10 Shares Next Bar at Market;
Buy 20 Shares Next Bar at High + 1 Point Stop ;
Sell From Entry (“MyBuy”) Next Bar at High + 3 Points Stop;
//上の2行で、合計30株を購入する事が出来ます。
//ただし、3行目の Sell命令は「MyBuy」を指定しているので、10株のみ手仕舞いします。
//結果として20株が買いポジションのまま残ります。
※重要: エントリー名は大文字小文字を区別するので、 必ず大文字を使用するようにします。また、決済注文はピラミディングしないことに留意してください。
したがって、決済がポジション全体を手仕舞いしない場合、そのポジションを手仕舞いするにはもうひとつの決済注文 (反対注文) が必要です。
Sell From Entry (“MyBuy”) 5 Shares Next Bar at High + 3 Points Stop;
//エントリー注文の一部を決済することも可能です。たとえば、”MyBuy” という名前を付けたエントリーの内、 5 株だけ手仕舞いすることを指定できます。
<移動平均線クロス戦略サンプルコード>
Input: FastLen(13),SlowLen(30);
Vars: FastAvg(0),SlowAvg(0);
FastAvg = Average(Close,FastLen);
SlowAvg = Average(Close,SlowLen);
If FastAvg Crosses over SlowAvg then Buy 500 shares next bar at market;
If FastAvg Crosses under SlowAvg then Sellshort next bar at market;
ビルトインストップ
Easy Languageにはビルトインストップの予約語が5つ準備されています。
SetBreakEven – 同値降り
含み益が発生したとき、成行注文をエントリー価格に発注します。
SetDollarTrailing – 金額トレーリングストップ
最大含み益から任意の金 額分離れた価格にストップ注文を発注します。最大含み益が増えれば、それだけ 逆指値価格も上がります(買いポジションの場合)。
SetPercentTrailing – パーセントトレーリングストップ
任意の含み益到達 後、最大含み益から任意のパーセント分離れた価格にストップ注文を発注します。 最大含み益が増えれば、それだけ逆指値価格も上がります(買いポジションの場合)。
SetProfitTarget – 利益確定
任意の利益確定目標額の価格に指値注文を発注します。
SetStopLoss – 損切り
任意の損切り額の価格に達したとき、成行注文を発注します。
ビルトインストップの計算をポジション単位にするか、株数単位にするか設定する予約語
SetStopPosition – ポジション全体に対して計算
SetStopShare or SetStopContract – 株数に対して計算
※初期設定は SetStopPosition(ポジション全体) です。
<ブレークアウト2サンプルコード>
8期間の最高値から一定値の価格に買いストップ注文を置く。
また 8期間の最安値から一定値の価格に売りストップ注文を置く。
ビルトインストップで決済を行う。
Input: Length(8), StopAmt(.2), TargetAmt(.3), BEAmt(.15);
Vars: BuyPx(0), SellPx(0);
BuyPx = Highest(High, Length) + .02;
SellPx = Lowest(Low, Length) – .02;
Buy (“ブレーク買”) next bar at BuyPx Stop;
Sell Short (“ブレーク売”) next bar at SellPx Stop;
SetStopShare;
SetStopLoss(StopAmt);
SetProfitTarget(TargetAmt);
SetBreakeven(BEAmt);
スポンサーリンク
インジケータ
他のチャートの数値をチャート上にプロットする
第2チャートの終値をプロットする
<使用例>
//第2チャートの前日終値
Plot1(Close of Data2,”前日終値”)
デイトレードで活躍 前日の終値を分足チャート上にプロットする
前日の終値をプロットする
<使用例>
Plot1( CloseD(1),”前日終値”);
算出した数値をチャート上にプロットする
出来高加重値幅をチャートに表示する
<使用例>
Plot1( (High – Low) * Ticks, “出来高加重値幅” );
任意の水平線をチャート上にプロットする
インプットで初期値を設定し、水平線をチャートに表示する
<使用例>
Input:EL1(22150);
Plot1( EL1 ,”エントリーライン”);
インジケーターの色と太さを変える
色を変える
SetPlotColor(プロット番号, 色)
※プロット番号は、 Plot番号の 1-99 までを指定できます。
色のパラメーター
EasyLanguage色を指定する事が出来ます。(16色)
Black
Blue
Cyan
Green
Magenta
Red
Yellow
White
DarkBlue
DarkCyan
DarkGreen
DarkMagenta
DarkRed
DarkBrown
DarkGray
LightGray
<使用例>
SetPlotColor(1, yellow);
※その他 数値を指定することも出来ます。
注釈: 16 色はそれぞれ数値が割り当てられているので、数値で置き換えること もできます。また EasyLanguage は RGB (赤, 緑, 青) 色もサポートしています。
予約語 RGB についての詳細は EasyLanguage辞書を参照してください。
出所:Easy Languageホームスタディコース P105
太さを変える
SetPlotWidth(プロット番号, 太さ)
太さのパラメーター
SetPlotWidth の太さパラメータは、0 から 6 までの数値で指定することができます。
0 が 1 番細く、6になるに従って太くなります。
If…then 文を利用して真偽式のユーザー定義条件に応じて色や太さを自動的に変化させるようなこともできます。
出所:Easy Languageホームスタディコース P105
<使用例>
Inputs: HiVolume(100000), LineWidth(4), LineColor(yellow);
If Ticks > HiVolume then begin
SetPlotColor(1, LineColor);
SetPlotWidth(1, LineWidth);
end;
Plot1(Ticks, “出来高”);
※色をRGBで直接指定する場合の例
SetPlotcolor(1,39423);
39423 は オレンジ色のRGB(カラー)番号です。
コメント
チャート上にコメントを表示させる。
使用例
Commentary(NewLine);
Commentary(“*** 翌営業日の 上値抵抗線 と 下値支持線 ***”, NewLine);
Commentary(NewLine);
Commentary(“上値抵抗線01(レジスタンス1)”, Spaces(4), R01, NewLine);
Commentary(“上値抵抗線02(レジスタンス2)”, Spaces(4), R02, NewLine);
Commentary(“下値支持線01(サポート1)”, Spaces(4), S01, NewLine);
Commentary(“下値支持線02(サポート2)”, Spaces(4), S02, NewLine);
売買シグナル
赤三兵出現のシグナル
「赤三兵」という買いシグナルをご存じでしょうか。
直近のローソク足3本が上値および下値とも切り上げた状態を指し、大きな上げ相場の転換点を示すとされます。
株式投資を始めた当初に覚えたシグナルのひとつです。
<使用例>
If Open[1] < Close[1] and Open[2] < Close[2] and Open < Close and Open[1] < Open and Open[2] < Open[1] and Close[1] < Close and Close[2] < Close[1] then
Plot1(close,”赤三兵出現”);
※ブログ管理者あしおの判断で高値・安値ではなく、始値・終値で判定しています
黒三兵出現のシグナル
赤三兵と逆に、売りシグナルです。
直近のローソク足3本が上値および下値とも切り下げた状態を指し、大きな下げ相場の転換点を示すとされます。
<ELコードは ここから>
If Open[1] > Close[1] and Open[2] > Close[2] and Open > Close and Open[1] > Open and Open[2] > Open[1] and Close[1] > Close and Close[2] > Close[1] then
Plot1(close,”黒三兵出現”);
<使用例>
プログラムコードは、上の赤三兵のコードの ”>” 部分を逆にしただけです。 10秒で完成ですね。
※ブログ管理者あしおの判断で高値・安値ではなく、始値・終値で判定しています
関数
Average:平均
<使用例>
練習問題*04 ローソク足の実体を応用して、ローソク足の実体の 10期間の平均値 を描画する。
Vars: RB(0), AvgRB (0);
Vars: でユーザー定義数値変数 を宣言します。 箱を作って、名前を付けます。
RB AvgRB をそれぞれ初期値 ゼロ で作ります。
RB = Close – Open;
終値から始値を引いて(ローソク足の実体を求め)、 変数 RB に代入します。
AvgRB = Average (RB, 10);
10期間(足の)のローソク足の実体( Close – Open)の平均値を計算し、変数 AvgRB に代入します。
AvgRB = Average (RB, 10)
Plot1(AvgRB,”実体平均”);
実体の平均をチャートに表示します。
Plot2(0,”同時”);
ゼロの線をチャートに表示します。
関係演算子 と 真偽式
簡単なことなのに、名前だけ難しい。
関係演算子
6つの代表的な関係演算子
株式売買のために開発された、2つのユニークな関係演算子
前後の足を比較して交差を判別する関係演算子
・Crosses over (Cross over、Crosses above、Cross above も同義)は
下記 の場合真を返します
現在の足ではx > y であり、1足前では x < y
・Crosses under (Cross under、Crosses below 、Cross below も同義) は
下記の場合真を返します
現在の足ではx < yであり、1足前では x > y
真偽式
真偽式の例
・Close = Open
現在の足の終値は現在の足の始値に等しい(真)、等しくない(偽)
・High > High [1]
現在の足の高値は、1足前の高値より高い(真)、等しくない(偽)
・Date <> Date [1]
現在の足の日付は、1足前の日付と等しくない(真)、等しい(偽)
・Close crosses over Average (Close, 20)
現在の足の終値が 20期間の終値の移動平均線と交差している(真)、交差していない(偽)
出所:Easy Languageホームスタディコース P56
if…then文
プログラムの大御所 if…then文 です。
誤解を恐れずに言います。 if…thenが理解できれば、大抵のプログラムは書けちゃうんです。
”if” は 英語の ”もしも” の if です。
if と then の間に挟まれた 真偽式 が 真 ならば then 以降の命令を実行します。
もしも ○△ ならば ◆▼ してね
となります。
例
if Close = Open then Buy next bar at market
この意味は、
もし 終値 と 始値 が 同じ ならば 次の足の始めで買います
If…thenブロック文
If…thenの応用で、命令を複数出すことが出来るのです。
if
then
end;
変わったのは、thenの後に
文の最後に end
定義済み数値変数と真偽変数
定義済みなので、あらためて定義しなくても使えます。
定義済み数値変数
Value0 から Value99 まで。
定義済み真偽変数
Condition0 から Condition99 まで。
属性
リアルタイムデーター か ヒストリカルデーター か属性を取得する
getappinfo(airealtimecalc)
例
呼び出しているアプリケーションがリアルタイム取引の結果として計算しているかどうかを識別します。
リアルタイムデーター か ヒストリカルデーター か判断して処理を分岐する。
if getappinfo(airealtimecalc) = 1 then begin
opendow = open[0] of data2;
closedow = close[0] of data2;
end
else begin
opendow = open[1] of data2;
closedow = close[1] of data2;
end;
ポジションを取得する
marketposition(0)
•ショートポジションの場合は -1 が返され、ロングポジションの場合は 1 が返されます。現在のポジションが指定されていて、現在市場にいない場合には、0 が返されます。
•この関数は、ストラテジーの評価でのみ使用できます。
MarketPosition(0) は、現在のポジションがフラットな場合、0 の値を返します。
例
if marketposition(0) = 0 then begin
if dowsage then begin
if date[1]<>date[0] and time[0] >= 901 then
buy(“B-DOW”) next bar at market;
end;
end;
デバッグ
面倒くさがらずに、Print文でプログラムの動きを確認しましょう。
テキストで出力されるのでエクセルなどの他のアプリケーションに、データーを渡すことも出来ます。
使用例1
Print(“=LE=======”); //プリント文は足毎に生成されるので、足毎の区切りがわかるように スタートに ”=LE=======”を表示します。
Print(“CurrentBar=”,CurrentBar); //現在評価されている足の数を返します
Print(“Date=”,date); //Date は、日付が 2000 年 1 月 7 日の場合、1000107 を返します。(1999年なら990107)
Print(“time=”,time); //Time は、足の Time が午後 4 時の場合には 1600 を返します
Print(“close=”,close); //終値
Print(“entrydate=”,entrydate); //形式 YYYYMMDD で指定ポジションのエントリー日付を返します
Print(“=======LE=”); //プリント文は足毎に生成されるので、足毎の区切りがわかるように 最後に ”=======LE=” を表示します。
使用例2
足毎に生成されるプリント文を1行にまとめます。
Print(“日付”, Spaces(2), Date:7:0, Spaces(2),
“時間”, Spaces(2), Time:4:0, Spaces(2),
“モメンタム”, Spaces(2), Mom, Spaces(2),
“強気交差”, Spaces(2), BullCx, Spaces(2),
“弱気交差”, Spaces(2), BearCx);
○Print(“日付”, Spaces(2), Date:7:0, Spaces(2),
Print:プリント文のはじまりです
”日付”: 後に続く Date のラベルとして表示させます
Space : 2つの コンテンツの間にスペースを入れる予約語です
Date:7:0 :
Date:7:0 -予約語 Dateは足の終値時点での日付を数値式で返す予約語です。
数値式の形式はYYYMMDDです。YYYは 1900年からの年を、MMは月を、DD は日を表します。
例えば 1030611は 2003年 6月 11日です。
Date:7:0 の Date 後に続く左側の数値は整数部分の桁数、右側は小数点以下桁数を指定しています。
日付は小数点以下桁数を表示する必要がないので 0になっています。
出所:Easy Languageホームスタディコース P128
・”時間”, Spaces(2), Time:4:0, Spaces(2),
”時間”: 後に続く Timee のラベルとして表示させます
Space : 2つの コンテンツの間にスペースを入れる予約語です
Time:4:0:
Time:4:0 -予約語 Timeは足の終値時点での時間を数値式で返す予約語です。
時間の形式は HHMMです。
例えば 1600は午後 4時です。
Time:4:0 の Time の 後に続く左側の数値は整数部分の桁数、右側は小数点以下桁数を指定しています。
時間は小数点以下桁数を表示する必要がないので 0になっています。
出所:Easy Languageホームスタディコース P128
・”モメンタム”, Spaces(2), Mom, Spaces(2),
”モメンタム” : 後に続く Mom のラベルとして表示させます
Space : 2つの コンテンツの間にスペースを入れる予約語です
Mom : プログラムコード Mom = Momentum(Close, Length); で代入された値を表示させます
・”強気交差”, Spaces(2), BullCx, Spaces(2),
”強気交差” : 後に続く BullCx のラベルとして表示させます
Space : 2つの コンテンツの間にスペースを入れる予約語です
BullCx : プログラムコード BullCx = Mom crosses over 0; で代入された値を表示させます
・”弱気交差”, Spaces(2), BearCx);
”弱気交差” : 後に続く BullCx のラベルとして表示させます
Space : 2つの コンテンツの間にスペースを入れる予約語です
BearCx) : プログラムコード BearCx = Mom crosses under 0; で代入された値を表示させます
使用例3
print(string.format(“Date:{0} Time:{1} N225:{2} Dow30:{3} Real/Hist:{4}”,
date[0],time[0],close225,closedow,getappinfo(airealtimecalc)));使用例3の出力結果(最後の2行)
Date:1180906 Time:1501 N225:22960 Dow30:25974.99 Real/Hist:0
Date:1180907 Time:1501 N225:22780 Dow30:25995.87 Real/Hist:0出所:Easy Languageプログラミング入門
印刷ログウインド
・print文で指示したデーターを確認するには、印刷ログウインドを表示させます。
私の環境では、ワークスペースの最下部に 印刷ログ ウインドウが現れました。
プリント文を消去する。Once Clearprintlog();
Onceは一度だけ実行する
EL ステートメントまたはそれに続く開始-終了ブロックを 1 回だけ実行することを指定するために使用する予約語です。
Once Clearprintlog(); これまでのPrint出力を消去します。
例
Once (MarketPosition=1)
Begin
ClearPrintLog;
Print(“Log Header”);
End;
印刷ログを解除し、市場ポジションが最初に 1 に等しくなったときにヘッダーを印刷します。
出所:Easy Language ヘルプ
設定
イントラバー注文生成フラグをオンまたはオフにする
EasyLanguage の属性である IntraBarOrderGeneration により、イントラバー注文生成フラグをオンまたはオフにすることができます。属性がいずれのストラテジーコードにもなければ、ユーザーは [計算] タブを通して設定を管理できるようになります。属性があり、TRUE に設定されていれば、「イントラバー注文の作成および計算を有効にする」フラグにチェックが入り、チェックボックスが無効化され、ラジオボタンが利用できるようになります。属性があり、FALSE に設定されていれば、「イントラバー注文の作成および計算を有効にする」 フラグのチェックが外れ、チェックボックスとラジオボタンが無効化されます。
出所:Easy Languageヘルプ
[IntrabarOrderGeneration = false]
または
[IntrabarOrderGeneration = TRUE]
Easy Languageオブジェクト
エクセル連携(ExcelWorkbookコンポーネント)
ExcelWorkbookコンポーネントを使う準備
Trade station開発環境のエディター左上の、「ツールボックスタブ」にマウスポインターを移動します。
すると「ツールボックスパネル」が現れますので、エクセルコンポーネントをダブルクリック。
エディターの下部にエクセルコンポーネントが表示されます。
- Trade station開発環境のエディター右上の、「プロパティタブ」にマウスポインターを移動します。
- すると「プロパティパネル」が現れますので、エクセルコンポーネントをクリックしてください。
- 事前に準備したエクセルの保存フォルダと、ファイル名を入力します。 ( ” を忘れずに)
- エクセルコンポーネントのプロパティ名を任意の名前に変更してください。下の例では「WkBk」にしています。
<エクセル連携サンプルコード>
Trade station開発環境のエディターに、下のプログラムコードを書き込みます。
ご自分の手で直接入力する事をオススメしますが、下のコードをコピーアンドペーストしてもOKです。
プログラムコード ここから====
WkBk[“Sheet1”].Cells[1,1] = “aaa” ;
WkBk[“Sheet1”].Cells[2,2] = “bbb” ;
WkBk[“Sheet1”].Cells[3,3] = “ccc” ;
プログラムコード ここまで====
Cells[1,1]
[]内は、セルの場所を指定しています。
Cells[1,1]は1列目、1行目の意味です。
Cells[2,2]になると2列目、2行目の意味に変わります。
エクセルシートに表示された例。
ExcelWorkbookコンポーネントで株価を取得
<株価を取得サンプルコード>
プログラムコード ここから====
Vars:
WBTab(“Sheet1”),Cnt(11);
WkBk[WBTab].Cells[1,Cnt] = date;
WkBk[WBTab].Cells[2,Cnt] = time;
WkBk[WBTab].Cells[3,Cnt] = open;
WkBk[WBTab].Cells[4,Cnt] = close;
Cnt = Cnt + 1
プログラムコード ここまで====
株価データーがエクセルシートに登録された例。
ExcelWorkbookコンポーネントで、エクセルから値を取得
<エクセルで計算させた値を取得するサンプルコード>
エクセルの関数で「株価始値の平均値」を求めて、トレードステーションで表示させます。
C8セルに平均値を求める関数を入力します。(Open/始値の平均値)
ファイルを上書き保存してください。
Trade station開発環境のエディターに、追加のプログラムコードを書き込みます。
追加した部分は、2行目の ,AVG(0) と 13行目以降です。
印刷ログウインドにエクセルで計算した平均値が表示されます。
サンプルコード
はらみ足ブレイクアウト
はらみ足のひとつ前の足が陽線で、はらみ足が陰線(同時含む)の場合、売り転換点と考え売りエントリー
<使用例>
If InsideBar(High,Low) and Close[1] < Open[1] and Close >= Open then
Buy (!(“InsBarLE”)) next bar at market;
If InsideBar(High,Low) and Close[1] > Open[1] and Close <= Open then
Sellshort (!(“InsBarSE”)) next bar at market;
移動平均線の傾き(上昇、下降の角度)をトレステチャートで色分けする
Input:
MA_days (25), //描画する移動平均線の足数を指定
Adays (3), //上昇下降を判断する期日を指定
Uptrend_angle (30), //上昇を判断する角度を指定
DWtrend_angle (-30); //下降を判断する角度を指定
vars:
MA (0), //移動平均の値を格納する変数(初期値0)
NowAngle (0); //現在の移動平均線の角度を格納する変数(初期値0)
MA = Average(Close,MA_days);
NowAngle= Arctangent( (MA-MA[Adays-1])/Adays );
If NowAngle > UPtrend_angle then
Plot1(MA,”MA”,Magenta )
Else If NowAngle < DWtrend_angle then
Plot1(MA,”MA”,Cyan )
Else
Plot1(MA,”MA”,blue );
第2チャートの日足データーで、サポートライン・レジスタンスライン算出・描画
バックテスト等に使用する(場中は使用しない)
If date[1] of data2 <> date[0] of data2 Then Begin
//ウイリアム・グリーンスパン サポートライン・レジスタンスライン データー算出
P = ( High of Data2 + Low of Data2 + Close of Data2 ) / 3;
R1 = 2 * P – Low of Data2;
S1 = 2 * P – High of Data2;
R2 = ( P – S1 ) + R1;
S2 = P – ( R1 – S1 );
//レジスタンス・サポート Plot1から4まで上から順に描画される
Plot1( R2 ,”レジスタンス2″);
Plot2( R1 ,”レジスタンス1”);
Plot3( S1 ,”サポート1”);
Plot4( S2 ,”サポート2″);
END;
デイトレード等に使用する(場中に使用する)
IF CurrentDate = date then begin
//ウイリアム・グリーンスパン サポートライン・レジスタンスライン データー算出
P = ( H[1] of Data2 + L[1] of Data2 + C[1] of Data2 ) / 3;
R1 = 2 * P – L[1] of Data2;
S1 = 2 * P – H[1] of Data2;
R2 = ( P – S1 ) + R1;
S2 = P – ( R1 – S1 );
Plot1( R2 ,”レジスタンス2″);
Plot2( R1 ,”レジスタンス1”);
Plot3( S1 ,”サポート1”);
Plot4( S2 ,”サポート2″);
end;
CurrentDate:この予約語は、使用しているコンピュータの日時に対応する EasyLanguage 日時 (YYYMMDD フォーマット) を表す数値を返します。
かゆいところに手が届く
節目となる価格を取得・チャートに描画
//年初来高値の取得およびプロット
Plot2(HighY(0),”年初来高値”);
//月初来高値の取得およびプロット
Plot3(HighM(0),”月初来高値”);
//月初来安値の取得およびプロット
Plot4(LowM(0),”月初来安値”);
//前日終値の取得及びプロット
Plot5( CloseD(1),”前日終値”);
//関連するその他の関数
//LowY、CloseY、OpenY、HighD、HighW。
スポンサーリンク