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

 
ANDREY:

Bom dia a todos!

Comecei a estudar o mql5. Comecei estudando como as ordens são abertas. Entendi que o código para abrir um pedido está escrito em um arquivo separado. Agora domino este código e sua variante final para o comércio. Fiquei surpreso que a abertura do pedido em mql4 seja muito mais fácil e simples do que em mql5.

Gostaria de perguntar se tenho certeza de que já tenho o arquivo com o código para abrir o pedido e não preciso escrever este código. Se tal arquivo estiver disponível em algum lugar, então só preciso conectá-lo à minha EA e definir os valores dos parâmetros do pedido que preciso... Se existe tal arquivo, onde e como ele deve ser encontrado, e qual é seu nome.

Obrigado.

Se entendi você corretamente, é #incluindo <Comércio.mqh>.

Arquivos anexados:
ng4txc.PNG  116 kb
15vegf1.PNG  114 kb
 
SanAlex:

Se entendi você corretamente, é #incluindo <Comércio.mqh>.

Muito obrigado por esta valiosa informação.

Entendo corretamente que não preciso procurar esses arquivos em nenhum lugar, mas basta escrever no lugar certo do código #include <Trade\Trade.mqh> e esse arquivo se juntará automaticamente ao meu Expert Advisor e ele terá acesso a ele quando necessário?

 
ANDREY:

Muito obrigado pelas valiosas informações.

Entendo corretamente que não preciso procurar esses arquivos em nenhum lugar, mas apenas escrever no lugar certo do código #include <Trade\Trade.mqh> e esse arquivo se juntará automaticamente ao meu EA e o EA terá acesso a ele quando necessário?

Sim! Não é preciso procurá-la, ela já está lá.

Você pode consultar o arquivo de código(Moving Averages.mq5 ou MACD Sample.mq5), a partir do terminal.

 
SanAlex:

Sim! não é preciso procurá-lo, já está lá.

Muito obrigado pelas valiosas informações.
Se entendi corretamente, o arquivo que você me enviou se chama CLASSE Este arquivo se destina à abertura de um pedido. Acho que existem muitas CLASSES e cada uma tem seu próprio objetivo, por exemplo, fechar o pedido, modificar o pedido, emitir algumas informações, etc.

P: Onde posso encontrar uma lista de todas as classes com suas descrições detalhadas?
Obrigado novamente por sua ajuda.

 
ANDREY:

Muito obrigado pelas valiosas informações.
Se entendi corretamente, o arquivo que você me enviou se chama CLASSE Este arquivo é para abrir um pedido. Acho que existem muitas CLASSES e cada uma tem seu propósito específico, por exemplo, fechar um pedido, modificar um pedido, emitir algumas informações, etc.

PERGUNTA Onde posso encontrar uma lista de todas as classes com suas descrições detalhadas?
Obrigado novamente por sua ajuda.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Artyom Trishkin:

Muito obrigado pelas valiosas informações. Agora vou começar a digeri-lo, ou seja, assimilar ..... no que diz respeito à minha capacidade mental.

 
ANDREY:

Bom dia a todos!

Comecei a estudar o mql5. Comecei estudando como as ordens são abertas. Entendi que o código para abrir um pedido está escrito em um arquivo separado. Agora domino este código e sua variante final para o comércio. Fiquei surpreso que a abertura do pedido em mql4 seja muito mais fácil e simples do que em mql5.

Gostaria de perguntar se tenho certeza de que já tenho o arquivo com o código para abrir o pedido e não preciso escrever este código. Se tal arquivo estiver disponível em algum lugar, então só preciso conectá-lo à minha EA e definir os valores dos parâmetros do pedido que preciso... Se existe tal arquivo, onde e como ele deve ser encontrado, e qual é seu nome.

Obrigado.

Eu tenho uma abordagem diferente para escrever um EA para mim. Eu só preciso corrigi-lo por mim mesmo.

-( por que reinventar a roda quando ela já foi criada )

----------------------------------------------------------------------

aqui é onde pegamos os Indicadores

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- prepare trade class to control positions if hedging mode is active
   ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
   ExtTrade.SetExpertMagicNumber(MA_MAGIC);
   ExtTrade.SetMarginMode();
   ExtTrade.SetTypeFillingBySymbol(Symbol());
//--- Moving Average indicator
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
   if(ExtHandle==INVALID_HANDLE)
     {
      printf("Error creating MA indicator");
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

e aqui nós os ajustamos para que os indicadores abram corretamente de acordo com o sinal

//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 

   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;

     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=ORDER_TYPE_SELL;    // sell conditions
   else
     {
      if(rt[0].open<ma[0] && rt[0].close>ma[0])
         signal=ORDER_TYPE_BUY;  // buy conditions
     }
//--- additional checking
   if(signal!=WRONG_VALUE)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
     }
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Para me ajudar a entender melhor a MQL5, eu ficaria muito grato se você pudesse traduzir este código simples da MQL4 para o código MQL5.

Obrigado pela ajuda.

int s1,SL,a;
double Lou=Bid,Hay,DL=0.0030;
void OnTick()
{
if (Bid < Lou)
{
Lou=Bid;
}
if (Bid > Hay)
Hay=Bid;
if (Bid - Lou > DL&& Lou!=0)
{
Lou=Bid;
Hay=Bid;
s1=1;
}
////=======================
if (Hay-Bid>0.0000)
if (s1==1)
{
for(int c=0; c<=500;c+=20)
{
a++;
{
SL=300+c;
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+SL*Point,Ask-SL/3*Point,"300",100);
Lou=Bid;
Hay=Bid;
}
}
a=0;
s1=0;
}
}
 

numPosOr= 4;

numStepCount= 1;

iK = (numPosOr - numStepCount) / numPosOr;

Por que este cálculo faziK = 0?

 
Sysmart:

numPosOr= 4;

numStepCount= 1;

iK = (numPosOr - numStepCount) / numPosOr;

Por que este cálculo faziK = 0?

Por favor, me dê o código completo

Razão: