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

 
forward666:

Спасибо!Если сможете подсказать что-нить,то будет супер!

А про стилизатор сейчас почитаю подробнее 

Попробуйте вместо:

bool first;

написать:

bool first=true;
 
Уважаемые господа! Подскажите пожалуйста "чайнику" как (точнее куда) скачать бесплатный советник из маркета? Куда устанавливать обычные советники знаю..С маркета никак не получается - какое приложение использовать?
 
Sokrat:

Уважаемые господа! Подскажите пожалуйста "чайнику" как (точнее куда) скачать бесплатный советник из маркета? Куда устанавливать обычные советники знаю..С маркета никак не получается - какое приложение использовать?
Проще всего это сделать из терминала, в панели инструменты есть вкладка маркет
 
Sokrat:

Уважаемые господа! Подскажите пожалуйста "чайнику" как (точнее куда) скачать бесплатный советник из маркета? Куда устанавливать обычные советники знаю..С маркета никак не получается - какое приложение использовать?



 

forward666:У меня при запуске робота сразу открывается позиция,которая явно не отражает реалии графика,соответственно она уходит в глубокий минус. Как сделать,что при запуске робота эта позиция не открывалась сразу?где в коде нужно что-то добавить?

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

input int Shift=10; /*Shift*/ // Величина скачка цены для открытия позиции
input int Limit=100; /*Limit*/ // Величина убытка в пунктах для закрытия позиции
input int Prof=10;
input int MA_Period=50; // Период Moving Average 
int maHandle; // хэндл индикатора Moving Average
double maVal[3]; // статический массив для хранения значений индикатора Moving Average
bool first;
double a,b,Lots;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
   maHandle=iMA(NULL,0,MA_Period,2,MODE_SMA,PRICE_CLOSE);
   if(maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   first=false;
   if(!Sym.Name(_Symbol))
     {
      Alert("Ошибка инициализации CSymbolInfo, поворите попытку");
      return(-1);
     }
   Print("Инициализация эксперта выполнена");
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CopyBuffer(maHandle,0,0,3,maVal)<0)
     {
      Alert("Ошибка копирования буферов индикаторов - номер ошибки:",GetLastError());
      return;
     }
   if(!Sym.RefreshRates()) return;
   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }
   Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)*0.66/1000/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
   Lots=MathMin(999,MathMax(1,Lots));
   Lots=NormalizeDouble(Lots,2);
   if(Pos.Select(_Symbol))
     {
      if(Pos.Profit()>2)
        {
         Trade.PositionClose(_Symbol,Sym.Spread()*2);
        }
      else
        {
         if(Pos.PositionType()==POSITION_TYPE_BUY)
           {
            if((Pos.PriceOpen()-Sym.Ask())/Sym.Point()>Limit)// || Sym.Bid()<maVal[0]-0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
         else if(Pos.PositionType()==POSITION_TYPE_SELL)
           {
            if((Sym.Bid()-Pos.PriceOpen())/Sym.Point()>Limit)// || Sym.Ask()>maVal[0]+0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
        }
     }
   else
     {
      if(b-Sym.Bid()>=Shift*Sym.Point() && maVal[0]>maVal[1] && maVal[1]>maVal[2] && Sym.Bid()<maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lots,Sym.Bid(),0,0,""); //Sym.Bid()+0.0030
                                                                            // Trade.Sell(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Sell");
        }
      if(Sym.Ask()-a>=Shift*Sym.Point() && maVal[0]<maVal[1] && maVal[1]<maVal[2] && Sym.Ask()>maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lots,Sym.Ask(),0,0,""); //Sym.Ask()-0.0030
                                                                           // Trade.Buy(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Buy");
        }
     }
   a=Sym.Ask();
   b=Sym.Bid();
  }

 

У Вас перед первым тиком: first==false, а переменные a и b - не инициализированы. Поэтому на первом тике условие

   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }

не срабатывает, и переменные a и b так и остаются неинициализированными.

Если после устранения этой проблемы позиция так и будет открываться, выведите на печать значения массива для МА, аск, бид и переменные а и b.

 

Здравствуйте.

Я самый, что ни на есть "чайник" так что ногами не пинайте )

Вопрос такой: как извлечь данные котировок из 5го метатрейдера ?

В 4м всё понятно и легко, я преобразовывал котировки в файл экселя и уносил к себе на работу, где доступ в интернет заблокирован, и там работал с ними.

Но в 5м метатрейдере я не знаю, как преобразовать его файлы в эксель. Подскажите, пожалуйста. Мне, получается, нужна пошаговая инструкция или скрипт ( языка программирования вообще не знаю, но скрипты, советники или индикаторы юзать умею ), который можно было бы заюзать на нужном таймфрейме, даже если он нестандартный ( М3 или М7, к примеру ). И прошу не требовать от меня начать изучать язык программирования, пожалуйста.

Просто хотелось бы перейти окончательно на МТ5, чтобы не работать с двумя метатрейдерами.

Очень надеюсь на Вашу помощь, знающие люди, буду благодарен по гроб жизни =).

С уважением, Алексей.

 
Hronoptal:

...

Частично вот здесь найдёте то, что Вам нужно: Как подготовить котировки MetaTrader 5 для других программ

Если не хотите учиться, то можете сделать заказ чего только Ваша душа пожелает в разделе Работа. )) 

 

Большое спасибо, уважаемый tol64, за подсказку.

А на счёт учиться, тут пока дело в нехватке времени, к сожалению.

Еще раз - спасибо.

С уважением, Алексей.

 
Можно ли при визуальном тесте индикаторов сделать так чтоб показывалось 2 и более индикаторов а не только 1?
 
paladin800:
Можно ли при визуальном тесте индикаторов сделать так чтоб показывалось 2 и более индикаторов а не только 1?
Сохраните шаблон с именем файла tester.tpl со всеми нужными индикаторами и включите тест в режиме визуализации.
Причина обращения: