Subscribed unsubscribe Subscribe Subscribe

F# Monkey

about

F#でFXのトレード検証を手軽にできるシステムを作ってみる(その1)

Summary

手軽にトレーディングアイディアを試せるシステムをつくってみる!

Motivation

FXトレードの幅がひろがるんじゃないかと・・(もっともっとお金ほしい〜)

今回の骨子

とりあえず下記2つをやってみました

ある価格にたいして

1 entry できる場所があるかどうか
2 takeprofit or cutloss の場所があるかどうか

Code

こんな感じ

module FX20170410 =
    

    /// とりあえず価格はこんな感じでつくってみる
    let lowPrices  = [97. .. 104.]
    let highPrices = [99. .. 106.]
    let dayprices  = List.map2 ( fun a b -> [a .. 0.001 .. b] ) lowPrices highPrices 
    
    /// entry ,tp, cl に対しての情報
    type Info = { Entry : float ; TakeProfit : float ; CutLoss : float }
    
    /// util function
    let pricePoint entryPrice prices =
        prices
        |> List.map ( List.tryFind ( fun n -> n = entryPrice) )
        |> List.tryFindIndex ( fun x -> Option.isSome x )


    /// ---------------------------------------------------------------------


    /// エントリーは100, 利確は105, 損切りは95とする
    let info : Info = { Entry = 100. ; TakeProfit = 105. ; CutLoss = 95. }

    /// entry ができるかどうか
    let entryPoint : option<int> = pricePoint info.Entry dayprices

    if entryPoint.IsSome then
        /// entry したあとのリストをつくる
        let lst =   dayprices 
                    |> List.splitAt entryPoint.Value
                    |> snd
        
        /// tp or cl どちらかが掛かってるかを調べる
        let takeProfitPoint : option<int> = pricePoint info.TakeProfit dayprices
        let cutLossPoint    : option<int> = pricePoint info.CutLoss dayprices

        if  takeProfitPoint.IsSome && cutLossPoint.IsSome then
            stdout.WriteLine "*****"
        elif  takeProfitPoint.IsSome then
            let profit = info.TakeProfit - info.Entry
            stdout.WriteLine( string profit + " の利益を獲得しました〜" )
        elif  cutLossPoint.IsSome then
            stdout.WriteLine "*****"
        else
            stdout.WriteLine "*****"
    else
        stdout.WriteLine "エントリーされませんでした"

結果

5 の利益を獲得しました〜

*** time : 0.139117 s ***

感想

まだまだ何もわかってないのでちょっとずつ作っていきたいです!

Remove all ads