Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Kostenlose Historische EOD Daten
#21
Notiz 

Für Faule

Ohne VBA. Einfach in eine Excel-Zelle kopieren. In A1 steht das Tickersymbol.

=WEBDIENST("https://api.iextrading.com/1.0/stock/" & A1 & "/quote/delayedPrice")

z.B. als Webaufruf
https://api.iextrading.com/1.0/stock/aap...layedPrice

Von IEX wird es bald eine neue API geben. Wiederholt haben sich mehrere User geäußert, dass besonders bei den Financials alte Werte übertragen werden.

https://github.com/iexg/IEX-API/issues/557
#22
Notiz 

RE: Kostenlose Historische EOD Daten

(27.11.2018, 11:19)atze2000 schrieb:
(26.11.2018, 14:59)Solventix schrieb: Vielleicht sollten wir mal eine kleine Programmier-Ecke mit Tipps und Tricks zur Kursversorgung, Webscraping und Tradingsystemen aufbauen?

Ich lass mir mal was einfallen, mir würde so eine Ecke auch gefallen.

Das kannst Du ja dann in die entsprechende Ecke verschieben:

Download einer dynamischen Webpage (also mit JavaScript-generierten Inhalten).
Node.js und Puppeteer müssen installiert sein.
Code:
// DownloadScript.js
const puppeteer = require("puppeteer");
const fs = require("fs");

async function run() {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
    await page.goto("https://www.trading-stocks.de/index.php", { waitUntil: 'domcontentloaded'});
    // wait a bit so that the browser finishes executing JavaScript
    await page.waitFor(1 * 1000);
    const html = await page.content();
    fs.writeFileSync("Trading-Stocks.htm", html);
    await browser.close();
}

run();

Aufruf dann mit
node DownloadScript.js

Statt der Sekunde Warten kann man auch auf das Erscheinen eines Elementes warten, wenn man es kennt, beispielsweise:

await page.waitForSelector('h1');


Tools zum Webscraping:
https://www.scraperapi.com/blog/the-10-b...ping-tools
#23
Notiz 

RE: Kostenlose Historische EOD Daten

Da ich gerade await und async lese. Man kann in Javascript auch aus asynchronen Methoden "Pseudosynchrone" machen. Normalerweise wird mit asynchronen Methoden so gearbeitet, dass man Callbacks (Methoden) übergibt die am Ende der asynchronen Methode dann aufgerufen werden. Dies führt dazu, dass wenn mann damit oft hantieren muss, der Code sehr unübersichtlich wird. 

Wie das aussehen kann:
Code:
var   fs      = require ('fs');


const readSync = async function () {
    return new Promise(resolve => {
        fs.readFile("Dateiname", (err, data) => {
            resolve (data);
        });
    });
};

const ttt = async function ()
{
  ....
  var res = await readSync ();    
  ...
}

ttt ();
Hier am Beispiel von readFile(), klar dass es auch readFileSync() gibt, aber es geht ja nur um's Beispiel. Entscheidend ist dabei, dass der Code nicht tatsächlich synchron abläuft, sondern einfach die Lesbarkeit vom Code verbessert wird. Der Funktionsaufruf in Main ttt(), kommt sofort zurück. Der Ablauf in der Funktion ttt() kann man sich als synchron denken. D.h. readSync() kommt erst zurück wenn die Datei gelesen wurde. Die Rückgabe der Daten erfolgt dabei per Promise-Object und resolve().

Man kann auch Main selbst synchron machen, dazu muss es entsprechend umklammert werden.

Mehr dazu: https://www.heise.de/developer/artikel/a...33105.html

__________________
Kinder wollen nicht wie Fässer gefüllt, sondern wie Fackeln entzündet werden.
#24

RE: Kostenlose Historische EOD Daten

(30.11.2018, 06:58)Solventix schrieb: [quote='atze2000' pid='2935' dateline='1543310365']
[quote='Solventix' pid='2713' dateline='1543237141']

Vielleicht sollten wir mal eine kleine Programmier-Ecke mit Tipps und Tricks zur Kursversorgung, Webscraping und Tradingsystemen aufbauen?

Ich lass mir mal was einfallen, mir würde so eine Ecke auch gefallen.

Das kannst Du ja dann in die entsprechende Ecke verschieben:

mit großem Interesse die Beiträge gelesen und links besucht.

Könnte mich an diesem Thema EOD, webscrap, Programmierecke beteiligen mit excel vba (makros) und eingeschränkt java und py.

Bin beim Thema Stillhalter im DAX + anderen Werten - Tradingstrategien unterwegs.

Aufzeichnung und Analyse /Auswertung der Aktien und Options trades mit excel VBA, RT data via webscrap, etc.......

Ich fände den start der...kleine Programmier-Ecke mit Tipps und Tricks zur Kursversorgung, Webscraping und Tradingsystemen .....sehr hilfreich. Sind Vorschläge erwünscht?

Allen noch ein gutes Neues Jahr und ein gutes Händchen beim traden :-))
#25
Notiz 

RE: Kostenlose Historische EOD Daten

(26.11.2018, 14:59)Solventix schrieb: Vielleicht sollten wir mal eine kleine Programmier-Ecke mit Tipps und Tricks zur Kursversorgung, Webscraping und Tradingsystemen aufbauen?

Gibt es diese Ecke schon??? Habe ich sie übersehen???
Ich könnte mit Excel-VBA etwas beitragen.....

Gruß Faultier
#26
Notiz 

RE: Kostenlose Historische EOD Daten

(07.02.2019, 14:42)Faultier schrieb:
(26.11.2018, 14:59)Solventix schrieb: Vielleicht sollten wir mal eine kleine Programmier-Ecke mit Tipps und Tricks zur Kursversorgung, Webscraping und Tradingsystemen aufbauen?

Gibt es diese Ecke schon??? Habe ich sie übersehen???
Ich könnte mit Excel-VBA etwas beitragen.....

Gruß Faultier

Ich wäre mit Python dabei :)
#27
Notiz 

RE: Kostenlose Historische EOD Daten

TWS und IBPy:
ref: stackoverflow
ich nehme ein py-modul und ruf die tickerdaten EUR/USD auf

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from ib.ext.Contract import Contract
from ib.opt import ibConnection, message
from time import sleep

# print all messages from TWS
def watcher(msg):
   print (msg)

# show Bid and Ask quotes
def my_BidAsk(msg):
   if msg.field == 1:
       print ('%s:%s: bid: %s' % (contractTuple[0],
                      contractTuple[6], msg.price))
   elif msg.field == 2:
       print ('%s:%s: ask: %s' % (contractTuple[0], contractTuple[6], msg.price))

def makeStkContract(contractTuple):
   newContract = Contract()
   newContract.m_symbol = contractTuple[0]
   newContract.m_secType = contractTuple[1]
   newContract.m_exchange = contractTuple[2]
   newContract.m_currency = contractTuple[3]
   newContract.m_expiry = contractTuple[4]
   newContract.m_strike = contractTuple[5]
   newContract.m_right = contractTuple[6]
   print ('Contract Values:%s,%s,%s,%s,%s,%s,%s:' % contractTuple)
   return newContract

if __name__ == '__main__':
   con = ibConnection()
   con.registerAll(watcher)
   showBidAskOnly = True  # set False to see the raw messages
   if showBidAskOnly:
       con.unregister(watcher, message.tickSize, message.tickPrice,
                      message.tickString, message.tickOptionComputation)
       con.register(my_BidAsk, message.tickPrice)
   con.connect()
   sleep(1)
   tickId = 1

   # Note: Option quotes will give an error if they aren't shown in TWS
   #contractTuple = ('QQQQ', 'STK', 'SMART', 'USD', '', 0.0, '')
   #contractTuple = ('QQQQ', 'OPT', 'SMART', 'USD', '20070921', 47.0, 'CALL')
   #contractTuple = ('ES', 'FUT', 'GLOBEX', 'USD', '200709', 0.0, '')
   #contractTuple = ('ES', 'FOP', 'GLOBEX', 'USD', '20070920', 1460.0, 'CALL')
   contractTuple = ('EUR', 'CASH', 'IDEALPRO', 'USD', '', 0.0, '')
   stkContract = makeStkContract(contractTuple)
   print ('* * * * REQUESTING MARKET DATA * * * *')
   con.reqMktData(tickId, stkContract, '', False)
   sleep(15)
   print ('* * * * CANCELING MARKET DATA * * * *')
   con.cancelMktData(tickId)
   sleep(1)
   con.disconnect()
   sleep(1)
------------------------------------------------------------------------
   # Note: Option quotes will give an error if they aren't shown in TWS
   #contractTuple = ('QQQQ', 'STK', 'SMART', 'USD', '', 0.0, '')
   #contractTuple = ('QQQQ', 'OPT', 'SMART', 'USD', '20070921', 47.0, 'CALL')
   #contractTuple = ('ES', 'FUT', 'GLOBEX', 'USD', '200709', 0.0, '')
   #contractTuple = ('ES', 'FOP', 'GLOBEX', 'USD', '20070920', 1460.0, 'CALL')
---------------------------------------------------------------------
   contractTuple = ('EUR', 'CASH', 'IDEALPRO', 'USD', '', 0.0, '')
also nur diese 'EUR' Abfrage zu den nachfolgenden Antworten der TWS führt
* * * * REQUESTING MARKET DATA * * * *
<marketDataType reqId=1, marketDataType=1>
EUR:: bid: 1.1337
EUR:: ask: 1.13375
<tickGeneric tickerId=1, tickType=49, value=0.0>
<tickGeneric tickerId=1, tickType=49, value=0.0>
* * * * CANCELING MARKET DATA * * * *
-----------------------------------------------------------------
ergo - irgendwie stimmen die parameter und die Folge der Parameter Eingaben nicht
Fehler noch nicht gefunden ??
-----------------------------------------------------------------
Test gemacht mit IDLE 3.6 (32 bit ) 3.7 geht nicht

das ist mein Startbeitrag - wobei mein Ziel ist - Stockdaten und Optionsdaten in ein excelsheet zu bringen und da die Auswertungen zu machen.

excel sheet benötigt Daten für Optionen closing und strike (clsPr2 und cls str2) - die nicht manuell sondern auto via TWS streaming daten und py eingefügt werden sollen

was ist euer Bedarf mit py ??
oder excel od. java oder IB API's ?


Angehängte Dateien    
#28

RE: Kostenlose Historische EOD Daten

im py script Anweisung verwenden und getestet- Ergebnis stirng bringt daten hervor-->
läuft -> bringt DAX Daten von IBIS (ohne delay) aus TWS datenfeed
contractTuple = ('ADS', 'STK', 'IBIS', 'EUR', '',0.0, '')
-------------------------------------------------------------
USA Symbole erbingen daten... :-)
#29
Notiz 

RE: Kostenlose Historische EOD Daten

upadte: folgende parameter string brint die Optionsdaten für
ADS AK 198.05 strike 200 mit 1.54/1.64 aktuell

hier ist die zeile für den py sccript davor.
contractTuple = ('ADS', 'OPT', 'DTB', 'EUR', '20190215', 200.0, 'CALL')
mit dem Ergebnis:
Contract Values:ADS,OPT,DTB,EUR,20190215,200.0,CALL:
* * * * REQUESTING MARKET DATA * * * *
<marketDataType reqId=1, marketDataType=1>
ADS:CALL: bid: 1.58
ADS:CALL: ask: 1.67
<tickGeneric tickerId=1, tickType=49, value=0.0>
ADS:CALL: ask: 1.68
<tickGeneric tickerId=1, tickType=49, value=0.0>
ADS:CALL: ask: 1.67
ADS:CALL: bid: 1.56
ADS:CALL: ask: 1.65
ADS:CALL: bid: 1.54
ADS:CALL: ask: 1.64
* * * * CANCELING MARKET DATA * * * *
>>>
jetzt nur noch die daten für strike, aks,bid ins excelsheet transferieren...hat jemand einen Vorschlag [Bild: wonder.gif]
#30
Notiz 

RE: Kostenlose Historische EOD Daten

(21.11.2018, 18:23)saphir schrieb: https://stooq.com / stooq.pl (dazu muss .US an das Symbol angehängt werden) 
Kann man hier auch den end-of-Day Kurs von mehreren Aktienwerten gleichzeitig abrufen?
Ich suche nämlich noch eine Seite, auf der ich auch von europäische Werte die end-of-Day Kurse bekomme und das am liebsten als Sammelabfrage....

Gruß Faultier


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Notiz Open Source Tools und Daten Lancelot 46 19.396 30.06.2024, 11:53
Letzter Beitrag: Lancelot
Notiz suche historische Leitzinsen der Bundesbank seit 1965 frank 2 2.861 22.09.2020, 19:55
Letzter Beitrag: muchmoney
Notiz EOD Daten Feeds atze2000 7 9.364 08.02.2019, 12:59
Letzter Beitrag: Noni-Binder
Notiz Historische Indexzusammensetzung atze2000 4 5.779 31.01.2019, 10:31
Letzter Beitrag: pjf
Notiz Free Future Daten atze2000 0 2.296 11.01.2019, 13:27
Letzter Beitrag: atze2000
Notiz Cot Daten atze2000 2 3.786 10.01.2019, 19:46
Letzter Beitrag: atze2000

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste