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

 
Mikhail Tkachev:

Estou pedindo a ajuda da comunidade...
Como declarar e criar corretamente os objetos globais MQL5?

As globais são declaradas aqui

//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 
int      Global_1;
double   Global_2;
string   Global_3;
long     Global_4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
 
Alexey Viktorov:

Não sei como dizer a você para ler a documentação. Se você o leu e a função padrão não é adequada por alguma razão, deveria ter dito logo...

Bem, sobre "enviar", que os moderadores decidam para quem enviar e para onde enviar! Proibição, por exemplo... Adivinhe quem foi. Quanto às funções regulares, não tenho visto os arquivos json analisando e salvando/escrevendo os arquivos json na documentação. Mas você, como sempre, conhece alguma seção secreta da documentação onde está tudo lá... E eu não sabia... C'um caraças. Que vergonha para mim. Estou prestes a ser calado por Alexei... :)

 

ajudar as pessoas, indo abrirum máximo de 2 pedidos ao mesmo tempo, eu coloco assim não abre nenhum, sem abertura pos_total


void OPENORDER(string ord)

  {
    int pos_total=PositionsTotal();
    double priceL=m_symbol.Ask();
   if (pos_total>=2)
   {
   if(ord=="Sell")      
   
        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")  
         //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }
}


O que eu estou fazendo de errado?

 
Eugen8519:

ajudar as pessoas, indo abrirum máximo de 2 pedidos ao mesmo tempo, eu coloco assim não abre nenhum, sem abertura pos_total



O que eu estou fazendo de errado?

Você escreveu para abrir se você já tem 2 ou mais posições
if (pos_total<=2)
 
Alexey Viktorov:

Makar, você costumava fazer a coisa certa e agora quer fazer a coisa estúpida...

Pense em sua matemática de 5ª ou mais séries. Quanto é (-3)-(-7) e quanto é (-3)+(-7)?

É difícil verificar em uma calculadora, Excelência o ajudará.


Alexey conhece a matemática da 5ª série. Bravo, Alexey. Apenas o Capitão Hindsight. :)

 
Mihail Matkovskij:

Alexei conhece a matemática desde a 5ª série. Bravo, Alexei.

Neste caso, você está errado.
 
MakarFX:

Sim, obrigado. Cheguei a conclusões precipitadas. Eu acertei)

A questão não era que a função pudesse ter valores negativos, mas por que adicionar swap e comissão ao lucro. Você e Alexei provavelmente não entenderam.

Tsaryoff5614 quis calcular o lucro do pedido na história e a função foi chamada de lastloss (se você fala inglês).

https://www.mql5.com/ru/forum/160683/page1559#comment_23786144

Ele confundiu a si mesmo e a mim. E então você e Alexey... Idiota...

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.08.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
MakarFX:
Neste caso, você está errado.

Obrigado pela dica, mas não filtra nada, ela abre até cinco posições

   if(InpTrailingOrderLimit==0)
        return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingOrderLimit+ExtTrailingOrderStep))        
                       OPENORDER("Buy");
              
                  
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingOrderLimit+ExtTrailingOrderStep))))
                        OPENORDER("Sell");


diz a ele para abrir posições, não importa onde eu coloque pos_total, ele não funciona

 
Eugen8519:

Obrigado pela dica, mas não filtra nada, ela abre até cinco posições


É dizer a ele para abrir uma posição, não importa onde eu coloque pos_total, não funciona.

Não há necessidade de remover
if (pos_total<=2)

Preciso mudar o sinal como eu escrevi.

 
Mihail Matkovskij:

A questão não era que a função pode ter valores negativos, mas por que adicionar swap e comissão ao lucro. Você e Alexey provavelmente não entenderam.

Tsaryoff5614 queria calcular o lucro, mas sua função foi chamada de lastloss. Ele confundiu a si mesmo e a mim. E agora você e Alexey... Idiota...

É por isso que o adicionamos, para que possamos calcular todo o lucro do período.

Razão: