Вопрос по функции iTime

 
Привет всем! У меня такой вопрос. У меня индикатор состоит из одной строчки внутри функции start: [mql4] int start() { Comment(iTime(NULL, PERIOD_M1, 0)-iTime(NULL, PERIOD_M1,1),iTime(NULL, PERIOD_M1,1)-iTime(NULL, PERIOD_M1,2),iTime(NULL, PERIOD_M1,2)-iTime(NULL, PERIOD_M1,3),iTime(NULL, PERIOD_M1,3)-iTime(NULL, PERIOD_M1,4),iTime(NULL, PERIOD_M1,4)-iTime(NULL, PERIOD_M1, 5)); return(0); } [/mql4] На USDCAD выводится 480 120 60 60 60 На EURGBP выводится 420 60 420 60 60 На EURUSD выводится 60 60 60 60 60 Вопрос: почему так происходит? Ведь по идее везде должно выводиться 6060606060. История у меня вроде бы целиком подгружена - подгружается при открытии графика.
 
Это по Вашей идее. Почитайте:
https://www.mql5.com/ru/forum/49395
https://www.mql5.com/ru/forum/50266
 
Спасибо, сейчас посмотрю.
 
Тут же для "ярых любителей" линейной временной шкалы на минутках ;o) нужно кинуть ссылочку на эксперта, который эту мечту реализует:
'Графики без "дыр"'
 
[quote]Тут же для "ярых любителей" линейной временной шкалы на минутках ;o) нужно кинуть ссылочку на эксперта, который эту мечту реализует[/quote] Честно говоря, не очень понял, о чем вы. У меня пока таких идей вроде не возникало :) Я просто пытаюсь разобраться. Можете мне еще помочь немного? (Тут, я так понял, нельзя отправить личное сообщение,т.е. связи с админами нет) У меня старый браузер, поэтому тэги автоматически не вставляются, а помощи по тэгам я не нашел. Не мог бы кто-нибудь написать? (код mql, цитаты, ссылки). И еще у меня почему-то не получается создать еще одну тему. Поэтому я напишу ее сюда же: "Привет всем! Такой вопрос. По какой формуле metatrader 4 считает прибыль при торговле на кросс-курсе: (длинная позиция, N1 - объем сделки, V3 - валюта депозита) по такой (bid2(V1/V2)-ask1(V1/V2))*bid2(V1/V3)*N1*лот или по такой (1-ask1(V1/V2)/bid2(V1/V2))*bid2(V2/V3)*N1*лот Сразу хочу заметить, что это разные формулы, поскольку, если их приравнять, получим bid2(V1/V3)=bid2(V1/V2)*bid2(V2/V3), а это не так (можно проверить на опыте) Далее залог. Я открыл такую сделку: плечо 1:100 EURGBP sell 0,1 lot EURGBP 0,6810/0,6812 EURUSD 1,3282/1,3284 GBPUSD 1,9504/1,9507 Залог рассчитываю так: Залог=1,3282*0,1*(1/100)*100 000=132,82 А метатрейдер выдает 132,83 Аналогично для другой сделки: EURGBP sell 0,1 lot EURGBP 0,6805/0,6807 EURUSD 1,3280/1,3282 GBPUSD 1,9515/1, 9518 Залог рассчитываю так: Залог=1,3280*0,1*(1/100)*100 000=132,80 А метатрейдер выдает 132,81 Все время на 1 цент больше - почему так происходит?"
 
new_year_pine:
Честно говоря, не очень понял, о чем вы. У меня пока таких идей вроде не возникало :) Я просто пытаюсь разобраться. Можете мне еще помочь немного?
Да в общем то следующим традиционным вопросом после понимания того факта что МТ4 имеет минутные бары не на каждой минуте следует "предложение по улучшению МТ4 посредством введения линейной временной шкалы путём дорисовывания "пропущенных" баров" ;o). Вы по ссылкам, приведённым Rosh, уже наверное смогли ознакомиться с отстаиванием таких вот предложений. Вот я сразу во избежании возможных длительных дискуссий привёл ссылку на реализацию такого пожелания, если оно бы у вас возникло в будущем. А оно возникает между прочим у ВСЕХ хотя бы разок.

По работе с форумом может быть вот здесь что-то есть?
'Выпущена бета-версия нового редактора для сайта'

По расчётам можно глянуть вот здесь:
'MarginCalculate'
'Азбука торговли валютами'
 
Большое спасибо за ссылки! Я думаю, мне эта инфа очень пригодится, особенно учитывая, что там используется очень много недокументированных функций. Однако, вопрос все-таки остался. По поводу залога (или маржи) - я рассчитывал именно так, как там написано (по этим ссылкам). Однако не понятно, откуда-таки берется этот цент. Я понимаю, что, возможно, я не по адресу обращаюсь:все-таки этот форум по mql , а исходников MT4 здесь скорее всего никто не видел. Но просто спросить больше негде. Хотелось бы знать, как именно в MT все это рассчитывается. Кстати, нашел оплошность в функции по расчету маржи:эта функция работает только для длинных позиций. Для коротких ее надо дописать. По поводу плавающей прибыли. Сейчас я попробовал сделать такой эксперимент, рассчитать стоимость пункта 3мя разными способами: double a=MarketInfo("EURGBP", MODE_TICKVALUE); double b=MarketInfo("EURGBP", MODE_LOTSIZE)*MarketInfo("EURGBP", MODE_TICKSIZE)*MarketInfo("EURUSD", MODE_BID)/MarketInfo("EURGBP", MODE_BID); double c=MarketInfo("EURGBP", MODE_LOTSIZE)*MarketInfo("EURGBP", MODE_TICKSIZE)*MarketInfo("GBPUSD", MODE_BID); Получилось: a=19.62 (системное значение) b=19.6189 c=19.615 Вот я теперь не знаю, a - это округленное b или c? Можно ли точность как-нибудь увеличить? Дело в том, что разница между прибылями, посчитанными разными способами , зависит от... короче вот формула: (bid2(V1/V2)-ask1(V1/V2))*(bid2(V1/V3)/bid2(V1/V2)-bid2(V2/V3))*N1*лот Пусть V1 - EUR V2 - GBP V3 - USD bid2(V1/V2) = 0.6770 bid2(V1/V3) = 1.3282 bid2(V2/V3) = 1.9615 Пусть цена выросла на 100 пунктов А объем сделки - 8 лот лот = 100 000 Тогда разница будет 0,01*(1,3282/0,677-1,9615)*8*100000=$3,13 Как видно, для больших позиций разница ощутима. Округления здесь уже недопустимы,т. к. точность все равно как минимум до цента. PS Кстати, информации по тэгам я так и не нашел. solandr, если вас не затруднит, не могли бы вы вручную их здесь прописать? :)
 
new_year_pine:
Кстати, информации по тэгам я так и не нашел. solandr, если вас не затруднит, не могли бы вы вручную их здесь прописать? :)

Прежде чем вставлять код нажмите кнопку MQL в редакторе сообщений. В появившееся окошко вставьте код MQL и нажмите кнопку "Вставить". Уже написанные вами сообщения вы можете отредактировать нажав ссылку "правка".