Если добавить к каждой строке комментарии, то интереснее будет:
inputint MetaQuotes1 = 30; // Описание входного параметра 1 inputbool MetaQuotes2 = true; // Описание входного параметра 2 inputdouble MetaQuotes3 = 20.3; // Описание входного параметра 3 inputstring MetaQuotes4 = "Corp"; // Описание входного параметра 4
а если сделаете ещё перечисление, и будете его использовать вместо bool, то ещё интереснее будет:
enum enumYN { enYes = 1, // Да enNo = 0, // Нет };
inputint MetaQuotes1 = 30; // Описание входного параметра 1 input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2 inputdouble MetaQuotes3 = 20.3; // Описание входного параметра 3 inputstring MetaQuotes4 = "Corp"; // Описание входного параметра 4
а sinput позволяет исключить переменную из списка переменных для оптимизации. Например, переменная MetaQuotes4 в данном контексте не нужна для оптимизации, и её можно исключить:
enum enumYN { enYes = 1, // Да enNo = 0, // Нет };
inputint MetaQuotes1 = 30; // Описание входного параметра 1 input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2 inputdouble MetaQuotes3 = 20.3; // Описание входного параметра 3 sinputstring MetaQuotes4 = "Corp"; // Описание входного параметра 4
С этим всё в порядке, требовалось добавить только текст, что бы было понятно при оптимизации от и до какого параметра и шаг.
wishmast: для чего так пишут, что присваивают? int tik=OrderSend
Потому что
Возвращаемое значение
Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
соответственно дальше от значения этой переменной будет зависит дальнейшие действия. Например
double ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),digits); price=NormalizePrice(_Symbol,ask+Distance*_Point); t=OrderSend(_Symbol,OP_BUYSTOP,volume,price,Slippage,0,0,CommentOrder,Magic,0,clrBlue); if(t<0) { error=GetLastError(); rezult=StringConcatenate(_Symbol,": error open order ",DoubleToString(volume,2)," ",TypeToStr(type)," №- ",error," ",ErrorDescription(error)); Print(rezult); } else { tiket=t; rezult=StringConcatenate(_Symbol,": open order ",t," ",DoubleToString(volume,2)," ",TypeToStr(type)); Print(rezult); SendNotification(rezult); }
а sinput позволяет исключить переменную из списка переменных для оптимизации. Например, переменная MetaQuotes4 в данном контексте не нужна для оптимизации, и её можно исключить:
sinputstring MetaQuotes4 = "Corp"; // Описание входного параметра 4
Неудачный пример, строчные параметры и так в оптимизации никак не будут участвовать.
Artyom Trishkin: Я не подбирал по удачности/не удачности. Просто показал на примере конкретного вышенаписанного кода. Пример был понятен. Этого и добивался.
Если добавить к каждой строке комментарии, то интереснее будет:
input bool MetaQuotes2 = true; // Описание входного параметра 2
input double MetaQuotes3 = 20.3; // Описание входного параметра 3
input string MetaQuotes4 = "Corp"; // Описание входного параметра 4
а если сделаете ещё перечисление, и будете его использовать вместо bool, то ещё интереснее будет:
{
enYes = 1, // Да
enNo = 0, // Нет
};
input int MetaQuotes1 = 30; // Описание входного параметра 1
input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2
input double MetaQuotes3 = 20.3; // Описание входного параметра 3
input string MetaQuotes4 = "Corp"; // Описание входного параметра 4
а sinput позволяет исключить переменную из списка переменных для оптимизации. Например, переменная MetaQuotes4 в данном контексте не нужна для оптимизации, и её можно исключить:
{
enYes = 1, // Да
enNo = 0, // Нет
};
input int MetaQuotes1 = 30; // Описание входного параметра 1
input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2
input double MetaQuotes3 = 20.3; // Описание входного параметра 3
sinput string MetaQuotes4 = "Corp"; // Описание входного параметра 4
С этим всё в порядке, требовалось добавить только текст, что бы было понятно при оптимизации от и до какого параметра и шаг.
С этим всё в порядке, требовалось добавить только текст, что бы было понятно при оптимизации от и до какого параметра и шаг.
для чего так пишут, что присваивают? int tik=OrderSend
Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
соответственно дальше от значения этой переменной будет зависит дальнейшие действия. Например
price=NormalizePrice(_Symbol,ask+Distance*_Point);
t=OrderSend(_Symbol,OP_BUYSTOP,volume,price,Slippage,0,0,CommentOrder,Magic,0,clrBlue);
if(t<0)
{
error=GetLastError();
rezult=StringConcatenate(_Symbol,": error open order ",DoubleToString(volume,2)," ",TypeToStr(type)," №- ",error," ",ErrorDescription(error));
Print(rezult);
}
else
{
tiket=t;
rezult=StringConcatenate(_Symbol,": open order ",t," ",DoubleToString(volume,2)," ",TypeToStr(type));
Print(rezult);
SendNotification(rezult);
}
....
а sinput позволяет исключить переменную из списка переменных для оптимизации. Например, переменная MetaQuotes4 в данном контексте не нужна для оптимизации, и её можно исключить:
sinput string MetaQuotes4 = "Corp"; // Описание входного параметра 4
Неудачный пример, строчные параметры и так в оптимизации никак не будут участвовать.
Я не подбирал по удачности/не удачности. Просто показал на примере конкретного вышенаписанного кода. Пример был понятен. Этого и добивался.
Совершенно верно можно и так
Совершенно верно можно и так
Есть такая конструкция.
double iLowest(string symbol, ENUM_TIMEFRAMES timeframe, int ne)
Вопрос: какой тип имеет ENUM_TIMEFRAMES , на int ругается
Есть такая конструкция.
double iLowest(string symbol, ENUM_TIMEFRAMES timeframe, int ne)
Вопрос: какой тип имеет ENUM_TIMEFRAMES , на int ругается