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

 
Artyom Trishkin:

Ну не ошибка же: цикл с глобальной i (синяя), и ещё один цикл с локальной i (красная)

Компилятор ругаться будет
 
pako:
Компилятор ругаться будет
Ну да, будет. Зато как никогда лучше подходит к обсуждаемому вопросу ;)
 
Artyom Trishkin:

Ну не ошибка же: цикл с глобальной i (синяя), и ещё один цикл с локальной i (красная)

Даже я понял... i (синяя) - это квартира, а i (красная) - это туалет. :))))

 
Доброго времени суток.Подскажите как запустить ZigZag в сове.Советник в общем рабочий,но левых сигналов много,приклеил к нему ZZ,перестал работать. Cannot open file Зигзага на тесте,отладка вообще не идет,на демке не купил ни одного ордера.Что тут нужно делать???
xtern string   ZigZag                       = "Данные ZigZag";
extern int      InpDepth                      = 20;
extern int      InpDeviation                  = 5;
extern int      InpBackstep                   = 3;

double MacdCurrent,SignalCurrent,SignalMAPrevious,SignalMAThis,
       PriceCurrentOpen,PriceCurrentClose,SignalParabolic,ZZThis,ZZPrevious;
int    ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
 if (Digits==3||Digits==5)
 {
  slippage*=10;
 }   
 return(INIT_SUCCEEDED);
} 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
 datetime EaStartTime = StringToTime(StartTime);  // время начала работы советника
 datetime EaEndTime = StringToTime(EndTime);      // время окончания работы советника
 datetime CurrTime = TimeCurrent();               // это если нужно взять время терминала
 if (CurrTime < EaStartTime || CurrTime >= EaEndTime)
  return;                                         // если еще не время торговать - выход
 {
  MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_MAIN,0);
  SignalCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_SIGNAL,0);
  SignalMAPrevious=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,1);
  SignalMAThis=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,0);
  SignalParabolic=iSAR(NULL,0,InpSARStep,InpSARMaximum,0);
  ZZThis=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,0);
  ZZPrevious=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,4);
   if (CountTrades()==0) CheckForOpen();
 }
}  
void CheckForOpen()
 
Alexey Viktorov:

Даже я понял... i (синяя) - это квартира, а i (красная) - это туалет. :))))

Вам надо научно-популярную литературу писать, явный талант объяснять все по-простому ))

С объявленным 

#property strict

 будет просто выдано предупреждение, что локальная i перекрывает глобальную.

declaration of 'i' hides global declaration at line 20 test.mq4 25 13

 
Alexey Volchanskiy:

Вам надо научно-популярную литературу писать, явный талант объяснять все по-простому ))

С объявленным 

 будет просто выдано предупреждение, что локальная i перекрывает глобальную.

declaration of 'i' hides global declaration at line 20 test.mq4 25 13

Так это Артём объяснял. У меня таких талантов нету... Чукча не писатель, чукча читатель...
 
Alexey Viktorov:
Так это Артём объяснял. У меня таких талантов нету... Чукча не писатель, чукча читатель...
Ну дык ... мы ж сибирские ватники ;)
 
Nickolay72:
Доброго времени суток.Подскажите как запустить ZigZag в сове.Советник в общем рабочий,но левых сигналов много,приклеил к нему ZZ,перестал работать. Cannot open file Зигзага на тесте,отладка вообще не идет,на демке не купил ни одного ордера.Что тут нужно делать???

В пользовательских индикаторах лежит файл ZigZag если да то точно ли он там так называется как при обращении к нему из советника ?

  ZZThis=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,0);
  ZZPrevious=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,4);
 
Vladimir Zubov:

В пользовательских индикаторах лежит файл ZigZag если да то точно ли он там так называется как при обращении к нему из советника ?

Надо имя файла в кавычки брать без расширения. Странно, что вообще скомпилировалось. А чем была изначальная переменная ZigZag ?

ZZThis=iCustom(NULL,0,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);
 

Как в пятерке выровнять или компенсировать единичные минусовые провалы

 

есть функция но не получается

//+------------------------------------------------------------------+
//| Считаем лот в зависимости от полученного профита                 |
//+------------------------------------------------------------------+
double Volume(void)
  {
   double lot=Lots;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      lot=Lots;
     }
//--- Профит сделки
   double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
//--- Лот сделки
   double lastlot=HistoryDealGetDouble(ticket,DEAL_VOLUME);
//--- Профит отрицательный
   if(profit<0.0)
     {
      //--- Увеличиваем следующий лот
      lot=lastlot*KLot;
      Print(" Cделка закрыта по стопу! ");
     }
//--- Приводим лот к минимальному
   double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   if(lot<minvol)
      lot=minvol;
//--- Если лот больше максимального то начальный лот
   if(lot>MaxLot)
      lot=Lots;
//--- Возвращаем торговый объем
   return(lot);
  }
//+------------------------------------------------------------------+
//| Смотрим тип последней закрытой сделки                            |
//+------------------------------------------------------------------+
int LastDealType(void)
  {
   int type=0;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
//--- Нет сделок в истории
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      type=0;
     }
   if(ticket>0)
     {
      //--- Последняя сделка BUY 
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY)
        {
         type=2;
        }
      //--- Последняя сделка SELL
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL)
        {
         type=1;
        }
     }
//---
   return(type);
  }
Причина обращения: