Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 234

 
leonerd:

OK, estou vendo, obrigado. Pensei em experimentá-lo na EA. Mas aqui eu tenho 5203. No MT5, o mesmo código funciona bem...

Acho que descobri. Estabeleci tempo limite 5000 (funcionou no MT5, mas não no MT4). Eu coloquei 500 - funcionou também no MT4.

 

Você pode aconselhar como transferir uma função de um indicador para um EA para calcular diretamente nele?


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


 

Você pode me dizer como escrever este código 2 erros! 1- programa final esperado 2- Parênteses desequilibrados O que está errado no sentido de parênteses 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:

Você pode me dizer como escrever este código 2 erros! 1- Programa final esperado 2- Parênteses desequilibrados O que está errado?

Erros com parênteses corrigidos - você precisa procurar emparelhados, ou melhor - primeiro coloque os parênteses, e depois dentro do código para escrever:

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

... Mas não há lógica em seu código...

 

Vou acrescentar,

isto:

Lot=OrderLots();

não vai funcionar, a função OrderLots() funciona, leia a ajuda.

variáveis:

CurAskPriceOne e CurAskPriceTwo

não são declarados em nenhum lugar,

você precisa fazer isso de forma aproximada.

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

como este

 
Concordo sobre o lote. Ah.
  double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

não anunciado e funcionou. :)

 
Em várias ocasiões, vi citações minúsculas desaparecerem retrospectivamente. Por exemplo, ontem à noite (12.02) várias centenas de registros para o 10º-11º dia desapareceram. Às vezes é tratado simplesmente pressionando "refresh" no gráfico M1, ontem não funcionou e tive queimportar manualmente citações de outro terminal. O corretor no servidor está bem, pois a mesma conta aberta em outra cópia do terminal dá um gráfico normal sem o buraco. Qual poderia ser o problema?
Объем импорта - экономические данные США
Объем импорта - экономические данные США
  • www.mql5.com
Импорт (Imports) отражает объем товаров и услуг из-за рубежа, которые сразу же входят в сети потребления, склады и зоны внешней торговли. При составлении индикатора обычно используется стоимость
 
Não consigo descobrir como abrir pedidos, como fechá-los, como tomá-los por tipo, não consigo descobrir como fazer o bot abrir a porra de um pedido e é isso :) Vamos pegar o código mais simples, o que eu preciso colocar no início ou no fim para que este bastardo abra a ordem uma vez.
extern double lot =1;
int start()
{
  int Ticket;
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,Ask,2,0,0);
 return(1);
}
 
Tenimagalon:
Não consigo descobrir como abrir pedidos, como fechá-los, como tomá-los por tipo, não consigo descobrir como fazer o bot abrir a porra de um pedido e é isso :) Vamos pegar o código mais simples, o que eu preciso colocar no início ou no fim para que este bastardo abra a ordem uma vez.
OrdersTotal() < 1
 
Iurii Tokman:
Isto é antes de você abrir?
(
)
Razão: