The invention relates generally to data distribution, and more particularly, to systems and methods for distributing foreign currency exchange (“forex”) trade signals and related information.
Forex trading software allows individuals and others to trade foreign currencies in the forex market. Existing software platforms such as, for example, the Metatrader Online Trading Platform by MetaQuotes Software Corp., offer the ability to perform automated trading in forex markets. One component of this system is a Client Terminal. Client Terminal software allows a user to perform automated trading through the use of proprietary Expert Advisors. Proprietary Expert Advisors are software plug-ins that control the execution of the user's trades. However, Expert Advisor software residing on a Client Terminal can easily be decompiled, exposing the user's and Expert Advisor software's trading strategy. The unauthorized decompiling of Expert Advisor plug-ins or software facilitates illicit copying and use of proprietary Expert Advisors.
According to one embodiment, a method of distributing trading signals is provided. The method includes server-side software which receives trade signals from an automated or manual trading strategy. These signals and related trade information are stored in a database that is accessible from the internet or other network. The method also includes client-side software that reads the signals and trade information from the database over the internet or other network.
Prior to discussing the various embodiments, a review of the definitions of some exemplary terms used throughout the disclosure is appropriate. Both singular and plural forms of all terms fall within each meaning:
“Software,” as used herein, includes but is not limited to one or more computer readable and/or executable instructions that cause a computer or other electronic device to perform functions, actions, and/or behave in a desired manner. The instructions may be embodied in various forms such as routines, algorithms, modules or programs including separate applications or code from dynamically linked libraries. Software may also be implemented in various forms such as a stand-alone program, a function call, a servlet, an applet, instructions stored in a memory, part of an operating system or other type of executable instructions. It will be appreciated by one of ordinary skill in the art that the form of software is dependent on, for example, requirements of a desired application, the environment it runs on, and/or the desires of a designer/programmer or the like.
“Related information” as used herein, means information related to a trade, including, but not limited to, for example, opening price, lot size, stoploss price, profit target price, closing price, trade type, currency pair, unique identifier, etc.
“Trade signal” as used herein means the command or communication to execute the trade. The trade signal may contain all or some or none of the related information.
“Tick” as used herein means the smallest movement of the price of a one or more currency pairs.
Illustrated in
One embodiment of a client side portion of the system is shown in 300. A trade list reader 302 reads the trades from database 206. These trades are compared to the trade list 306 on the client by a trade differentiator 304. Trade differentiator 304 is functionally similar to trade differentiator 208 in that they both compare the related information of trades. The source of the related information for trade differentiator 304 is the trades contained in the database. The output of trade differentiator 304 is a list of trades that should be open on the client. If a trade in the trade list 306 is not in the database 206, the trade is closed by the trade executor 308. If a trade is not in the trade list 306 but is in the database 206, the trade is opened on the client 300 by trade executor 308.
Referring now to
After block 405, the trade related information is cleared from a temporary database table in database 206 in block 406. This is done because an open trade may have been closed or a new trade may have been opened since the last tick. This creates a temporary database table that is current as of the last tick. In particular, the trade related information for the currently open trades is cleared so the updated trade related information representing the current open trades (which may include fewer trades in the case of some open trades being closed or more trades in the case of new trades being opened) can be written to the temporary database table on every tick. If the loop counter is less than the number of open trades, as shown in 407, the trade related information for each open trade is read from the trading platform software in 408 and temporarily stored in computer memory. This information is then written to the temporary table in database 206 or stored in some other media such as computer file or computer memory as shown in 409.
The loop counter is incremented in 410 to read the next open trade's related trade information. The loop counter is then compared to the number of open trades again, in 407 to determine if the last open trade has been read. If the loop counter is equal to the number of open trades minus one, then trade related information for all the open trades has been stored, and the trade related information in the temporary table is compared to the trade related information in a current trades table in 411. In this embodiment, database 206 includes both the temporary trades table and the current trades table. The current trades table is read by the client side portion 300 in order to determine if there is a difference between the trades currently opened on the client side portion 300 and server side portion 200. If no information has changed, program execution returns to wait for the next tick to occur. If there is a difference in the trade related information contained in the temporary database table and the current trades table, a lock is set to prevent reading the current trades table as shown in 412. This is to prevent the client side portion 300 from reading the current trades table while the trade related information is being updated from the temporary trades table. This lock may be automatically imposed by the operating system or other software such as the database itself or may be generated by the present invention as shown. During this lock, the trade related information is copied from the temporary trades table to the current trades table in 413. The lock is removed in 414, so as to allow the trade related information to be read by the client side portion 300. Program execution then returns to wait for a tick to occur as shown in 403.
Referring now to
Referring now to
The systems and methods of the present invention can be implemented on a variety of platforms including, for example, networked computer systems and stand-alone computer systems. Additionally, the logic and databases shown and described herein preferably reside in or on a computer readable medium such as, for example, a Read-Only Memory (ROM), Random-Access Memory (RAM), programmable read-only memory (PROM), electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disk or tape, and optically readable mediums including CD-ROM and DVD-ROM. Still further, the processes and logic described herein can be merged into one large process flow or divided into many sub-process flows. The order in which the process flows herein have been described is not critical and can be rearranged while still accomplishing the same results. Indeed, the process flows described herein may be rearranged, consolidated, and/or re-organized in their implementation as warranted or desired.
While the present invention has been illustrated by the description of embodiments thereof, and while the embodiments have been described in considerable detail, it is not the intention of the specification to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. Therefore, the invention, in its broader aspects, is not limited to the specific details, the representative apparatus, and illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the spirit or scope of the applicant's general inventive concept.
This application claims priority to U.S. Provisional Patent Application Ser. No. 60/948,791 filed Jul. 10, 2007 and which is hereby fully incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60948791 | Jul 2007 | US |