профи подскажите пожалуйста, согласно справке по языку mql5 там нет функции iHighest как рассчитать максимальный хай за N период??? ..нужно написать функцию самостоятельно,..попробовал через copyHigh и fmax, но так лишь для определенного периода и не то конечно, помогите
Пытаюсь рассчитать своп, но не получается
Вот код который выводит свопы 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 лонг и это точно в долларах.
Грубо говоря так: