Asset parameters 2
Size of 1 price point (pip) of the current asset in units of the counter currency, f.i. 0.0001 for EUR/USD. Can be used to set a price in pips, f.i. Stop = 10*PIP. For converting a price difference to pips, divide it by PIP.
Value of 1 pip profit or loss per lot in units of the account currency; determined by the lot size (LotAmount) and the exchange rate of account currency and counter currency. This value should normally remain constant during the simulation for not adding artifacts to the
strategy performance figures; but if desired for special purposes, it can be calculated by script to fluctuate with the exchange rate (see example below). When the asset price rises or falls by x, the equivalent profit or loss in account currency is x * Lots * PIPCost/PIP.
The counter currency exchange rate - its value in account curreny units - is
PIPCost / (PIP * LotAmount).
Required margin for puchasing and holding 1 lot of the current asset in units of the account currency; depends on leverage,
currency, and lot size.
The number of lots at a given margin is Margin / MarginCost.
For options and futures, MarginCost is calculated per
underlying unit. The variable is updated in real time when the broker uses the Leverage method for calculating margin cost. For special margin requirements, f.i. for covered options or
option combos, set this variable in the script to the
maximum of initial, maintenance, and end-of-day margin per underlying unit before entering
Asset value divided by margin cost. Determined by the account's buying power, i.e. the asset amount that can be purchased with account currency. MarginCost and Leverage can be converted into each other: MarginCost = LotAmount * Asset price * CCValue / Leverage = Asset price / Leverage * PIPCost / PIP.
The number of contracts per Lot with the current asset. Determines the minimum order size and depends on the lot size of the account. For currencies, the lot size of a micro lot account is normally 1000 contracts; of a mini lot account 10000 contracts; and of a a standard lot account 100000 contracts. Some brokers offer also lot sizes that are a fraction of a contract, f.i. 0.1 contracts per lot for certain CFDs.
Maximum number of Lots with the current asset
(default: 1000000000/LotAmount). Can be set to a smaller number
for safety reasons. If the number of lots exceeds this limit, a software bug is
suspected, the order is not executed, and an error message is issued.
Multiplies prices, ask-bid spread, trade size, and PIP size of the current asset with the given factor. Can be used for generating an artificial asset for arbitrage purposes.
The initial asset price taken from the asset list. Can be
set to the first historical price and used to adapt parameters (such as MarginCost) to
asset price changes in the backtest (f.i. MarginCost = InitialMarginCost *
priceClose() / InitialPrice).
The last ask price of the current asset in live trading mode or by calling priceQuote. The last bid price is AskPrice - Spread.
var, read/only if not mentioned otherwise (edit the Asset List for permanently changing asset parameters).
Bar number of the last received price quote of the current asset,
from 1 (first bar) up to Bar
(current bar). Can be used to determine if there was a quote in the current bar.
- When Zorro is connected to a broker, it loads the current asset parameters from the broker's server
if available. When not connected, or when the boker API does not provide the parameters, they are loaded from the asset list (normally History\AssetsFix.csv). The asset list can be edited with a spreadsheet program or a text editor for simulating different brokers, accounts, and assets in backtests; or it can be automatically updated to the parameters of the current broker account. For details see Data Import.
// set stop / profit target at a fixed pip distance
Stop = 10*PIP;
TakeProfit = 40*PIP;
// let profits fluctuate with the account currency exchange rate
function convertProfits(string Rate)
char OldAsset; strcpy(OldAsset,Asset); // store original asset
var Price = price();
if(Price > 0.)
PIPCost = PIP*LotAmount/Price;
// call this function from run(), f.i.
convertProfits("EUR/USD"); // when account currency = EUR and counter currency = USD.
Stop, Spread, Lots, price, asset,
► latest version online