Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 234

 
leonerd:

Vale, ya veo, gracias. Pensé en probarlo con el EA. Pero aquí tengo 5203. En MT5, el mismo código funciona bien...

Creo que lo he descubierto. He establecido un tiempo de espera de 5000 (ha funcionado en MT5, pero no en MT4). Puse 500 - también funcionó en MT4.

 

¿Pueden aconsejar cómo transferir una función de un indicador a un EA para calcular directamente en él?


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


 

¡Me puede decir cómo escribir este código 2 errores ! 1- Final de programa inesperado 2- Paréntesis desequilibrados ¿Qué es lo que falla en el sentido de los paréntesis desequilibrados?

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:

¡Me puede decir cómo escribir este código 2 errores ! 1- Final de programa inesperado 2- Paréntesis desequilibrados ¿Qué ocurre?

Errores con paréntesis fijo - es necesario buscar emparejado, o mejor - primero poner los paréntesis, y luego dentro del código para escribir:

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

... Pero no hay lógica en su código...

 

Yo añadiré,

esto:

Lot=OrderLots();

no funcionará, la función OrderLots() funciona, lea la ayuda.

variables:

CurAskPriceOne y CurAskPriceTwo

no se declaran en ninguna parte,

hay que hacerlo a grandes rasgos.

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

así

 
Bueno, estoy de acuerdo con el lote. Ah.
  double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

no se anunciaba y funcionaba. :)

 
En varias ocasiones he visto desaparecer a posteriori citas de minutos. Por ejemplo, anoche (12.02) desaparecieron varios cientos de registros de los días 10 y 11. A veces se trata simplemente pulsando "refrescar" en el gráfico M1, ayer no funcionó y tuve queimportar manualmente las cotizaciones desde otro terminal. El broker en el servidor está bien, ya que la misma cuenta abierta en otra copia del terminal da un gráfico normal sin el agujero. ¿Cuál puede ser el problema?
Объем импорта - экономические данные США
Объем импорта - экономические данные США
  • www.mql5.com
Импорт (Imports) отражает объем товаров и услуг из-за рубежа, которые сразу же входят в сети потребления, склады и зоны внешней торговли. При составлении индикатора обычно используется стоимость
 
No sé cómo abrir órdenes, cómo cerrarlas, cómo tomarlas por tipo, no sé cómo hacer que el bot abra una puta orden y ya está :) Tomemos el código más sencillo, qué tengo que poner al principio o al final para que este cabrón abra la orden una vez.
extern double lot =1;
int start()
{
  int Ticket;
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,Ask,2,0,0);
 return(1);
}
 
Tenimagalon:
No sé cómo abrir órdenes, cómo cerrarlas, cómo tomarlas por tipo, no sé cómo hacer que el bot abra una puta orden y ya está :) Tomemos el código más sencillo, qué tengo que poner al principio o al final para que este cabrón abra la orden una vez.
OrdersTotal() < 1
 
Iurii Tokman:
¿Esto es antes de abrirlo?
(
)
Razón de la queja: