Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 803

 

Простенький вопрос.

Можно ли так выходить из цикла ? Или такая простота не бесплатна ?

while(1)
{
 .........
 if(............ ) return;
 ..........
}
 

Еще один вопрос.

Есть структура MqlTick в ней есть поле

long         time_msc;      // Время последнего обновления цен в миллисекундах

Насколько я понимаю, в time_msc хранится количество миллисекунд с 1970 года.

Есть функция CopyTick c параметром

 ulong            from=0,                // дата, начиная с которой запрашиваются тики

В справке указано, что это "Дата, начиная с которой запрашиваются тики. Указывается в миллисекундах с 01.01.1970"

Внимание вопрос.

Почему используются разные типы данных, в структуре MqlTick и в параметре функции CopyTick ? Ведь и там и там храниться время с 1970 года.

 
pivomoe:

Еще один вопрос.

Есть структура MqlTick в ней есть поле

long         time_msc;      // Время последнего обновления цен в миллисекундах

Насколько я понимаю, в time_msc хранится количество миллисекунд с 1970 года.

Есть функция CopyTick c параметром

 ulong            from=0,                // дата, начиная с которой запрашиваются тики

В справке указано, что это "Дата, начиная с которой запрашиваются тики. Указывается в миллисекундах с 01.01.1970"

Внимание вопрос.

Почему используются разные типы данных, в структуре MqlTick и в параметре функции CopyTick ? Ведь и там и там храниться время с 1970 года.

ulong - беззнаковый тип long

 
Я это знаю. Почему в одном случае используется знаковый тип, а в другом беззнаковый ? Случаи то ведь аналогичные.
 
pivomoe:

Простенький вопрос.

Можно ли так выходить из цикла ? Или такая простота не бесплатна ?

А что беспокоит? Завершение выполнения по условию. Только если надо просто выйти из цикла, то не return а break

 
Alexey Viktorov:

А что беспокоит? Завершение выполнения по условию. Только если надо просто выйти из цикла, то не return а break

Я не понимаю возникает расход памяти после таких выход из цикла returnom или нет ?
 
pivomoe:
Я не понимаю возникает расход памяти после таких выход из цикла returnom или нет ?

С чего бы? Не забивайте себе голову ерундой. Такой выход будет работать быстро.

 

Как можно отказаться от бесплатной утилиты (индикатор) скаченной через маркет в терминале. Удаление не помогает. Постоянно приходят сообщения об обновлении продукта, хотя он давно уже удален.

 

господа помогите разобраться в ситуации, есть советник в тестере все идет без ошибок и проблем, на демо счете тоже без проблем, а когда в маркете загружаю советник, Автотестер пишет:

 2016.04.01 00:00:12   failed instant sell 0.10 EURUSD at 1.13780 sl: 1.14030 tp: 1.13030 [Invalid volume]
 2016.04.01 00:00:24   failed instant sell 0.10 EURUSD at 1.13779 sl: 1.14029 tp: 1.13029 [Invalid volume]
 2016.04.01 00:00:59   failed instant sell 0.10 EURUSD at 1.13782 sl: 1.14032 tp: 1.13032 [Invalid volume]
 2016.04.01 00:01:00   failed instant sell 0.10 EURUSD at 1.13793 sl: 1.14043 tp: 1.13043 [Invalid volume]
 2016.04.01 00:01:08   failed instant sell 0.10 EURUSD at 1.13783 sl: 1.14033 tp: 1.13033 [Invalid volume]
 2016.04.01 00:01:17   failed instant sell 0.10 EURUSD at 1.13784 sl: 1.14034 tp: 1.13034 [Invalid volume]
 2016.04.01 00:01:25   failed instant sell 0.10 EURUSD at 1.13774 sl: 1.14024 tp: 1.13024 [Invalid volume]
 2016.04.01 00:01:34   failed instant sell 0.10 EURUSD at 1.13776 sl: 1.14026 tp: 1.13026 [Invalid volume]
 2016.04.01 00:01:59   failed instant sell 0.10 EURUSD at 1.13778 sl: 1.14028 tp: 1.13028 [Invalid volume]
 2016.04.01 00:02:00   failed instant sell 0.10 EURUSD at 1.13778 sl: 1.14028 tp: 1.13028 [Invalid volume]
 2016.04.01 00:02:08   failed instant sell 0.10 EURUSD at 1.13776 sl: 1.14026 tp: 1.13026 [Invalid volume]

код функции ниже:

OpenPos(NormalizeDouble(Lot,2), NormalizeDouble(Bid,_Digits), NormalizeDouble(_sl,_Digits),NormalizeDouble(_tp,_Digits),ORDER_TYPE_SELL,MagicSell,Comm);
void OpenPos(const double volume,const double price, const double stop, const double take, const ENUM_ORDER_TYPE o_type, const int magic,const string coment=NULL)
{
   MqlTradeRequest request={0};
   MqlTradeResult result={0};
   
   string t=(o_type==ORDER_TYPE_BUY)?"Buy":"Sell";
   
   ZeroMemory(request);
   ZeroMemory(result);
   
   request.action=TRADE_ACTION_DEAL;
   request.symbol=Symbol();
   request.volume=volume;
   request.type=o_type;
   request.magic=magic;
   request.price=price;
   request.sl=stop;
   request.tp=take;
   request.comment=coment;
   
   if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK))
      request.type_filling=ORDER_FILLING_FOK;
   else if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC))
      request.type_filling=ORDER_FILLING_IOC;
   else
      request.type_filling=ORDER_FILLING_RETURN;
   
   if(!OrderSend(request,result))
      PrintFormat("Can't open position %s error %i",t,GetLastError());
}
 
Andrii Djola:

господа помогите разобраться в ситуации, есть советник в тестере все идет без ошибок и проблем, на демо счете тоже без проблем, а когда в маркете загружаю советник, Автотестер пишет:

Распечатайте результат OrderCheck и полностью ее структуры. Так же с OrderSend.

Заведите демо-счета на десяти разных торговых серверах. И попробуйте там свой код. Чаще всего не учитывается какая-то особенность торгового сервера, которая воспроизводится при проверке в Маркете.+

И LastError не забывайте выводить. Все это вместе очень быстро позволит Вам разобраться в причинах ошибки.