Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 428

 
Artyom Trishkin:
La testardaggine non mi offende. Perché?
E le variabili devono essere inizializzate esplicitamente. Un giorno si arriverà all'importanza dell'inizializzazione. Nel frattempo, potete buttare via tutto quello che c'è dentro le parentesi graffe.

Apprezzo la battuta. Grazie.

 
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");
      }
}

Puoi dirmi cosa c'è che non va, non capisco come ottenere il valore della Fibo fan line sulla candela precedente?

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

Puoi dirmi cosa c'è che non va, non capisco come ottenere il valore della Fibo fan line sulla candela precedente?

C'è qualcosa che si accumula qui, sia mql4 che mql5...

Che lingua devo usare per ottenere il valore?

 
nicholishen:

Confronto di numeri con una virgola mobile per l'uguaglianza

bool ( fabs (number1-number2) < _Point / 10 * 5 )
bool flag = ( fabs (number1-number2) < _Point / 10 * 5 )
 
Se si cancella un conto nel terminale, mi sembra di capire che solo la visualizzazione del conto nel terminale viene cancellata. il conto stesso sul server del broker non viene cancellato.
 
igrok333:
Se si cancella un conto nel terminale, mi sembra di capire che solo la visualizzazione del conto nel terminale viene cancellata. il conto stesso sul server del broker non viene cancellato.

Sì, avete capito bene.

 
STARIJ:
È molto semplice. È necessario impostare 7 parametri per calcolare l'iMA. Il primo parametro, il nome del simbolo, è ovvio. Come secondo, timeframe, impostare M1. Il terzo parametro - il periodo - è impostato come molte volte più grande di quanto avete bisogno, quanti giorni è più di un minuto. Il quarto parametro - shift = 0. I prossimi due parametri - il metodo di mediazione e il tipo di prezzo - li conoscete. L'ultimo è il numero di barra. Per favore, calcola il numero di barra se conosci il tempo che ti serve. Questo è tutto! Ricontrolla facendo i calcoli per i tempi M5 e M15. Forse anche per M30.

Alekseu Fedotov:

È così semplice.

È così.


Lo proverò domani e riferirò. Grazie)

 

Potete dirmi come catturare e bloccare il momento di inversione dell'indicatore Parabolic SAR? Almeno solo un'idea di come farlo. Grazie in anticipo!

 
Corvin85:

Potete dirmi come catturare e bloccare il momento di inversione dell'indicatore Parabolic SAR? Almeno solo un'idea di come farlo. Non ho idea di come usarlo.


è possibile controllare la barra attuale e quella precedente.

Per esempio, quello precedente era più alto del prezzo, quello attuale è più basso del prezzo.

 

Salve, cari membri del forum. Potete consigliarmi cosa bisogna fare per assicurarsi che il ticket t1 non venga ridisegnato quando viene aperta una posizione nelle stesse condizioni. In modo che quando si verifica una condizione per chiudere queste (ma non altre) posizioni, entrambi (o forse più)

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;
      }


biglietto. Finora viene letto solo l'ultimo biglietto e il ciclo di chiusura ignora il primo. Il ciclo sembra essere costruito correttamente:

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;  
      }      
     
  }