Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 428

 
Artyom Trishkin:
Não me sinto ofendido pela teimosia. Por quê?
E as variáveis precisam ser inicializadas explicitamente. Um dia você chegará à importância da inicialização. Enquanto isso, você pode jogar tudo fora dentro dos parênteses encaracolados.

Apreciar o humor. Obrigado.

 
input int ExtDepth=12;//
input int ExtDeviation=5;//
input int ExtBackstep=3;//

input int Deviation=10;

//---------------------------------
int zz_handle;
struct zz_info{
   double P_;
   datetime T_;
};
double zz_value[];
datetime zz_time[];
zz_info zz_highs[2];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   zz_handle=iCustom(_Symbol,PERIOD_CURRENT,"Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep);
   

   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   int count=0; 
   int i=1;
   
   CopyBuffer(zz_handle,0,1,1,zz_value);
   if(zz_value[0]!=0)
      {
      while(count<2)
         {
            CopyBuffer(zz_handle,0,i,1,zz_value);
            CopyTime(_Symbol,PERIOD_CURRENT,i,1,zz_time);
            i++;
            if(zz_value[0]!=0)
               {
                  zz_highs[count].P_=zz_value[0];
                  zz_highs[count].T_=zz_time[0];
                  count++;
               }
                           
         }
      DrawFibofan(zz_highs);
      }
      double high[];
      double low[];
      datetime Time[];
      CopyHigh(_Symbol,PERIOD_CURRENT,1,1,high);
      CopyLow(_Symbol,PERIOD_CURRENT,1,1,low);
      CopyTime(_Symbol,PERIOD_CURRENT,1,1,Time);
      double fibo_p=ObjectGetValueByTime(0,"DisFibo",Time[0],0);
      Comment(fibo_p);
   
  }
//+------------------------------------------------------------------+
void DrawFibofan(zz_info &zz[])
{
   if(zz[0].P_-zz[1].P_>0) 
      {
         ObjectDelete(0,"AscFibo");
         ObjectCreate(0,"AscFibo",OBJ_FIBOFAN,0,zz[1].T_,zz[1].P_,zz[0].T_,zz[0].P_);
         ObjectSetInteger(0,"AscFibo",OBJPROP_LEVELS,1);
         ObjectSetDouble(0,"AscFibo",OBJPROP_LEVELVALUE,0.882);
         ObjectSetInteger(0,"AscFibo",OBJPROP_LEVELCOLOR,clrNavy);
         ObjectSetInteger(0,"AscFibo",OBJPROP_WIDTH,2);
         ObjectSetString(0,"AscFibo",OBJPROP_LEVELTEXT,"88.2");
      }

      else
      {
         ObjectDelete(0,"DisFibo");
         ObjectCreate(0,"DisFibo",OBJ_FIBOFAN,0,zz[1].T_,zz[1].P_,zz[0].T_,zz[0].P_);
         ObjectSetInteger(0,"DisFibo",OBJPROP_LEVELS,1);
         ObjectSetDouble(0,"DisFibo",OBJPROP_LEVELVALUE,0.882);
         ObjectSetInteger(0,"DisFibo",OBJPROP_LEVELCOLOR,clrNavy);
         ObjectSetInteger(0,"DisFibo",OBJPROP_WIDTH,2);
         ObjectSetString(0,"DisFibo",OBJPROP_LEVELTEXT,"88.2");
      }
}

Você pode me dizer o que está errado, eu não entendo como obter o valor da linha de ventiladores Fibo na vela anterior?

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Обсудим совместные проекты в редакторе - зачем они и...
 
Roman Sharanov:

Você pode me dizer o que está errado, eu não entendo como obter o valor da linha de ventiladores Fibo na vela anterior?

Algo está empilhado aqui, tanto mql4 como mql5.

Que linguagem devo usar para obter o valor?

 
nicholishen:

Comparação de números com um ponto flutuante para a igualdade

bool ( fabs (number1-number2) < _Point / 10 * 5 )
bool flag = ( fabs (number1-number2) < _Point / 10 * 5 )
 
Se você excluir uma conta no terminal, entendo que somente a exibição da conta no terminal é excluída. a conta em si no servidor do corretor não é excluída.
 
igrok333:
Se você excluir uma conta no terminal, entendo que apenas a exibição da conta no terminal é excluída. a conta em si no servidor do corretor não é excluída.

Sim, você tem esse direito.

 
STARIJ:
É muito simples. Você precisa definir 7 parâmetros para calcular o iMA. O primeiro parâmetro, o nome do símbolo, é óbvio. Como o segundo, o cronograma, estabelece M1. O terceiro parâmetro - o período - definido quantas vezes maior do que o necessário, quantos dias é maior do que um minuto. O quarto parâmetro - shift = 0. Os dois parâmetros seguintes - o método de cálculo da média e o tipo de preço - você sabe. O último é o número da barra. Por favor, calcule o número da barra se você souber o tempo necessário. Isso é tudo! Verifique novamente, fazendo cálculos para os prazos M5 e M15. Talvez até para M30.

Alekseu Fedotov:

É tão simples quanto isso.

É assim.


Tentarei amanhã e me apresentarei de volta. Obrigado)

 

Você pode me dizer como capturar e bloquear o momento de inversão do indicador Parabólico SAR? Pelo menos uma idéia de como fazer isso. Obrigado de antemão!

 
Corvin85:

Você pode me dizer como capturar e bloquear o momento de inversão do indicador parabólico SAR? Pelo menos uma idéia de como fazer isso. Não tenho a menor idéia de como utilizá-lo.


você pode verificar a barra atual e a anterior.

Por exemplo, o anterior era mais alto do que o preço, o atual é mais baixo do que o preço.

 

Olá, caros membros do fórum. Você pode aconselhar o que precisa ser feito para garantir que o bilhete t1 não seja redesenhado quando uma posição é aberta sob as mesmas condições. Para que quando uma condição para fechar estas (mas não outras) posições ocorra, ambas (ou possivelmente mais)

if(ЗДЕСЬ УСЛОВИЕ ОТКРЫТИЯ ПОЗИЦИИ БАЙ)
      {
      t1=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,"",0,0,Green);
      if(t1>0)
           {
            if(OrderSelect(t1,SELECT_BY_TICKET,MODE_TRADES))
              { Print("Открыта позиция BUY20");
               buy20=true;
              }
           }
         else
            Print("Error opening BUY20 order : ",GetLastError());
      return;
      }


bilhete. Até agora só tenho o último bilhete lido e o loop de fechamento ignora o primeiro. O laço parece ter sido construído corretamente:

void ClosePoz()
  { RefreshRates();
         double WPR0 = iWPR(NULL,PERIOD_M5,bars,0);
         bool rez1 = false;
         bool rez2 = false;
  int total=OrdersTotal();
      for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         if(OrderTicket()==t1 && buy20 && MathAbs(WPR0)>81)
         rez1 =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE); 
        
         if(OrderTicket()==t2 && buy80 && MathAbs(WPR0)<20)
         rez2 =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE);                 
         }
       continue;  
      }      
     
  }