[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 188
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пытаюсь рассчитать своп, но не получается
Вот код который выводит свопы 20 последних сделок.
for ( int j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {
OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPLONG)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
if(OrderType()==OP_SELL)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPSHORT)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
}
Почему то отличие кратно именно 10.
То есть расчетный своп в 10 раз превышает реальный.
Сам уже не могу догадаться в чем тут дело.
MarketInfo(OrderSymbol(),MODE_SWAPTYPE) возвращает единицу, то есть
«Метод вычисления свопов 1 - в базовой валюте инструмента;»
Я беру значения свопа в пунктах, которое возвращает
MarketInfo(OrderSymbol(),MODE_SWAPLONG)
Умножаю это значение на Bid,
*MarketInfo(OrderSymbol(),MODE_BID)
затем на размер лота
*OrderLots()
и умножаю на ценность одного пункта в валюте депозита с одного лота
*MarketInfo(OrderSymbol(),MODE_TICKVALUE)
Возвращаются такие значения:
EURGBP ЛОТ = 0.46000000 РЕАЛЬНЫЙ СВОП = -1.31000000 РАСЧЕТНЫЙ СВОП -13.05244609
Подскажите, пожалуйста, как это делается))
double MA1,MA2;
MA1=iMA(....,0);
MA2=iMA(....,3);
if (MA1-MA2>Point)//МА смотрит вверх
if (MA1-MA2,-Point)//МА смотрит вниз
Умножаю это значение на Bid,
*MarketInfo(OrderSymbol(),MODE_BID)
А это зачем?
Подскажите, пожалуйста, как это делается))
double MA1,MA2;
MA1=iMA(....,0);
MA2=iMA(....,3);
if (MA1-MA2>Point)//МА смотрит вверх
if (MA1-MA2,-Point)//МА смотрит вниз
Большое спасибо))
А это зачем?
Ни где не нашел описания того значения, что возвращает
MarketInfo(OrderSymbol(),MODE_SWAPLONG)
Сделал вывод, что это размер пунктов именно EUR в котировке EURGBP , поэтому, чтобы получить сколько это в GBP, я умножил на BID
Дело в том, что
MarketInfo(OrderSymbol(),MODE_TICKVALUE)
Возвращает стоимость пункта на один лот именно для GBP в котировке EURGBP, а не для EUR.
Ни где не нашел описания того значения, что возвращает
Мне почему-то все время казалось, что все расчеты идут в валюте депозита.
Функция MarketInfo(OrderSymbol(),MODE_SWAPSHORT)
Возвращает целое значение -2, так же как и для всех других ордеров. Следовательно, предполагаю, что это значение пунктов.
Предположим что это значение свопа выраженного в пунктах нашей валюты депозита.
Валюта депозита = USD
Умножаем
MarketInfo(OrderSymbol(),MODE_SWAPSHORT)
На количество лотов
*OrderLots()
Также умножаем на стоимость одного пункта валюты депозита на одном лоте
*10
Получаем
СВОП = -9.20000000
Вместо
РЕАЛЬНЫЙ СВОП = -1.31000000
Функция MarketInfo(OrderSymbol(),MODE_SWAPSHORT)
Возвращает целое значение -2, так же как и для всех других ордеров. Следовательно, предполагаю, что это значение пунктов.
У меня для EURGBP возвращает - 0 (это Альпари) шорт и -0.68 лонг и это точно в долларах.
Грубо говоря так: