Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 893

 
Ну вот, теперь и форум глючит: выдал пост не до конца, а правку не принимает...
 
tuner:
Можно например программно переключить таймфрейм, а потом при необходимости вернуть обратно.
Думаю что так не сбрасываются переменные.
 
tuner:
Или попробовать сохранить шаблон и потом загрузить его обратно
Отличная идея! Это возможно?
 

черт знает что...

написал три варианта советника , все компилируются без ошибок, а в тестере происходит непонятное - на М5 открывает одну позу и не закрывает, а на М1 на каждом тике открывает, а на следующем закрывает, не взирая на прописанные условия. 

 
abeiks:
Думаю что так не сбрасываются переменные.
Внешние переменные сбрасываются, ведь при смене таймфрейма происходит вызов функции OnInit()
 
abeiks:
Отличная идея! Это возможно?
Наверное... есть в MQl4 встроенные функции, связанные с сохранением и загрузкой шаблонов: ChartSaveTemplate, ChartApplyTemplate
 
rapid_minus:

черт знает что...

написал три варианта советника , все компилируются без ошибок, а в тестере происходит непонятное - на М5 открывает одну позу и не закрывает, а на М1 на каждом тике открывает, а на следующем закрывает, не взирая на прописанные условия. 

Вот скажи пожалуйста, если написать функцию умножения

double f(double a1, double a2)
{
 return(a1*a2+1);
}

Когда нибудь эта функция даст результат 2*2=4 иди нет?

Это я к тому, что никакой компилятор не проверяет логику кода. А в твоих советниках сплошные логические ошибки.

 
AlexeyVik:

Вот скажи пожалуйста, если написать функцию умножения

Когда нибудь эта функция даст результат 2*2=4 иди нет?

Это я к тому, что никакой компилятор не проверяет логику кода. А в твоих советниках сплошные логические ошибки.

Понял. не понял только одно - какие конкретно?

ЗЫ: и какая ошибка может вести себя по-разному на разныхТФ? 

ЗЗЫ: например, где здесь логическая ошибка:

void CritClose() 
{ 
  for (int ord = OrdersTotal()-1 ; ord >= 0; ord--) 
  { 
    if(!OrderSelect(ord,SELECT_BY_POS,MODE_TRADES))Comment("Не найдено открытых ордеров. Ошибка #",GetLastError());
     
    if (OrderSymbol() == Symbol()) 
    {if ((OrderMagicNumber()==10011 || OrderMagicNumber()==10033 || OrderMagicNumber()==10133)&&(((условие А) && (условие Б)&&(условие В)) || ((условие Г) && (условие Д)&&(условие Е))))      
          {        
          ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);          
            if (ord_close = false)          
               { Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError()); }            
               else  { Ord=0; }
          }
      else if (... и т.д....
 

Ау! Гуру! При распальцовке палец сломался?

 
rapid_minus:

Понял. не понял только одно - какие конкретно?

ЗЫ: и какая ошибка может вести себя по-разному на разныхТФ? 

ЗЗЫ: например, где здесь логическая ошибка:

 

Логическая ошибка здесь - неправильная структура программы. После коммента "Не найдено ... " код продолжит исполняться так же, как, если бы, было найдено. Владимир, ну почитайте, наконец, учебник - а? 
Причина обращения: