PZ Triangular Arbitrage EA
The Triangular Arbitrage EA exploits inefficiencies between three related currency pairs, placing offsetting transactions which cancel each other for a net profit.
- Easy to set up and supervise
- No indicators or hard analysis needed
- The strategy is time-frame independent
- The strategy is neutral to news, gaps or price spikes
- Deals are completely hedged: all you can lose is the spread
- Under ideal trading conditions, triangular arbitrage is a zero-risk strategy
- Arbitrage is a high-volume strategy and generates a lot of rebates
It implements a set of unique features:
- You decide which pair set to trade
- Adapts to spread, commissions and swaps
- Implements an optional trade-expiration feature
- Customizable price trigger and profit target
It can trade any of the following pair sets:
- EURUSD, EURGBP and GBPUSD
- EURUSD, EURAUD and AUDUSD
- EURUSD, EURNZD and NZDUSD
- EURCHF, EURUSD and USDCHF
- EURCAD, EURUSD and USDCAD
What is Triangular Arbitrage?
Triangular arbitrage (also referred to as cross currency arbitrage or three-point arbitrage) is the act of exploiting an arbitrage opportunity resulting from a pricing discrepancy among three different forex pairs in the foreign exchange market. A triangular arbitrage deal involves three trades, exchanging the initial currency for a second, the second currency for a third, and the third currency for the initial. During the second trade, the arbitrageur locks in a zero-risk profit from the discrepancy that exists when the market cross exchange rate is not aligned with the implicit cross exchange rate. A profitable deal is only possible when a market inneficiency arises and if execution times are small.
Important - there is substantial execution risk in employing a triangular arbitrage strategy for retail traders, as execution times are never perfect on the server-side.
At the time of writing, the MT4 Tester does not support multi-currency-pairs testing. To backtest the EA, test the MT5 version.
- Triangulation Pairs - Select the pair set to trade.
- Symbol Name Suffix - Type the suffix of the symbol names of your broker. For instance, if EURUSD is named EURUSDfx, fx is the suffix.
- Symbol Name Prefix - Type the prefix of the symbol names of your broker. For instance, if EURUSD is named mEURUSD, m is the prefix.
- Trade Trigger - The trade trigger defines how deep the inefficiencies must be to trade, as multiplier of the combined spreads and commissions the deal must pay to enter a deal. A higher value means deeper inefficiencies are traded, but it also means that trading activity won't happen very often. Use this parameter to offset any slippage.
- Profit Target in Pips - Amount of pips in profit needed to close the deal. A higher values means deals will be opened for longer. Make sure this parameter is never above the combined spread of the symbols traded.
- Expiration of trades - Optionally, you can select an expiration in time for the trades. This is very effective to cut exposure in situations at which slippage as ruined the trading opportunity.
- Lotsize for trades - Enter the lotsize for the first trade, which is the parent symbol trade. If the volume is too much for your account equity, the EA won't trade.
- Slippage for orders - Maximum slippage on orders, in points, allowed for the trades.
- Magic Number for the trades - Enter an unique magic number, not present in other EAs.
- Custom comment for trades - Comment for the trades sent to the broker
Arturo Lopez Perez, private investor and speculator, software engineer and founder of Point Zero Trading Solutions.
- Algorithm execution made faster and using OnTimer() instead of ticks
- Magic Numbers used are from 76543 to 76550