Join the 80,000 other DTN customers who enjoy the fastest, most reliable data available. There is no better value than DTN!

(Move your cursor to this area to pause scrolling)




"Everything is working great ! Very impressive client. The news refreshes better and is more pertinent than the ******* feed I paid $ 100/month for. I Also like the charts a lot." - Comment from Leon
"If you want customer service that answers the phone, your best bet is IQFeed. I cannot stop praising them or their technical support. They are always there for you, and they are quick. I have used ****** too but the best value is IQFeed." - Comment from Public Forum
"Boy, probably spent a thousand hours trying to get ******* API to work right. And now two hours to have something running with IQFeed. Hmmm, guess I was pretty stupid to fight rather than switch all this time. And have gotten more customer service from you guys already than total from them… in five years." - Comment from Jim
"Awesome response, as usual. It is a sincere and refreshing pleasure to do business with DTN, compared to your competition." - Comment from Ryan
"My broker in Davenport suggested I give you a try as he uses your service and says its the best." - Comment from Bill via RT Chat
"I noticed that ******* quotes locked up shortly after the interest rate announcement yesterday while yours stayed stable." - Comment from Ron in Utah
"If you are serious about your trading I would not rely on IB data for serious daytrading. Took me a while to justify the cost of IQ Feed and in the end, it's just a 2 point stop on ES. Better safe than sorry" - Comment from Public Forum
"Interactive Brokers tick data was inconsistent, so I have switched to using DTN exclusively. It is great to no longer have to worry about my datafeed all day long." - Comment from Philippe
"After all the anxiety I had with my previous data provider it is a relief not to have to worry about data speed and integrity." - Comment from Eamonn
"I've been using Neoticker RT with IQFeed for two months, and I'm very happy with both of the products (I've had IQFeed for two years with very few complaints). The service from both companies is exceptional." - Comment from Public Forum
Home  Search  Register  Login  Recent Posts

Information on DTN's Industries:
DTN Oil & Gas | DTN Trading | DTN Agriculture | DTN Weather
Follow DTNMarkets on Twitter
DTN.IQ/IQFeed on Twitter
DTN News and Analysis on Twitter
»Forums Index »Archive (2017 and earlier) »IQFeed Developer Support »Erlang - Getting started with sockets - newbie quick hack
Author Topic: Erlang - Getting started with sockets - newbie quick hack (2 messages, Page 1 of 1)

klarsen
-Interested User-
Posts: 3
Joined: Jun 15, 2006


Posted: Jun 23, 2010 12:58 AM          Msg. 1 of 2
Hi Guys,

i'm trying to learn erlang :-) since it seems like Erlang loves small messages like quotes - and loves IP/Sockets. But i'm a TOTAL newbie into erlang - and took me a while to get feed up and get data out.

So I thought I would share - and would love if anyone else in the same boat would share too.

So here is a short code that 1. starts IQFeed, 2. Connects to Socket, 3 Retrieves a packet or two from port 5009 and outputs them to the console.

:code!!
%%%file_comment
-module(iqfeed_start).


-export([start/0,client/1]).

start() ->
open_port({spawn,"IQConnect.exe -product IQFEED_DEMO -version 1.0.0.0"}, []),
timer:sleep(1000). %open IQfeed and then wait for login etc


client(PortNo) ->
start(), %calls the start of IQConnect - remove this
{ok,Sock} = gen_tcp:connect("localhost", PortNo,[binary, {active,false}]), %open a socket connection
io:format("Connected to sock:~p ~n",[Sock]),
%%%gen_tcp:send(Sock,Message),
{ok,A}=gen_tcp:recv(Sock, 0), %receive what is waiting for us like "S,KEY etc"
io:format("~p ~n", [A]), % print it to console
gen_tcp:send(Sock,"wMSFT\r\n"), %ask for a Microsoft quote
io:format("command sent~n"),
Bx = gen_tcp:recv(Sock,0), %receive packet
io:format("~p ~n", [Bx]),
io:format("waiting for next server packet~n"),
C = gen_tcp:recv(Sock,0), %get next packet - if market not active this will show the 1 minute timer
io:format("~p ~n", [C]), % print it.
gen_tcp:close(Sock). %actually closes IQFeed - make it a comment for tests!


you start it by compiling the iqfeed_start.erl "c(iqfeed_start) from Erlang console. Then you can call it by writing "iqfeed_start:client(5009)." [enter] - where 5009 is the port number.

My todo list: Find a way to detect if IQFeed is already running (like fire a socket connect request)
Edited by klarsen on Jun 23, 2010 at 01:00 AM

JoshSN
-Interested User-
Posts: 29
Joined: Apr 8, 2010


Posted: Jun 25, 2010 07:42 AM          Msg. 2 of 2
Here's how it can be done in Perl.

#!/usr/bin/perl

use POE qw(Component::Client::TCPMulti);

system("/path/to/IQFeed/iqconnect.exe -product DEMO -version 1.1 &");
sleep 15;

my ($level1,$feed);

POE::Component::Client::TCPMulti->new(
InputEvent => sub {
print "From server: $_[ARG0]\n";
},
SuccessEvent => sub {
if ($_[ARG2] == 5009) {
$level1 = $_[ARG4];
$_[KERNEL]->yield(send => $level1, "wGOOG\r\n");
} elsif ($_[ARG2] == 9100) {
$feed = $_[ARG4];
$_[KERNEL]->yield(send => $feed, "HTD,MO1018U19,3\r\n");
}
},
inline_states => {
_start => sub {
$_[KERNEL]->yield(connect => '127.0.0.1', $_) for (5009, 9100);
},
}
);
 

 

Time: Sun May 19, 2024 12:06 AM CFBB v1.2.0 5 ms.
© AderSoftware 2002-2003