MODE_TICKVALUE тебе в помощь.
считать можно только выведенную прибыль, всё остеальное - ванильные мечты ;)
Я считаю в USD, потом можно пересчитать в другую валюту депозита.
Немного докоментировал свои наработки. Думаю, понятно, и сможете сделать рабочий код. Для покупки proit умножаете на число лотов, для продажи умножаете на отрицательное число лотов сделки.
// Исходные данные: // Pair - символ инструмента, 6 символов FirstSymbol = StringSubstr( Pair, 0, 3); // первый SecondSymbol = StringSubstr( Pair, 3, 3); // и второй символы валютной пары // размер лота 100000 FirstSymbol валюты // для одного лота результат выражается формулой (без свопов и комиссий) // profit = 1000 * r * ( ЦенаЗакрытия - ЦенаОткрытия ) // r пропорционально значению MarketInfo с идентификатором запроса MODE_TICKVALUE // по некой валютной паре. Но, я предпочитаю считать сам, поскольку MarketInfo // не дает значения TickValue на истории // существует 3 варианта расчета r // SymbolList - список валютных пар string SymbolList = "EURUSD GBPUSD AUDUSD EURGBP USDJPY EURJPY GBPJPY AUDJPY CHFJPY CADJPY EURAUD GBPAUD USDCHF EURCHF GBPCHF AUDCHF CADCHF USDCAD EURCAD GBPCAD AUDCAD NZDUSD EURNZD GBPNZD NZDJPY AUDNZD NZDCHF NZDCAD "; // variant = 1 // EURUSD, GBPUSD, AUDUSD, NZDUSD if ( SecondSymbol == "USD" ) variant = 1; else { // variant = 2 // USDJPY, USDCHF, USDCAD, EURJPY, GBPJPY, AUDJPY, EURCHF, GBPCHF, // AUDCHF, EURCAD, GBPCAD, AUDCAD, NZDJPY, NZDCHF, NZDCAD if ( StringFind( SymbolList, "USD" + SecondSymbol ) >= 0 ) variant = 2; else // StringFind( SymbolList, SecondSymbol + "USD" ) >= 0 { // variant = 3; // EURGBP, EURAUD, GBPAUD, EURNZD, AUDNZD, GBPNZD variant = 3; } } // теперь считаем r // функция LastKnownPrice( string symbol, datetime ctime ) // возвращает последнее известное значение Bid по инструменту symbol, // на момент времени ctime r = 1.0; switch( variant ) { // в первом варианте r константа и мы можем точно вычислить результат в будущем case 1: break; // во втором и третьем варианте мы можем точно вычислить результат, если будущая // цена известна. Т.е., если мы работаем на истории, всегда можем сосчитать результат // с точностью до свопов // Поэтому, если нам нужно оценить будущий результат, мы должны будем взять последнюю // известную цену на нулевом баре case 2: r = LastKnownPrice( "USD" + SecondSymbol, ctime); r = 1.0 / r; break; case 3: r = LastKnownPrice( SecondSymbol + "USD", ctime); break; default: break; }

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть цена открытия, TP и вся информация о символе. Хотелось бы подсчитать ожидаемую прибыль в валюте депозита (если ордер закроется по TP). Есть формула?
Заранее спасибо.