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

 
Dimka-novitsek: Всё же ругается.. Допустим так  action=ORDER_TYPE_SELL,  ругается так 'action' - undeclared identifier.  А так  ENUM_ORDER_TYPE action=ORDER_TYPE_SELL,  ругается эдак 'action' - unexpected token. И так всюду..

Значит, "что такое функция и что такое вызов функции" так и не прочтено? :)

OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,i,last_tick.bid,margin); //параметры функции вставляются примерно так :)
 

Щас отвечу..   

 

Это не я создаю функцию.. Щас найду,откуда она взята! Извините, если я вас вёл в заблуждение, или же это я ни понял. Щас... 

А, вот.

OrderCalcMargin

Вычисляет размер маржи, необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении без учета текущих отложенных ордеров и открытых позиций. Позволяет оценить размер маржи для планируемой торговой операции. Значение возвращается в валюте счета.
bool OrderCalcMargin(
ENUM_ORDER_TYPE action, // тип ордера
string symbol, // имя символа
double volume, // объем
double price, // цена открытия
double& margin // переменная для получения значения маржи
); 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Dimka-novitsek:

Всё же ругается.. Допустим так  action=ORDER_TYPE_SELL,  ругается так 'action' - undeclared identifier.  А так  ENUM_ORDER_TYPE action=ORDER_TYPE_SELL,  ругается эдак 'action' - unexpected token.

И так всюду..   И по-английски...

 

Дмитрий!

Еще раз указываю вам на разделы функция и вызов функции!


определение функции:

int function (int a, int b)
{
   return (a+b);
}

сначала идет ее заголовок.

В нем есть тип возвращаемого значения (int), название фунции (function) и ее входные параметры с их типами!


вызов функции:

int c = 1;
int d = 5;
int summa;
summa = function(c, d);   // вызывается функция, фактические параметры переменные c и d
summa = function(1, 3);   // вызывается функция, фактические параметры числа 1 и 3
summa = function(1, d);   // вызывается функция, фактические параметры число 1 и переменная d

тут сначала вы определили какие-то переменные (или не определяли)

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

 
А, щас я обьявлю переменные выше функции!
 
Ух!! 0 error(s), 0 warning(s) 1 1  ,Спасибо!!
 
Помогите пожалуйста,до програмиста мне далеко, так что просто подскажите что мне едлать,есть советник mql5 как мне его переделать под mql4,есл не сложно расскажите!!!! или в личку
 
fokeevis:
Помогите пожалуйста,до програмиста мне далеко, так что просто подскажите что мне едлать,есть советник mql5 как мне его переделать под mql4,есл не сложно расскажите!!!! или в личку
Сложно и очень сложно, особенно непрограммисту, поэтому правильно сделали что обратились в Jobs.
 
Я по просьбе человека разработал функцию, она должна выглядеть примерно так.
double GetLot(  double Risk,  ENUM_ORDER_TYPE  action ,  string  symbol ,   double  price ,  double   Lot  ){ 
                     double  volume=1,margin=1; 
                       if(!use_percent_of_deposit) return  (Lot) ; MqlTick last_tick;SymbolInfoTick(Symbol(),last_tick);
                                           switch(action)
     {
      case ORDER_TYPE_BUY: price=last_tick.asc ;
      case ORDER_TYPE_SELL: price=last_tick.bid ;
      case ORDER_TYPE_BUY_LIMIT: price=price;
      case ORDER_TYPE_SELL_LIMIT:  price=price;
      case ORDER_TYPE_BUY_STOP:  price=price;
      case ORDER_TYPE_SELL_STOP:  price=price;
      case ORDER_TYPE_BUY_STOP_LIMIT:  price=price;
      case ORDER_TYPE_SELL_STOP_LIMIT:  price=price;}
                     OrderCalcMargin(
         action,           // тип ордера
                  symbol,           // имя символа
                  volume,           // объем
                  price,            // цена открытия
                 margin            // переменная для получения значения маржи
                   ); 
         
         double  Koeffitsyenta=AccountInfoDouble(ACCOUNT_BALANCE)/ margin ;
         Lot= (Koeffitsyenta*Risk)/100;
         double Pt=1/SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); 
          Lot= Lot*Pt; Print( "Lot*Pt  " ,  Lot   );
         Lot=NormalizeDouble(Lot,0); 
          Lot= Lot/Pt;
         double MAX=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
           double MIN=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
          if (Lot>MAX) Lot=MAX;if (Lot<MIN) Lot=MIN;
          return(Lot);
                 
                   }
Еще не компилировал, в работе не проверял.Писал в нотэпаде.
 
Dimka-novitsek:
Я по просьбе человека разработал функцию, она должна выглядеть примерно так.Еще не компилировал, в работе не проверял.Писал в нотэпаде. 
 И в чём вопрос?
 

Нельзя ли сделать на сервере MetaQuotes-Demo спред постоянным, а то отладка, настройка превращаются в кошмар, приходится учитывать спред, который постоянно меняется и искажает картину????????

Плавающий спред - лишняя головная боль.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
Причина обращения: