[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 559

 
Еще раз спасибо, извините!
 

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

Скажем: 5, 10, 20, 40, 60 и т.д...

Если это нельзя прописать, то как это лучше реализовать? через сравнение с ценой и округлением? или еще как-то?


Заранее Спасибо!

 
TarasBY:

Может так заработает:


Попробуй это
//|                                                         0000.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//+------------------------------------------------------------------+
#include     <stdlib.mqh>                 // Библиотека кодов ошибок
string ErrorDescription(int error_code);
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
   {
   double ld_Price;int N=23,Ticket=-1;
   for (int i=OrdersTotal()-1;i>=0;i--)
      {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
      if(OrderSymbol()!=Symbol())continue; 
      if(OrderType()>=2)
         {
         if(OrderDelete(OrderTicket())==true)continue;
         else Print("Error: ",ErrorDescription(GetLastError()));
      }
      if(OrderType()==OP_SELL)ld_Price=Ask;
      if(OrderType()==OP_BUY)ld_Price=Bid;
      if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ld_Price,Digits),6,Red)==true)continue;
      else Print("Error: ",ErrorDescription(GetLastError()));
   }
   for(i=0;i<N;i++)
      {
      if(!IsTradeAllowed()){Sleep(2000);continue;}
      RefreshRates();
      Ticket=OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),6,0.0,0.0,"Skript",98600,0,Blue);
      if(Ticket>=0)break;
      else Print("Error: ",ErrorDescription(GetLastError()));Sleep(2000);
    }
    if(Ticket<0)Alert("Не удалось открыть ордер за ",N," попыток","Error: ",ErrorDescription(GetLastError()),". Скрипт завершил работу.");
    return (0);
}
//+------------------------------------------------------------------+
 
Chiripaha:

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

Скажем: 5, 10, 20, 40, 60 и т.д...

Если это нельзя прописать, то как это лучше реализовать? через сравнение с ценой и округлением? или еще как-то?


Заранее Спасибо!


Объявляем внешнюю переменную типа string и инициализируем строкой с инструкцией и вашим набором параметров. Ее будет видно в окне свойств . 
 
rigonich:

Объявляем внешнюю переменную типа string и инициализируем строкой с инструкцией и вашим набором параметров. Ее будет видно в окне свойств . 

: ))) Что такое строка с инструкцией?  Если можно, пальцем показать. А лучше пример к-нить написать. Я по аналогии сделаю.

Потом - если она строковая, то эти данные будут восприниматься как данные? или они будут как текст?

Или если даже текстовые значения подставить при расчетах, то они воспримутся как численные, если будут из цифр?

 
Chiripaha:

: ))) Что такое строка с инструкцией?  Если можно, пальцем показать. А лучше пример к-нить написать. Я по аналогии сделаю.

Потом - если она строковая, то эти данные будут восприниматься как данные? или они будут как текст?

Или если даже текстовые значения подставить при расчетах, то они воспримутся как численные, если будут из цифр?


Просто перед вашей переменной вставяете
extern string a="Переменная x может принимать значения: 5;10;и.т.д"
и эта строка отобразится в окне свойств, которое появляется при прикреплении эксперта,индикатора или скрипта(если у него в свойствах прописано #property show_inputs ) к графику.
 
TarasBY:

а если так?: 


Спасибо, все работает!  
 
rigonich:
Просто перед вашей переменной вставяете
и эта строка отобразится в окне свойств, которое появляется при прикреплении эксперта,индикатора или скрипта(если у него в свойствах прописано #property show_inputs ) к графику.

Т.е., если я правильно Вас понял, то Вы предлагаете просто прокомментировать, чтобы пользователь выбирал те значения, которые будут перечислены в данном комментарии?

А строкой ниже указать саму переменную, в которой пользователь и будет указывать нужное значение. Так?

 
Chiripaha:

Т.е., если я правильно Вас понял, то Вы предлагаете просто прокомментировать, чтобы пользователь выбирал те значения, которые будут перечислены в данном комментарии?

А строкой ниже указать саму переменную, в которой пользователь и будет указывать нужное значение. Так?



Да, насколько я понял вы спрашивали именно об этом.
 
rigonich:

Да, насколько я понял вы спрашивали именно об этом.

Не совсем...

Я хотел сделать так, чтобы было что-то типа менюшки. Так же как в при выборе переменной bool либо false, либо true.
Чтобы пользователь мог нажать только на четко определенные значения параметра. Чтобы он "ошибочно" не вбил ненужные, т.к. в этом случае советник будет работать некорректно.

Пользователь - это даже я сам. Т.к. можно забыть какие там параметры для конкретной переменной должны быть.
Причина обращения: