Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 498

 
Artyom Trishkin:

Não é um erro: um laço com i global (azul), e outro laço com i local (vermelho)

O compilador irá queixar-se
 
pako:
O compilador vai jurar.
Sim, vai. Mas encaixa na questão melhor do que nunca ;)
 
Artyom Trishkin:

Não é um erro: um laço com i global (azul), e outro laço com i local (vermelho)

Até eu percebo... O i (azul) é o plano e o i (vermelho) é a casa de banho. :))))

 
Bom dia. Pode aconselhar como gerir ZigZag em EA.EA em geral trabalhando, mas deixou sinais muito, colados a ele ZZ, parou de trabalhar. Não é possível abrir o ficheiro ZigZag no teste, nenhuma depuração, na demonstração não comprou uma única encomenda, o que é que há para fazer?
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:

Até eu descobri... O i (azul) é o plano e o i (vermelho) é a casa de banho. :))))

Deve escrever um livro de ciência popular, tem obviamente um talento para explicar as coisas de forma simples ))

Com uma declaração

#property strict

apenas dará um aviso de que o i local se sobrepõe ao global.

declaração de 'i' oculta declaração global na linha 20 test.mq4 25 13

 
Alexey Volchanskiy:

Deve escrever um livro de ciência popular, tem obviamente um talento para explicar as coisas de forma simples ))

Com uma declaração

apenas dará um aviso de que o i local se sobrepõe ao global.

declaração de 'i' oculta declaração global na linha 20 test.mq4 25 13

Os meus leitores têm um claro talento para explicações tão simples. Não tenho tais talentos. Um homem não é um escritor, é um leitor...
 
Alexey Viktorov:
Era isso que Artyom estava a explicar. Eu não tenho tais talentos... Não é um escritor, é um leitor...
Bem... somos bocas de algodão siberiano ;)
 
Nickolay72:
Olá, pode dizer-me como gerir o ZigZag na EA, em geral, funcionando, mas a esquerda sinaliza muito, colada a ele ZZ, deixou de funcionar. Não é possível abrir o ficheiro ZigZag no teste, a depuração não vai, na demonstração não comprou uma única encomenda. o que é que há para fazer?

Nos indicadores personalizados está um ficheiroZigZag, se assim for, é exactamente chamado aí como quando se acede a partir da EA ?

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

Em caso afirmativo, o ficheiroZigZag está localizado em indicadores personalizados, é chamado como é quando se acede a ele a partir do Expert Advisor?

O nome do ficheiro deve ser citado entre aspas sem a extensão. É estranho, compila bem. Qual era a variávelZigZag original ?

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

Como nivelar ou compensar por um simples "sags" em cinco

há uma função mas não funciona

//+------------------------------------------------------------------+
//| Считаем лот в зависимости от полученного профита                 |
//+------------------------------------------------------------------+
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);
  }
Razão: