Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 234

 
leonerd:

OK, capisco, grazie. Ho pensato di provarlo su un esperto. Ma qui ho ottenuto 5203. In MT5, lo stesso codice funziona bene...

Credo di aver capito. Ho impostato il timeout 5000 (ha funzionato su MT5, ma non su MT4). Ho messo 500 - ha funzionato anche su MT4.

 

Potete consigliarmi come trasferire una funzione da un indicatore a un EA per calcolare direttamente in esso?


void OnTick()

{

SovExitBuffer[0]= getValue()// }

)?


int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

//---
   int limit;
//---
   if(rates_total<=1)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit=limit+1;

 for(int i=limit-1; i>=0; i--)
 {

  
  upDband1=iMA(NULL,0,25,0,MODE_SMA,PRICE_CLOSE,i)+iStdDev(NULL,0,25,0,MODE_EMA,PRICE_CLOSE,i)*2;
  maDbands1=iMA(NULL,0,25,0,MODE_SMA,PRICE_CLOSE,i);
  deltaDbands1=upDband1-maDbands1;

  ExitBuffer[i]=deltaDbands1; //Это значение нужно получить в советнике в Ontick()
  
  }

   return(rates_total);
  }


 

Potete dirmi come scrivere questo codice 2 errori! 1- fine programma imprevista 2- parentesi sbilanciate Cosa c'è di sbagliato nel senso di parentesi sbilanciate?

extern double        Lot   =1;
//-------------------------------------
//----------------------------------
void start()
{
  Lot=OrderLots();
  void RefreshRates();
  CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
  CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);
 //----------
 //--Открытие ордера1
    Ticket=OrderSend("EURUSD",OP_BUY,Lot,CurAskPriceOne,2,0,0);
    if (Ticket > 0)
      {
       if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) Print (" One order opene : " , OrderOpenPrice());
      {
      else Print ("Eror opening BUY EURUSD order : ",GetLastError();
//-------------
//--Ордер 2
          Ticket=OrderSend("USDCHF",OP_BUY,Lot,CurAskPriceTwo,2,0,0);
    if (Ticket > 0)
      {
       if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) Print (" One order opene : " , OrderOpenPrice());
      {
      else Print ("Eror opening BUY USDCHF order : ",GetLastError());
      
//---------------------------Закрытие старт
  return;
}
 
Tenimagalon:

Potete dirmi come scrivere questo codice 2 errori! 1- fine programma imprevista 2- parentesi sbilanciate Cosa c'è che non va?

Errori con parentesi fissate - è necessario cercare accoppiati, o meglio - prima mettere le parentesi, e poi all'interno del codice da scrivere:

extern double        Lot   =1;
//-------------------------------------
//----------------------------------
void start()
{
   Lot=OrderLots();
   RefreshRates();
   CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
   CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);
   //----------
   //--Открытие ордера1
   Ticket=OrderSend("EURUSD",OP_BUY,Lot,CurAskPriceOne,2,0,0);
   if(Ticket > 0)
     {
      if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print(" One order opene : " , OrderOpenPrice());
      else
         Print("Eror opening BUY EURUSD order : ",GetLastError());
     }
   //-------------
   //--Ордер 2
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,CurAskPriceTwo,2,0,0);
   if (Ticket > 0)
     {
      if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print(" One order opene : " , OrderOpenPrice());
     }
   else
      Print("Eror opening BUY USDCHF order : ",GetLastError());
   //---------------------------Закрытие старт
   return;
}

... Ma non c'è logica nel tuo codice...

 

Aggiungo,

questo:

Lot=OrderLots();

non funzionerà, la funzione OrderLots() funziona, leggete l'aiuto.

variabili:

CurAskPriceOne e CurAskPriceTwo

non sono dichiarati da nessuna parte,

devi farlo in modo approssimativo.

   double CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
   double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

come questo

 
Beh, sono d'accordo sul lotto.
  double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

non annunciato e ha funzionato. :)

 
In diverse occasioni ho visto sparire retrospettivamente delle citazioni minute. Per esempio, ieri sera (12.02) sono scomparse diverse centinaia di registrazioni per il giorno 10-11. A volte viene trattato semplicemente premendo "refresh" sul grafico M1, ieri non ha funzionato e ho dovutoimportare manualmente le quotazioni da un altro terminale. Il broker sul server è a posto, poiché lo stesso conto aperto in un'altra copia del terminale dà un grafico normale senza il buco. Quale potrebbe essere il problema?
Объем импорта - экономические данные США
Объем импорта - экономические данные США
  • www.mql5.com
Импорт (Imports) отражает объем товаров и услуг из-за рубежа, которые сразу же входят в сети потребления, склады и зоны внешней торговли. При составлении индикатора обычно используется стоимость
 
Non riesco a capire come aprire gli ordini, come chiuderli, come prenderli per tipo, non riesco a capire come fare in modo che il bot apra un cazzo di ordine e basta :) Prendiamo il codice più semplice, cosa devo mettere all'inizio o alla fine per far sì che questo bastardo apra l'ordine una volta.
extern double lot =1;
int start()
{
  int Ticket;
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,Ask,2,0,0);
 return(1);
}
 
Tenimagalon:
Non riesco a capire come aprire gli ordini, come chiuderli, come prenderli per tipo, non riesco a capire come fare in modo che il bot apra un cazzo di ordine e basta :) Prendiamo il codice più semplice, cosa devo mettere all'inizio o alla fine per far sì che questo bastardo apra l'ordine una volta.
OrdersTotal() < 1
 
Iurii Tokman:
Questo è prima di aprirlo?
(
)