Вопросы от "чайника" - страница 273

 
bagdarino:

стоимость  например 20 кредитов в месяц, что такое кредит и его стоимость. 

1 кредит = $1
 

Нужно пару закодировать в число. На МТ4 я выхожу из положения сначала инициализацией масива:

string CurrName [35]={"","","","","","","","","","","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

затем записываю в число пару, прогоняя через массив:

for(int i=0; i<=6; i++)
  {string letter = StringSubstr(Symb,i,1);
   for(int j=10; j<=35;j++)
    {if(letter == CurrName[j])
     {text1=StringConcatenate(text1, j);
      break;
      }}}

 

В МТ5 это не прокатывает, т.к. уже при попытки инициализации массива пишет ошибку:

'Z' - too many initializers

К сожалению, в этом месте в мох знаниях пробел.

Пожалуйста, подскажите возможные варианты решения задачи. Возможно, для МТ4 тоже есть более быстрый способ, буду рад узнать.


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - Документация по MQL5
 
Heroix:

Нужно пару закодировать в число. На МТ4 я выхожу из положения сначала инициализацией масива:

затем записываю в число пару, прогоняя через массив:

.........

В МТ5 это не прокатывает, т.к. уже при попытки инициализации массива пишет ошибку:

'Z' - too many initializers

Вапчепа 10+26 = 36.  А у тебя массив размером [35].  Буква 'Z' не влазит, о чём тебе компилятор и сообщает.

К сожалению, в этом месте в мох знаниях пробел.

Пожалуйста, подскажите возможные варианты решения задачи. Возможно, для МТ4 тоже есть более быстрый способ, буду рад узнать.

Насчёт быстрых способов.  Программирование похоже на стихи.  Кроме букв по большому счёту ничего знать не надо.  Остальное - творчество.  Есть задача - изобретаем решение.

А ты самым оскорбительным образом намекаешь здесь, что хороший программист отличается от плохого только толщиной вызубренного справочника....  :)  Даже помогать теперь неохота..

Фи!

 
MetaDriver:

Вапчепа 10+26 = 36.  А у тебя массив размером [35].  Буква 'Z' не влазит, о чём тебе компилятор и сообщает.

Насчёт быстрых способов.  Программирование похоже на стихи.  Кроме букв по большому счёту ничего знать не надо.  Остальное - творчество.  Есть задача - изобретаем решение.

А ты самым оскорбительным образом намекаешь здесь, что хороший программист отличается от плохого только толщиной вызубренного справочника....  :)  Даже помогать теперь неохота..

Фи!

Странно, но каким-то макаром на МТ4 код пашет. В цикле там да, j<=36 стоит в оригинале, это здесь "нарисовал" 35. 

Спасибо, дело было действительно в объявлении величины массива. Массивы объявляю таким образом 1 раз в 100 лет, образно... не суди строго.

У тебя на последних строках, домыслы, не более. Написал почти прямым текстом: я не знал что делать, в силу разных причин.

 
Heroix:

Странно, но каким-то макаром на МТ4 код пашет. В цикле там да, j<=36 стоит в оригинале, это здесь "нарисовал" 35. 

Спасибо, дело было действительно в объявлении величины массива. Массивы объявляю таким образом 1 раз в 100 лет, образно... не суди строго.

Ок.

У тебя на последних строках, домыслы, не более. Написал почти прямым текстом: я не знал что делать, в силу разных причин.

Ну ладно, ладно.  Будем щитать что у меня тоже эта... полнолуние, ага.  Сегодня модно оскорбляться по любому поводу.

;)

 
papaklass:

Кто в курсе, изменилась ли позиция МК по:

1. Введению обработки исключений (try {} catch() {}) . Была "категорически против".

Нет

2. Введение оператора foreach () {}.

? Ну это же бредовато. Просить не знаю что. Оператор предназначен специально для контейнеров, концепция которых вообще отсутствует в MQL.

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

 
papaklass:

Кто в курсе, изменилась ли позиция МК по:

1. Введению обработки исключений (try {} catch() {}) . Была "категорически против".

2. Введение оператора foreach () {}. 

PS: Не понятно, почему оператор выделился? 

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

чот я заработался...

скрипт:

#property script_show_inputs
//--- input parameters
input string   Symb0="EURUSD";
input double   Vol0=0.2;
input string   Symb1="GBPUSD";
input double   Vol1=0.3;
input string   Symb2="CADCHF";
input double   Vol2=0.4;

input bool     buy = true;

MqlTradeRequest TradeRequest[3];
MqlTradeResult  TradeResult[3];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  if(buy)
  {
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_BUY,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_BUY,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_BUY,Vol2,0,0.0,0.0,"CADCHF",0);
  Comment(PositionsTotal());
  }
  //Sleep(5000);
  else
  {
  
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_SELL,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_SELL,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_SELL,Vol2,0,0.0,0.0,"CADCHF",0);
  }
  
  Sleep(1000);
  _CloseAllPositions();
  }
//+------------------------------------------------------------------+

void _OrderSend(MqlTradeRequest &tradeRequest,
                MqlTradeResult  &tradeResult,
                string          symbol,
                ENUM_ORDER_TYPE type,
                double          volume,
                ulong           deviation,
                double          sl,
                double          tp,
                string          comment,
                int             magic)
{
  MqlTick price; SymbolInfoTick(symbol, price);
  
  tradeRequest.action   = TRADE_ACTION_DEAL;
  tradeRequest.symbol   = symbol;
  tradeRequest.type     = type;
  tradeRequest.volume   = volume;
  
  if(type==ORDER_TYPE_BUY)
    tradeRequest.price    = price.ask;
  if(type==ORDER_TYPE_SELL)
    tradeRequest.price    = price.bid;

  tradeRequest.deviation= deviation;
  tradeRequest.sl       = sl;
  tradeRequest.tp       = tp;
  tradeRequest.comment  = comment;
  tradeRequest.magic    = magic;
  
  OrderSendAsync(tradeRequest,tradeResult);
}


void _CloseAllPositions()
{
  Print("пробую закрытся");
  MqlTradeRequest tradeRequest;
  MqlTradeResult  tradeResult;
  MqlTick price;
  
  if(PositionsTotal()>0)
  {
    
    string symb="";
    
    for(int i=0;i<PositionsTotal();i++)
    {
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);
      
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
        tradeRequest.type =ORDER_TYPE_SELL;
        tradeRequest.price=price.bid;
      }
      else
      {
        tradeRequest.type =ORDER_TYPE_BUY;
        tradeRequest.price=price.ask;
      }
        tradeRequest.action   =TRADE_ACTION_DEAL;
        tradeRequest.symbol   = symb;
        tradeRequest.volume   = PositionGetDouble(POSITION_VOLUME);
        tradeRequest.deviation= 0;
        tradeRequest.sl       = 0.0;
        tradeRequest.tp       = 0.0;
        tradeRequest.comment  = "";
        tradeRequest.magic    = 0;
        
        OrderSend(tradeRequest,tradeResult);
    }
  }
}

выдаёт ошибки:

2013.08.23 10:28:54    Trades    '1421016': failed instant sell 1.60 CADCHF at 0.87721 [Invalid request]
2013.08.23 10:28:54    Trades    '1421016': failed instant sell 1.20 GBPUSD at 1.55836 [Invalid request]
2013.08.23 10:28:54    Trades    '1421016': failed instant sell 0.80 EURUSD at 1.33455 [Invalid request]


В чем проблема?

 

У меня всё открывается... Но не закрывается CADCHF. (Сервер - MetaQuotes Demo)

Поменял направление цикла for, теперь всё норм, всё открывается и всё закрывается.

 
i_logic:

У меня всё открывается... Но не закрывается CADCHF. (Сервер - MetaQuotes Demo)

Поменял направление цикла for, теперь всё норм, всё открывается и всё закрывается.

поменял на:

for(int i=PositionsTotal()-1;i>=0;i--)

так тоже закрывашка не работает.