Кусок лога теста: (маржа определена неправильно изначально - открыто лотов всего 6.2 по ауду - показано маржи 6200 при цене в диапазоне 0.6880 - 0.7260??? см. пост выше)
01:39:11 2004.06.30 03:09 mtg_XVI: open #65 sell 0.10 AUDUSD at 0.6880 ok ........................ ................ open ........................ 01:39:13 2004.07.12 00:55 Tester: not enough money for buy 0.10 AUDUSD at 0.7260 sl: 0.0000 tp: 0.0000 [2004.07.12 00:55] 01:39:13 2004.07.12 00:55 Tester: PrevBalance: 22353.67, PrevPL: -10217.35, PrevEquity 12136.32, PrevMargin: 6200.00, NewMargin: 12300, FreeMargin: -163.68 01:39:13 2004.07.12 00:55 upi: Order BUY Send Error = 134 .........................
Что мы видим, что при попытке открыть 0.1 лота BUY, дополнитеоьной (New) маржи требуется 6200*2-100 = 12300 - откуда? что это за расчет такой? В итоге получаем, что свободной (Free) маржи 12136-12300 = -163.68 НЕдостаточно! И всему тестированию 3.14здец.
Если это не пи, а у меня с головой, то беру свои претензии обратно :)
инструментам - т.е. для для любого инструмента (вне зависимости от contract size и базовой валюты) за 1 лот взимается, например 1000 USD.
2. Существует понятие маржи хеджирования - сколько маржи нужно довнести для открытия хеджирующей (встречной) позиции - видимо в настройках инструмента у дилерской компании стоит значение маржи хеджирования равное размеру контракта - это означает что с каждой из хэджирующих позиций взимается полная маржа.
Вы можете это проверить, посмотрев настройки инструмента ("Свойства символа" - в тестере).
инструментам - т.е. для для любого инструмента (вне зависимости от contract size и базовой валюты) за 1 лот взимается, например 1000 USD.
Интересно какой это брокер требует одинаковые требования, скажем для фунта и ауда? Совсем одинаковые валюты. Чтобы убедиться, меняем в эксперте, что выше ф-цию Print на Comment, и запускаем эксперта в онлайн на демке на ПРЯМОЙ котировке.
int start() {double LOTS = 1; if (OrdersTotal() < 1) { OrderSend (Symbol(), OP_SELL, LOTS, Bid, 5, 0, 0, "xxx", 0, 0, Red); } Comment("Symbol = ", Symbol(), "\n", "AccountMargin() = ", AccountMargin(), "\n", "Real AccountMargin = MODE_LOTSIZE / AccountLeverage() * Bid * LOTS = ", MathRound(MarketInfo(Symbol(),MODE_LOTSIZE) / AccountLeverage() * Bid) * LOTS); return(0); }
Что мы видим? Маржа оди-НА-ко-вая в оБОих случаях, напрашивается вывод, что ф-ция AccountMargin() в тестовом режиме здит, в все тесты, где тестер обращается к марже тоже :) проверте, я это не выдумал
2. Существует понятие маржи хеджирования - сколько маржи нужно довнести для открытия хеджирующей (встречной) позиции - видимо в настройках инструмента у дилерской компании стоит значение маржи хеджирования равное размеру контракта - это означает что с каждой из хэджирующих позиций взимается полная маржа.
Вы можете это проверить, посмотрев настройки инструмента ("Свойства символа" - в тестере).
К сведению: терминал метаквотовский, котировки тоже, хеджированная маржа по трем прямым валютам - 0 (ноль). или покажите такого СЕрьезного брокера, будем знать куда лаве нести :)
Интересная трактовка. Так в этом то и весь фикус-пикус, что и происходит в тестовом режиме, но это ведь неПРавильно.
Вот тупой пример. Баланс 10 косых. Тестим эксперта на евре один раз.
int start() {if (OrdersTotal() < 1) { // 5 OrderSend (Symbol(), OP_SELL, 0.1, Bid, 5, 0, 0, "xxx", 0, 0, Red); Print("=========================sell== AccountFreeMargin() = ", AccountFreeMargin()); return(0); } if (OrdersTotal() != 0 && OrdersTotal() < 2) {OrderSelect (0, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_SELL) { // 0.1 OrderSend (Symbol(), OP_BUY, 5, Ask, 5, 0, 0, "xxx", 0, 0, Blue); Print("=====================sell-buy== AccountFreeMargin() = ", AccountFreeMargin()); return(0); } } return(0); }
потом меняем лоты местами 0.1 на 5 в сел и 5 на 0.1 в бае и тестим еще раз, открываем лог.
19:33:50 xxx: loaded successfully 19:33:59 xxx started for testing 19:33:59 2005.11.11 11:00 xxx: open #1 sell 0.10 EURUSD at 1.1695 ok 19:33:59 2005.11.11 11:00 xxx: =========================sell== AccountFreeMargin() = 9900 19:33:59 2005.11.11 11:05 xxx: open #2 buy 5.00 EURUSD at 1.1706 ok 19:33:59 2005.11.11 11:05 xxx: =====================sell-buy== AccountFreeMargin() = 5100 19:33:59 2005.12.06 17:59 Tester: order #2 is closed 19:33:59 2005.12.06 17:59 Tester: order #1 is closed 19:34:41 xxx EURUSD,H1: loaded successfully 19:34:41 xxx started for testing 19:34:41 2005.11.11 11:00 xxx EURUSD,H1: open #1 sell 5.00 EURUSD at 1.1695 ok 19:34:41 2005.11.11 11:00 xxx EURUSD,H1: =========================sell== AccountFreeMargin() = 5000 19:34:41 2005.11.11 11:05 Tester: not enough money for buy 0.10 EURUSD at 1.1706 sl: 0.0000 tp: 0.0000 [2005.11.11 11:05] 19:34:41 2005.11.11 11:05 Tester: PrevBalance: 10000.00, PrevPL: -550.00, PrevEquity 9450.00, PrevMargin: 5000.00, NewMargin: 9900, FreeMargin: -450.00 19:34:41 2005.11.11 11:05 xxx EURUSD,H1: =====================sell-buy== AccountFreeMargin() = 5000 19:34:41 2005.11.11 11:10 Tester: not enough money for buy 0.10 EURUSD at 1.1704 sl: 0.0000 tp: 0.0000 [2005.11.11 11:10] 19:34:41 2005.11.11 11:10 Tester: PrevBalance: 10000.00, PrevPL: -450.00, PrevEquity 9550.00, PrevMargin: 5000.00, NewMargin: 9900, FreeMargin: -350.00 19:34:41 2005.11.11 11:10 xxx EURUSD,H1: =====================sell-buy== AccountFreeMargin() = 5000 19:34:41 2005.11.11 11:20 Tester: not enough money for buy 0.10 EURUSD at 1.1707 sl: 0.0000 tp: 0.0000 [2005.11.11 11:20] 19:34:41 2005.11.11 11:20 Tester: PrevBalance: 10000.00, PrevPL: -600.00, PrevEquity 9400.00, PrevMargin: 5000.00, NewMargin: 9900, FreeMargin: -500.00 19:34:41 2005.11.11 11:20 xxx EURUSD,H1: =====================sell-buy== AccountFreeMargin() = 5000 19:34:41 2005.11.11 11:25 xxx EURUSD,H1: open #2 buy 0.10 EURUSD at 1.1690 ok 19:34:41 2005.11.11 11:25 xxx EURUSD,H1: =====================sell-buy== AccountFreeMargin() = 5100 19:34:41 2005.11.28 20:10 xxx stopped because of Stop Out 19:34:41 2005.11.28 20:10 Tester: order #2 is closed 19:34:41 2005.11.28 20:10 Tester: order #1 is closed
Получаем те же яйца только сбоку.
Но ведь это полный тестовый бред. Брокеру по..ер с какой стороны ты открываешся. В онлайне такого нет, маржа взымается как положено марже, достаточно вывести инфу в коммент и порулить ордерами.
А вот в тестовом режиме все получается <нецензурное выражение> как :) см. пример выше.
не ругайтесь матом даже в завуалированной форме магического числа пи. мы вполне доступны к конструктивному диалогу
Ошибка, что выдает код осталась
Баланс 10 косых. Тестим эксперта на ауде один раз.
int start() { if (OrdersTotal() < 1) { OrderSend (Symbol(), OP_SELL, 7, Bid, 5, 0, 0, "xxx", 0, 0, Red); Print("=========================sell== AccountFreeMargin() = ", AccountFreeMargin()); return(0); } if (OrdersTotal() != 0 && OrdersTotal() < 2) {OrderSelect (0, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_SELL) { OrderSend (Symbol(), OP_BUY, 0.1, Ask, 5, 0, 0, "xxx", 0, 0, Blue); Print("=====================sell-buy== AccountFreeMargin() = ", AccountFreeMargin()); return(0); } } return(0); }
потом меняем лоты местами 0.1 на 7 в сел и 7 на 0.1 в бае и тестим еще раз, открываем лог.
"Tester: not enough money for buy 0.10"
При лоте 6 все нормально???????????????????????????????????????????????????????????????????
00:14:44 xxx AUDUSD,H1: loaded successfully 00:14:44 xxx started for testing 00:14:44 2004.04.22 09:00 xxx AUDUSD,H1: open #1 sell 0.10 AUDUSD at 0.7279 ok 00:14:44 2004.04.22 09:00 xxx AUDUSD,H1: =========================sell== AccountFreeMargin() = 9927.19 00:14:44 2004.04.22 10:00 xxx AUDUSD,H1: open #2 buy 6.00 AUDUSD at 0.7293 ok 00:14:44 2004.04.22 10:00 xxx AUDUSD,H1: =====================sell-buy== AccountFreeMargin() = 5698.31 00:14:44 2004.04.29 13:00 xxx stopped because of Stop Out 00:14:44 2004.04.29 13:00 Tester: order #2 is closed 00:14:44 2004.04.29 13:00 Tester: order #1 is closed 00:14:56 xxx AUDUSD,H1: loaded successfully 00:14:56 xxx started for testing 00:14:56 2004.04.22 09:00 xxx AUDUSD,H1: open #1 sell 0.10 AUDUSD at 0.7279 ok 00:14:56 2004.04.22 09:00 xxx AUDUSD,H1: =========================sell== AccountFreeMargin() = 9927.19 00:14:56 2004.04.22 10:00 xxx AUDUSD,H1: open #2 buy 7.00 AUDUSD at 0.7293 ok 00:14:56 2004.04.22 10:00 xxx AUDUSD,H1: =====================sell-buy== AccountFreeMargin() = 4969.21 00:14:56 2004.04.29 11:00 xxx stopped because of Stop Out 00:14:56 2004.04.29 11:00 Tester: order #2 is closed 00:14:56 2004.04.29 11:00 Tester: order #1 is closed 00:15:16 xxx AUDUSD,H1: loaded successfully 00:15:17 xxx started for testing 00:15:17 2004.04.22 09:00 xxx AUDUSD,H1: open #1 sell 6.00 AUDUSD at 0.7279 ok 00:15:17 2004.04.22 09:00 xxx AUDUSD,H1: =========================sell== AccountFreeMargin() = 5631.4 00:15:17 2004.04.22 10:00 xxx AUDUSD,H1: open #2 buy 0.10 AUDUSD at 0.7293 ok 00:15:17 2004.04.22 10:00 xxx AUDUSD,H1: =====================sell-buy== AccountFreeMargin() = 5698.31 00:15:17 2004.10.08 16:00 xxx stopped because of Stop Out 00:15:17 2004.10.08 16:00 Tester: order #2 is closed 00:15:17 2004.10.08 16:00 Tester: order #1 is closed 00:15:22 xxx AUDUSD,H1: loaded successfully 00:15:23 xxx started for testing 00:15:23 2004.04.22 09:00 xxx AUDUSD,H1: open #1 sell 7.00 AUDUSD at 0.7279 ok 00:15:23 2004.04.22 09:00 xxx AUDUSD,H1: =========================sell== AccountFreeMargin() = 4903.3 00:15:23 2004.04.22 10:00 Tester: not enough money for buy 0.10 AUDUSD at 0.7293 sl: 0.0000 tp: 0.0000 [2004.04.22 10:00] 00:15:23 2004.04.22 10:00 Tester: PrevBalance: 10000.00, PrevPL: -980.00, PrevEquity 9020.00, PrevMargin: 5103.70, NewMargin: 10134, FreeMargin: -1114.49 00:15:23 2004.04.22 10:00 xxx AUDUSD,H1: =====================sell-buy== AccountFreeMargin() = 4896.3 00:15:23 2004.04.22 11:00 xxx AUDUSD,H1: open #2 buy 0.10 AUDUSD at 0.7250 ok 00:15:23 2004.04.22 11:00 xxx AUDUSD,H1: =====================sell-buy== AccountFreeMargin() = 4998.88 00:15:23 2004.10.08 15:00 xxx stopped because of Stop Out 00:15:23 2004.10.08 15:00 Tester: order #2 is closed 00:15:23 2004.10.08 15:00 Tester: order #1 is closed
Уважаемые программисты MQ сделайте что-нибудь плз
Ошибка уже исправлена, на днях выйдет новый билд с исправлениями.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
получаем следующее: маржа везде одна и та же ?)
если поменять принт на комент, то все ок. Обратите внимание :)