股票家园吧 关注:17,087贴子:76,675
  • 2回复贴,共1

准备亲自动手做一个股票交易分析软件

取消只看楼主收藏回复

发觉现在的股票交易软件都不太好用和适合我用,准备亲自动手做一个股票交易分析软件。支持的给顶一下!
前段时间就这个问题和我在清华大学的一位朋友交流了一下,这个软件拟包含以下板块:长线分析,波段分析,短线分析,股票数据傅里叶分析,股票数据随机函数分析,股票动力学分析,股票惯性-从众心理分析,股票走势几率预测,股票支撑压力位几率性预测,虚拟未来走势,庄家大单跟踪,庄家成本分析,自动监控委托交易等等。主要想法是把数理统计的理论和随机变量的一些分析方法应用到股市上来,同时融入一些弹性力学东西。
股票交易主要是凭人的经验来操作,但这往往会由于采样数据太少,经验不足的原因经常出错,而且很是受情绪的影响。而通过大量的采集股票数据,然后通过数理方法去客观地分析是该买入还是卖出,可能会减少出错,而大量的数据分析,只能借助计算机才能完成。
好吧,不知各位有什么看法和补充。谢谢!


IP属地:广西1楼2016-03-18 16:11回复
    返回数据的意义如下:
    这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,顺序号从0开始。
    0:”大秦铁路”,股票名字;
    1:”27.55″,今日开盘价;
    2:”27.25″,昨日收盘价;
    3:”26.91″,当前价格;
    4:”27.55″,今日最高价;
    5:”26.20″,今日最低价;
    6:”26.91″,竞买价,即“买一”报价;
    7:”26.92″,竞卖价,即“卖一”报价;
    8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
    9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
    10:”4695″,“买一”申请4695股,即47手;
    11:”26.91″,“买一”报价;
    12:”57590″,“买二”
    13:”26.90″,“买二”
    14:”14700″,“买三”
    15:”26.89″,“买三”
    16:”14300″,“买四”
    17:”26.88″,“买四”
    18:”15100″,“买五”
    19:”26.87″,“买五”
    20:”3100″,“卖一”申报3100股,即31手;
    21:”26.92″,“卖一”报价
    (22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况”
    30:”2008-01-11″,日期;
    31:”15:05:32″,时间;


    IP属地:广西13楼2016-03-22 15:35
    收起回复
      VERSION 5.00
      Begin VB.Form Form1
      Caption = "Form1"
      ClientHeight = 3090
      ClientLeft = 60
      ClientTop = 450
      ClientWidth = 4680
      LinkTopic = "Form1"
      ScaleHeight = 3090
      ScaleWidth = 4680
      StartUpPosition = 3
      Begin VB.Timer Timer3
      Left = 1320
      Top = 120
      End
      Begin VB.Timer Timer2
      Left = 120
      Top = 120
      End
      Begin VB.Timer Timer1
      Left = 720
      Top = 120
      End
      Begin VB.CommandButton Command1
      Caption = "开始"
      Height = 375
      Left = 1800
      TabIndex = 0
      Top = 2400
      Width = 975
      End
      End
      Attribute VB_Name = "Form1"
      Attribute VB_GlobalNameSpace = False
      Attribute VB_Creatable = False
      Attribute VB_PredeclaredId = True
      Attribute VB_Exposed = False
      Private Const WM_GETTEXT = &HD
      Private Const WM_SETTEXT = &HC
      Private Const WM_KEYDOWN = &H100
      Private Const WM_KEYUP = &H101
      Private Const WM_GETTEXTLENGTH = &HE
      Private Const VK_TAB = &H9
      Private Const GW_CHILD = 5
      Private Const GW_HWNDNEXT = 2
      Private Const GW_HWNDFIRST = 0
      Dim p As Long
      Dim Pcount As Long
      Dim DataP As Long
      Dim DataPcount As Long
      Dim Pzs As Long
      Dim FormID As Long
      Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
      Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
      Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
      Private Declare Function GetForegroundWindow Lib "user32" () As Long
      Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
      Private Sub Command1_Click()
      Pzs = 0
      Timer1.Interval = 3000
      End Sub
      Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
      MsgBox (KeyCode)
      End Sub
      Private Sub Timer1_Timer()
      Timer1.Interval = 0
      If Pzs = 0 Then DataNew
      Timer2.Interval = 100
      End Sub
      Private Sub Timer2_Timer()
      Timer2.Interval = 0
      If DataP < DataPcount Then
      p = 0
      Timer3.Interval = 100
      DataP = DataP + 1
      Else
      Timer2.Interval = 0
      DataSave
      DataNext
      End If
      End Sub
      Private Sub Timer3_Timer()
      If DataP < DataPcount Then
      SetGridDataJ 1, 1
      End If
      If DataP = DataPcount Then
      SetGridDataEnd 1, 1
      End If
      p = p + 1
      If p > Pcount Then
      Timer3.Interval = 0
      Timer2.Interval = 100
      End If
      End Sub
      Private Sub SetData(data As String)
      Clipboard.SetText data
      PasteKey
      End Sub
      Private Sub DataNew()
      FormID = GetForegroundWindow()
      FindCont = 0
      If Pzs = 0 Then SetDataW FormID, " ", "TComboBox", 1
      keybd_event 17, 0, 0, 0
      keybd_event 78, 0, 0, 0
      keybd_event 78, 0, 2, 0
      keybd_event 17, 0, 2, 0
      FindCont = 0
      SetDataW FormID, Str(Pzs), "TSpinEdit", 1
      DataP = 0
      DataPcount = Pzs + 2
      End Sub
      Private Sub DataNext()
      Pzs = Pzs + 1
      FormID = GetForegroundWindow()
      FindCont = 0
      If Pzs = 1 Then SetDataW FormID, " ", "TComboBox", 1
      If Pzs = 2 Then SetDataW FormID, " ", "TComboBox", 1
      keybd_event 17, 0, 0, 0
      keybd_event 78, 0, 0, 0
      keybd_event 78, 0, 2, 0
      keybd_event 17, 0, 2, 0
      FindCont = 0
      SetDataW FormID, Str(Pzs), "TSpinEdit", 1
      DataP = 0
      DataPcount = Pzs + 2
      If Pzs < 3 Then
      Timer1.Interval = 100
      End If
      End Sub
      Private Sub SetDataM(data As String)
      For i = 1 To Len(data)
      KeyDown Asc(Mid(data, i))
      Next
      End Sub
      Private Sub SetGridDataJ(h As Long, l As Long)
      Dim Wid As Long
      Pcount = 5
      If p = 0 Then
      SetData " " & DataP
      KeyDown 13
      End If
      If p = 1 Then
      SetData "504"
      KeyDown 13
      End If
      If p = 2 Then
      KeyDown 13
      End If
      If p = 3 Then
      SetData "001"
      For i = 1 To 3
      KeyDown 13
      Next
      End If
      If p = 4 Then
      SetDataM 1000 * DataP + 1859
      KeyDown 9
      End If
      If p = 5 Then
      SetDataM 0
      KeyDown 9
      End If
      End Sub
      Private Sub SetGridDataT(h As Long, l As Long)
      Pcount = 5
      If p = 0 Then
      SetData " " & DataP
      KeyDown 13
      End If
      If p = 1 Then
      SetData "504"
      KeyDown 13
      End If
      If p = 2 Then
      KeyDown 13
      End If
      If p = 3 Then
      SetData "001"
      End If
      If p = 4 Then
      SetDataM 0
      KeyDown 9
      End If
      If p = 5 Then
      SetDataM 1000 * DataP + 1859
      KeyDown 9
      End If
      End Sub
      Private Sub SetGridDataEnd(h As Long, l As Long)
      Pcount = 5
      If p = 0 Then
      SetData " " & DataP
      KeyDown 9
      End If
      If p = 1 Then
      SetData "102"
      KeyDown 9
      End If
      If p = 2 Then
      KeyDown 9
      End If
      If p = 3 Then
      SetData "001"
      For i = 1 To 6
      KeyDown 13
      Next
      End If
      If p = 4 Then
      KeyDown 9
      End If
      If p = 5 Then
      End If
      End Sub
      Sub KeyDown(Key As Long)
      keybd_event Key, 0, 0, 0
      keybd_event Key, 0, 2, 0
      End Sub
      Sub PasteKey()
      keybd_event 17, 0, 0, 0
      keybd_event 86, 0, 0, 0
      keybd_event 86, 0, 2, 0
      keybd_event 17, 0, 2, 0
      End Sub
      Sub DataSave()
      keybd_event 17, 0, 0, 0
      keybd_event 83, 0, 0, 0
      keybd_event 83, 0, 2, 0
      keybd_event 17, 0, 2, 0
      End Sub


      IP属地:广西14楼2016-03-22 17:42
      收起回复