oanda api

      VB-Projekt "RateSample.vbproj" Part 2

      Bezieht sich auf vorhergehendes Psoting!

      Code 2:

      Quellcode

      1. #Region " Windows Form Designer generated code "
      2. Public Sub New()
      3. MyBase.New()
      4. 'This call is required by the Windows Form Designer.
      5. InitializeComponent()
      6. 'Add any initialization after the InitializeComponent() call
      7. End Sub
      8. 'Form overrides dispose to clean up the component list.
      9. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
      10. If disposing Then
      11. If Not (components Is Nothing) Then
      12. components.Dispose()
      13. End If
      14. End If
      15. MyBase.Dispose(disposing)
      16. End Sub
      17. 'Required by the Windows Form Designer
      18. Private components As System.ComponentModel.IContainer
      19. 'NOTE: The following procedure is required by the Windows Form Designer
      20. 'It can be modified using the Windows Form Designer.
      21. 'Do not modify it using the code editor.
      22. Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
      23. Friend WithEvents tAsk As System.Windows.Forms.TextBox
      24. Friend WithEvents Label3 As System.Windows.Forms.Label
      25. Friend WithEvents tMean As System.Windows.Forms.TextBox
      26. Friend WithEvents Label5 As System.Windows.Forms.Label
      27. Friend WithEvents Label4 As System.Windows.Forms.Label
      28. Friend WithEvents Ask As System.Windows.Forms.Label
      29. Friend WithEvents tTimeStamp As System.Windows.Forms.TextBox
      30. Friend WithEvents tBid As System.Windows.Forms.TextBox
      31. Friend WithEvents Button1 As System.Windows.Forms.Button
      32. Friend WithEvents tPair As System.Windows.Forms.TextBox
      33. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
      34. Me.components = New System.ComponentModel.Container
      35. Me.GroupBox1 = New System.Windows.Forms.GroupBox
      36. Me.tAsk = New System.Windows.Forms.TextBox
      37. Me.Label3 = New System.Windows.Forms.Label
      38. Me.tMean = New System.Windows.Forms.TextBox
      39. Me.Label5 = New System.Windows.Forms.Label
      40. Me.Label4 = New System.Windows.Forms.Label
      41. Me.Ask = New System.Windows.Forms.Label
      42. Me.tTimeStamp = New System.Windows.Forms.TextBox
      43. Me.tBid = New System.Windows.Forms.TextBox
      44. Me.Button1 = New System.Windows.Forms.Button
      45. Me.tPair = New System.Windows.Forms.TextBox
      46. Me.Label1 = New System.Windows.Forms.Label
      47. Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
      48. Me.GroupBox1.SuspendLayout()
      49. Me.SuspendLayout()
      50. '
      51. 'GroupBox1
      52. '
      53. Me.GroupBox1.Controls.Add(Me.tAsk)
      54. Me.GroupBox1.Controls.Add(Me.Label3)
      55. Me.GroupBox1.Controls.Add(Me.tMean)
      56. Me.GroupBox1.Controls.Add(Me.Label5)
      57. Me.GroupBox1.Controls.Add(Me.Label4)
      58. Me.GroupBox1.Controls.Add(Me.Ask)
      59. Me.GroupBox1.Controls.Add(Me.tTimeStamp)
      60. Me.GroupBox1.Controls.Add(Me.tBid)
      61. Me.GroupBox1.Location = New System.Drawing.Point(144, 8)
      62. Me.GroupBox1.Name = "GroupBox1"
      63. Me.GroupBox1.Size = New System.Drawing.Size(272, 120)
      64. Me.GroupBox1.TabIndex = 7
      65. Me.GroupBox1.TabStop = False
      66. Me.GroupBox1.Text = "Tick"
      67. '
      68. 'tAsk
      69. '
      70. Me.tAsk.Location = New System.Drawing.Point(72, 16)
      71. Me.tAsk.Name = "tAsk"
      72. Me.tAsk.Size = New System.Drawing.Size(192, 20)
      73. Me.tAsk.TabIndex = 0
      74. Me.tAsk.Text = "Ask price"
      75. '
      76. 'Label3
      77. '
      78. Me.Label3.Location = New System.Drawing.Point(8, 96)
      79. Me.Label3.Name = "Label3"
      80. Me.Label3.Size = New System.Drawing.Size(64, 16)
      81. Me.Label3.TabIndex = 2
      82. Me.Label3.Text = "TimeStamp"
      83. '
      84. 'tMean
      85. '
      86. Me.tMean.Location = New System.Drawing.Point(72, 64)
      87. Me.tMean.Name = "tMean"
      88. Me.tMean.Size = New System.Drawing.Size(192, 20)
      89. Me.tMean.TabIndex = 0
      90. Me.tMean.Text = "Mean"
      91. '
      92. 'Label5
      93. '
      94. Me.Label5.Location = New System.Drawing.Point(8, 72)
      95. Me.Label5.Name = "Label5"
      96. Me.Label5.Size = New System.Drawing.Size(56, 16)
      97. Me.Label5.TabIndex = 2
      98. Me.Label5.Text = "Mean"
      99. '
      100. 'Label4
      101. '
      102. Me.Label4.Location = New System.Drawing.Point(8, 48)
      103. Me.Label4.Name = "Label4"
      104. Me.Label4.Size = New System.Drawing.Size(56, 16)
      105. Me.Label4.TabIndex = 2
      106. Me.Label4.Text = "Bid"
      107. '
      108. 'Ask
      109. '
      110. Me.Ask.Location = New System.Drawing.Point(8, 24)
      111. Me.Ask.Name = "Ask"
      112. Me.Ask.Size = New System.Drawing.Size(56, 16)
      113. Me.Ask.TabIndex = 2
      114. Me.Ask.Text = "Ask"
      115. '
      116. 'tTimeStamp
      117. '
      118. Me.tTimeStamp.Location = New System.Drawing.Point(72, 88)
      119. Me.tTimeStamp.Name = "tTimeStamp"
      120. Me.tTimeStamp.Size = New System.Drawing.Size(192, 20)
      121. Me.tTimeStamp.TabIndex = 0
      122. Me.tTimeStamp.Text = "timestamp"
      123. '
      124. 'tBid
      125. '
      126. Me.tBid.Location = New System.Drawing.Point(72, 40)
      127. Me.tBid.Name = "tBid"
      128. Me.tBid.Size = New System.Drawing.Size(192, 20)
      129. Me.tBid.TabIndex = 0
      130. Me.tBid.Text = "Bid price"
      131. '
      132. 'Button1
      133. '
      134. Me.Button1.Location = New System.Drawing.Point(16, 48)
      135. Me.Button1.Name = "Button1"
      136. Me.Button1.Size = New System.Drawing.Size(112, 32)
      137. Me.Button1.TabIndex = 6
      138. Me.Button1.Text = "Get Tick"
      139. '
      140. 'tPair
      141. '
      142. Me.tPair.Location = New System.Drawing.Point(16, 16)
      143. Me.tPair.Name = "tPair"
      144. Me.tPair.Size = New System.Drawing.Size(112, 20)
      145. Me.tPair.TabIndex = 5
      146. Me.tPair.Text = "EUR/USD"
      147. '
      148. 'Label1
      149. '
      150. Me.Label1.AutoSize = True
      151. Me.Label1.Location = New System.Drawing.Point(16, 96)
      152. Me.Label1.Name = "Label1"
      153. Me.Label1.Size = New System.Drawing.Size(39, 13)
      154. Me.Label1.TabIndex = 8
      155. Me.Label1.Text = "Label1"
      156. '
      157. 'Timer1
      158. '
      159. Me.Timer1.Enabled = True
      160. Me.Timer1.Interval = 1000
      161. '
      162. 'Form1
      163. '
      164. Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
      165. Me.ClientSize = New System.Drawing.Size(424, 141)
      166. Me.Controls.Add(Me.Label1)
      167. Me.Controls.Add(Me.GroupBox1)
      168. Me.Controls.Add(Me.Button1)
      169. Me.Controls.Add(Me.tPair)
      170. Me.Name = "Form1"
      171. Me.Text = "RateSample"
      172. Me.GroupBox1.ResumeLayout(False)
      173. Me.GroupBox1.PerformLayout()
      174. Me.ResumeLayout(False)
      175. Me.PerformLayout()
      176. End Sub
      177. #End Region
      Wie Samen, die unter der Schneedecke träumen, träumen eure Herzen vom Frühling. Vertraut diesen Träumen, denn in ihnen verbirgt sich das Tor zur Unendlichkeit. Khalil Gibran

      VB-Projekt "RateSample.vbproj"

      In C# läuft noch nichts! Dafür hab ich mal einen Timer im VB-SampleCode von gestern, (siehe Bild von 12.09.07, 19:56) eingebaut. Dieser ersetzt den Button "Get Tick" und ich kann das Zeitintervall auch auf > 1 Sek. einstellen, ist mir wichtig.
      Was ich nicht kapiere, warum dieses VB-Projekt "RateSample.vbproj" sich nicht über "öffnen" in der VB Express IDE öffnen läßt, sondern nur durch Doppelklick im Dateiexplorer?
      Warnung 1 Das Element 'PropertyGroup' in Namespace 'http://schemas.microsoft.com/developer/msbuild/2003' hat ein ungültiges untergeordnetes Element 'UpgradeBackupLocation' in Namespace 'http://schemas.microsoft.com/developer/msbuild/2003'. Erwartet wurde die Liste möglicher Elemente: 'Property' in Namespace 'http://schemas.microsoft.com/developer/msbuild/2003'. C:\wilhd2007\finz\_projekt\_tws-API\oanda\_vb\oanda_rate\RateSample14\RateSample.vbproj Zeile 30 Spalte 6 Sonstige Dateien
      Der Code dazu (hier = Zeile 9 = End Sub ' Zeile 30:

      Quellcode

      1. 'Form overrides dispose to clean up the component list.
      2. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
      3. If disposing Then
      4. If Not (components Is Nothing) Then
      5. components.Dispose()
      6. End If
      7. End If
      8. MyBase.Dispose(disposing)
      9. End Sub ' Zeile 30


      Was ich nicht wußte, dass das kleine VB-Programm sich dann ohne Oandaplattform betreiben läßt, bei der TWs geht das ja zB. nicht, soweit ich informiert bin. Dafür ist aber auch der Verbindungsaufbau komplizierter.
      Da geht es für den Anfänger gleich in die Vollen! :D Mit Instanzen instanziieren und Konstruktor etc. "Von der Klasse zum Objekt: der Konstruktor" heißt es in meinem Buch: "Richtig einsteigen: Programmieren lernen mit Visual C# 2005." Hab ich noch nicht geblickt...
      Hier mal der aktuelle Code:

      Quellcode

      1. Imports fxClientAPI
      2. Public Class Form1
      3. Inherits System.Windows.Forms.Form
      4. Public game As fxGame
      5. Friend WithEvents Label1 As System.Windows.Forms.Label
      6. Friend WithEvents Timer1 As System.Windows.Forms.Timer
      7. Public rate_table As RateTable
      8. # Region " Windows Form Designer generated code "
      9. # Allerlei fürs GUI und Funktionalität von oanda programmiert... siehe Code 2
      10. # End Region
      11. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      12. Dim fx_pair As fxPair
      13. Dim fx_tick As fxTick
      14. Try
      15. fx_pair = New fxPair(tPair.Text)
      16. fx_tick = rate_table.GetRate(fx_pair)
      17. tAsk.Text = fx_tick.Ask
      18. tBid.Text = fx_tick.Bid
      19. tMean.Text = fx_tick.Mean
      20. tTimeStamp.Text = fx_tick.Timestamp
      21. Catch ex As OAException
      22. MsgBox("Caught exception: " + ex.Message, MsgBoxStyle.Exclamation)
      23. End Try
      24. End Sub
      25. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      26. game = New fxGame
      27. game.Login("Username", "Password")
      28. rate_table = game.RateTable
      29. End Sub
      30. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      31. Label1.Text = My.Computer.Clock.LocalTime.ToLongTimeString
      32. Dim fx_pair As fxPair
      33. Dim fx_tick As fxTick
      34. Try
      35. fx_pair = New fxPair(tPair.Text)
      36. fx_tick = rate_table.GetRate(fx_pair)
      37. tAsk.Text = fx_tick.Ask
      38. tBid.Text = fx_tick.Bid
      39. tMean.Text = fx_tick.Mean
      40. tTimeStamp.Text = fx_tick.Timestamp
      41. Catch ex As OAException
      42. MsgBox("Caught exception: " + ex.Message, MsgBoxStyle.Exclamation)
      43. End Try
      44. End Sub


      Bis bald. (Deine Nachricht ist zu lang. Es stehen maximal 10 000 Zeichen zur Verfügung.) Also Code 2 im nächsten Posting.
      Wie Samen, die unter der Schneedecke träumen, träumen eure Herzen vom Frühling. Vertraut diesen Träumen, denn in ihnen verbirgt sich das Tor zur Unendlichkeit. Khalil Gibran

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kimba“ ()

      Also ich bin Anfänger. Aber doch mit etwas Backround. Bei VB ist mir einfach die Syntax unsympathisch, ich habs immer wieder versucht...
      Ich hab vor Jahren beim "Webdesign" etwas Perl gelernt, dann zu dieser Zeit auch mal einen 3 Tagekurs C++ in der VHS... Perl hatten die nicht und brauchte dringend Nachhilfe :D Hat aber dann doch was gebracht, für die Perlsachen damals. Naja von daher hab ich nicht das Problem mit der Syntax von C#, ist mir sogar lieber als VB! Aber vom Programmieren hab ich keinen Plan kann man sagen, Ereignisbehandlungsmethode, OOP und sobald es etwas verschachtelt wird hab ich Probleme.
      Wenn ich meine Ticks mal in einer "Variablen" hab, dann krieg ich es in Eigenregie hin die in eine Datei zu schreiben etc.
      Oder Code ein bißschen anpaßen - meinen Usernamen mit dem default aus dem Sample austauschen... ;)

      Ich sammle mal ein paar "dumme" Fragen, vielleicht hat einer Lust+Zeit dazu ein paar KurzTips zu geben.

      Bis bald.
      Wie Samen, die unter der Schneedecke träumen, träumen eure Herzen vom Frühling. Vertraut diesen Träumen, denn in ihnen verbirgt sich das Tor zur Unendlichkeit. Khalil Gibran
      Ich bin auch der Meinung das C# für einen Anfänger schwieriger zu erlernen ist als VB.NET, weil m.M. nach der Syntax schwieriger zu verstehen ist und es für VB sehr viel mehr Tutorials und Ressourcen gratis im Netz gibt. Performance-Mässig ist 0 Unterschied.
      Trotzdem viel Glück. Ich bin überzeugt davon, wenn sich wer richtig reinkniet, kann man das recht schnell erlernen, zumal man für Trading-bezogene Programme man eigentlich nicht viel mehr als die Grundbegriffe benötigt.

      Erste Schritte mit Konsole und "GUI"

      Zwischenbericht:
      Mit VB Express hab ich zwei Konsolen Bsp. gleich zum Laufen gebracht, eine andere wollte nicht...
      Es gibt verschiedenen samples und zwei dll's und ein xml file, hab ich aber erst nach intuitivem Suchengefunden.

      Dann mal nach den dll's geschaut und ins Projekt RateSample eingebunden, läuft.

      In C# Express hab ich noch nichts zu Laufen gebracht!

      Hier zwei Bildchen mit VB:
      Bilder
      • 01_form1.PNG

        8,31 kB, 477×218, 210 mal angesehen
      • 01_konsole.PNG

        38,19 kB, 884×440, 211 mal angesehen
      Wie Samen, die unter der Schneedecke träumen, träumen eure Herzen vom Frühling. Vertraut diesen Träumen, denn in ihnen verbirgt sich das Tor zur Unendlichkeit. Khalil Gibran

      Your FXGame account has been activated for API access

      Die API library hab ich noch nicht bekommen (wärend dem Schreiben hier ist sie eingetroffen;)), aber mein GameAccount soll schon aktiviert sein. Die sind recht flott, innert einem Arbeitstag, wurden meine Anfragen per Mail/Fax beantwortet.

      Dear "Kimba",
      I will send you the API library/distribution in a separate e-mail.
      Your FXGame account has been activated for API access. Please proceed with your development and testing there. When you are ready to go live, please contact us (api@oanda.com) and let us know.
      If you have any technical support questions or problems please send an e-mail to api@oanda.com.
      Kind regards
      OANDA FXTrade API Team


      Xaron, Scalpt es mehr oder ist es eher geruhsamer? :D Bingo, beides. Geruhsames Scalpen, der Traum der Träume... ;)
      Aber, ich springe mehr oder weniger ins kalte Wasser, beidseitig. Hab meine Strategie so gut es geht backgetestet - ist ja immer so eine Sache für sich u. je nach Strategie... aber ich habe dieses mal ein anderes Gefühl/Sicherheit als früher, dass ich auf meinem Weg bin - ist nicht meine erste Strategie - und somit ist für mich alles im grünen Bereich und ich muß halt machen, machen u. aufmerksam schauen was so passiert!

      Programmieranfänger noch dazu... Aber ich will erst mal nur manuell bis "halbautomatisch" traden und dann nach und nach ausbauen. Das TradingPad von Purri hat mich durchaus animiert mal in die "Pötte" zu kommen. Also werd ich erst mal ein ganz simples Tradingpad (nur Quotes und u. MKT Orders Buy/Sell) versuche zu programmieren. Dazu helfen ganz gut die zwei oanda VB.NET Samples. Die werde ich mal als erstes "zusammenstöpseln" versuchen. Und wenns gelingt einen kleinen Tickchart einbauen...

      Richtig einsteigen: Programmieren lernen mit Visual C# 2005.

      Vielleicht denkt der ein oder andere, dass ich ein Spinner sei, mit der oanda Api Programmieren zu lernen... Sag da nur: "Jedem Tierchen sein Pläsierchen!"

      Bis bald...
      Wie Samen, die unter der Schneedecke träumen, träumen eure Herzen vom Frühling. Vertraut diesen Träumen, denn in ihnen verbirgt sich das Tor zur Unendlichkeit. Khalil Gibran
      Interessant! Ich bin gespannt! Halt uns auf dem Laufenden.

      Früher oder später werde ich mir die wohl auch mal holen...

      Darf ich fragen, was für eine Art System Du dann handeln möchtest? Scalpt es mehr oder ist es eher geruhsamer? Du musst natürlich keine Details nennen, mich interessiert nur Die Art, nicht das System an sich, wobei es natürlich interessant wäre. ;)

      Gruß - Xaron
      Hallo,
      bestelle mir gerade die oanda api und will meine praktischen Erfahrungen hier posten.

      1. Getting Started
      1.1. Ensure your FXTrade account has a minimum of USD $600
      1.2. Review and sign the API Legal Agreement and fax it back to 1.212.208.4356

      Das API Legal Agreement muß man auf allen 11 Seiten "unterschreiben/signieren"!
      Ob die "Initialien" reichen, oder was genau mit "initial/initialled" gemeint ist hab ich nicht gecheckt:
      oanda: "we do need to have all pages initialled by you"
      oanda: "Please initial each page"

      Dann stellt man sich die Fragen, ob man später noch Subaccounts adden kann und/oder die Api Version wechseln zB. von VB.NET zu Java... ;)
      Ja! :-))

      oanda: "After we have received your completed application and your service has been set up, you do have the option of changing your API version and/or adding sub accounts at a later date."

      So, dann ist jetzt mein zweites Fax unterwegs! ;)

      Bis bald...
      Wie Samen, die unter der Schneedecke träumen, träumen eure Herzen vom Frühling. Vertraut diesen Träumen, denn in ihnen verbirgt sich das Tor zur Unendlichkeit. Khalil Gibran