平凡な会社員のトレード日誌

日本株のシステムトレード記録。年率50%を目標にExcelを使い自動売買しています。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

売買処理

読み込んだ日足データを対象期間の最初から1日ずつ処理していきます。
前日の状態により4パターンに分かれます。

エントリしていない場合
エントリ条件(25MA
エントリ条件に合致している場合
セットされた高値を当日の高値が超えていればエントリ処理を行います。

エントリ(ホールド)している場合
手仕舞い条件(LowMA>終値)に当てはまるかどうかを判定します。

手仕舞い条件に合致している場合
当日始値で手仕舞う処理を行います。

日足データが最後になった時にエントリした状態であった場合は、最後の日の始値で手仕舞うようにしています。

VBAは、次の通りです。

ちょっと長いです^^;
改行がちょっと見づらいかもしれません。

Excel表の関数を使う場合は、関数の前にApplication.WorksheetFunction.をつけるとVBAでも使うことができます。(Average、Max関数を使っています)
変数MarketPositionで4パターンを判定しています。状態が変わった時に値を変更しています。

Function 売買処理()
Dim EndGyo, MA, LowMA, HighMA
MarketPosition = "NoEntry"
Sheets("日足").Select
EndGyo = Val(Cells(1, 1).CurrentRegion.Rows.Count)
For j = MALength To EndGyo
 If Cells(j, 1) > StartDay Then
   MA = Application.WorksheetFunction.Average(Range(Cells(j, 5), Cells(j - MALength + 1, 5)))
   LowMA = Application.WorksheetFunction.Average(Range(Cells(j, 4), Cells(j - LowMALength + 1, 4)))
   Select Case MarketPosition
   Case "NoEntry"
     If LowMA > MA Then
       High = Application.WorksheetFunction.Max(Range(Cells(j, 3), Cells(j - HighLength + 1, 3)))
       MarketPosition = "LongEntry"
     End If
   Case "LongEntry"
     If Cells(j, 3) >= High Then
       エントリ処理
       MarketPosition = "LongHold"
     Else
       If LowMA < MA Then
         MarketPosition = "NoEntry"
       End If
     End If
   Case "LongHold"
     If LowMA > Cells(j, 5) Then
       MarketPosition = "LongExit"
     End If
   Case "LongExit"
     脱出処理
     MarketPosition = "NoEntry"
   End Select
  End If
 Next j

 If MarketPosition = "LongHold" Or MarketPosition = "LongExit" Then
   j = j - 1
   脱出処理
 End If
End Function
スポンサーサイト
  1. 2007/03/16(金) 23:32:33|
  2. Excel検証・フィルタ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://kojimaro.blog70.fc2.com/tb.php/210-819f5adc
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。