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

 
Подскажите, что нужно писать в коде, чтобы ордера не открывались на каждом тике?
 
int OnInit()
  {
   double LotSize(string symbol,datetime tbar)
     {
      double size;
      string BQ,currency=AccountCurrency();
      switch(MarketInfo(symbol,MODE_PROFITCALCMODE))
        {
         case 0:
           {
            int sbar=iBarShift(symbol,0,tbar);
            size=MarketInfo(symbol,MODE_LOTSIZE);
            if(StringSubstr(symbol,3,3)=="USD") break;
            if(StringSubstr(symbol,0,3)=="USD") size=size/iClose(symbol,0,sbar);
            else
              {
               BQ=StringSubstr(symbol,0,3)+"USD";
               if(iClose(BQ,0,0)==0) BQ="USD"+StringSubstr(symbol,0,3);
               if(iClose(BQ,0,0)==0) break;
               int BQbar=iBarShift(BQ,0,tbar);
               if(StringSubstr(BQ,0,3)=="USD") size=size/iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
               else size=size*iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
              }
           }
         break;
         case 1: size=MarketInfo(symbol,MODE_LOTSIZE); break;
         case 2: size=MarketInfo(symbol,MODE_TICKVALUE)/MarketInfo(symbol,MODE_TICKSIZE);
        }
      if(currency!="USD")
        {
         BQ=currency+"USD";
         if(iClose(BQ,0,0)==0)
           {
            BQ="USD"+currency;
            size*=iClose(BQ,0,iBarShift(BQ,0,tbar));
           }
         else size/=iClose(BQ,0,iBarShift(BQ,0,tbar));
        }
      return(size);
     }
При компилировании две ошибки:  никак не соображу что не так и как исправить. Подскажите плиз.
 
Alexandr Saprykin:
При компилировании две ошибки:  никак не соображу что не так и как исправить. Подскажите плиз.
Телепаты в отпуске, а у Вас нет ни шапки, ни расширения в шапке коде. Поди знай - что это и на каком языке написано :)
 
Karputov Vladimir:
Телепаты в отпуске, а у Вас нет ни шапки, ни расширения в шапке коде. Поди знай - что это и на каком языке написано :)

Для не телепатов)))

//+------------------------------------------------------------------+
//|                                                   Break Even.mq4 |
//|                                                 Copyright 2016,  |
//|                                         /ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, "
#property link      "/ru"
#property version   "1.00"
#property strict
#property indicator_chart_window   //отображение внутри основного окна
#property indicator_buffers 1
#property indicator_plots   1
//--- plot BreakEven
#property indicator_label1  "BreakEven"     //название индикатора
#property indicator_type1   DRAW_LINE      //рисовать линией
#property indicator_color1  clrGold       // цвет индикатора
#property indicator_style1  STYLE_SOLID  //стиль индикатора
#property indicator_width1  1
//--- indicator buffers
double         BreakEvenBuffer[];
//+------------------------------------------------------------------+
//| Рассчитываем точку безубыточности                                |
//+------------------------------------------------------------------+
int OnInit()
  {
   double LotSize(string symbol,datetime tbar)
     {
      double size;
      string BQ,currency=AccountCurrency();
      switch(MarketInfo(symbol,MODE_PROFITCALCMODE))
        {
         case 0:
           {
            int sbar=iBarShift(symbol,0,tbar);
            size=MarketInfo(symbol,MODE_LOTSIZE);
            if(StringSubstr(symbol,3,3)=="USD") break;
            if(StringSubstr(symbol,0,3)=="USD") size=size/iClose(symbol,0,sbar);
            else
              {
               BQ=StringSubstr(symbol,0,3)+"USD";
               if(iClose(BQ,0,0)==0) BQ="USD"+StringSubstr(symbol,0,3);
               if(iClose(BQ,0,0)==0) break;
               int BQbar=iBarShift(BQ,0,tbar);
               if(StringSubstr(BQ,0,3)=="USD") size=size/iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
               else size=size*iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
              }
           }
         break;
         case 1: size=MarketInfo(symbol,MODE_LOTSIZE); break;
         case 2: size=MarketInfo(symbol,MODE_TICKVALUE)/MarketInfo(symbol,MODE_TICKSIZE);
        }
      if(currency!="USD")
        {
         BQ=currency+"USD";
         if(iClose(BQ,0,0)==0)
           {
            BQ="USD"+currency;
            size*=iClose(BQ,0,iBarShift(BQ,0,tbar));
           }
         else size/=iClose(BQ,0,iBarShift(BQ,0,tbar));
        }
      return(size);
     }
//--- indicator buffers mapping
   SetIndexBuffer(0,BreakEvenBuffer);

//---
   return(INIT_SUCCEEDED);
  }
 
Alexandr Saprykin:

Для не телепатов)))

Функцию LotSize вынесите ЗА OnInit().
 
edutak:

Подскажите ошибку в логике, почему противоположные ордера не открываются?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих

Karputov Vladimir, 2016.04.16 13:04

Телепаты в отпуске, а у Вас нет ни шапки, ни расширения в шапке коде. Поди знай - что это и на каком языке написано :)

 
Karputov Vladimir:

Надо описать алгоритм?
 
edutak:
Надо описать алгоритм?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих

Karputov Vladimir, 2016.04.16 13:04

Телепаты в отпуске, а у Вас нет ни шапки, ни расширения в шапке коде. Поди знай - что это и на каком языке написано :)

 
savinkins:
Логин-пароль от терминала у меня стоят по умолчанию. Имя сервера в списке выбора нет, я его копирую. Сейчас у меня вообще нет ни одного агента в списке сети, хотя баланс показывает.
 
savinkins:

Для обновления терминала нужно подключиться к торговому серверу MetaQuotes-Demo.