Robô com todas as funcionalidades para MT5 - página 5

 

Bom dia!

O testador não quer abrir uma posição, ele gera um erro

ERR_TRADE_SEND_FAILED

4756

Falha no envio do pedido comercial

Rbtg_NYCInclua o testador

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Acho que algo deveria ser corrigido aqui

Rbtg_NYCIncluir kod

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Agora vou tentar substituir esta função por esta

//+------------------------------------------------------------------+
//| Check for long position opening                                  |
//+------------------------------------------------------------------+
bool CSampleExpert::LongOpened(void)
  {
   bool res=false;
//--- check for long position (BUY) possibility

           {
            double price=m_symbol.Ask();
            double tp   =m_symbol.Bid()+m_take_profit;
            //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,InpLots,price)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
              {
               //--- open position
               if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,0.0,tp))
                  printf("Position by %s to be opened",Symbol());
               else
                 {
                  printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
                  printf("Open parameters : price=%f,TP=%f",price,tp);
                 }
              }
            //--- in any case we must exit from expert
            res=true;
           }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
//| Check for short position opening                                 |
//+------------------------------------------------------------------+
bool CSampleExpert::ShortOpened(void)
  {
   bool res=false;
//--- check for short position (SELL) possibility

           {
            double price=m_symbol.Bid();
            double tp   =m_symbol.Ask()-m_take_profit;
            //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,InpLots,price)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
              {
               //--- open position
               if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,InpLots,price,0.0,tp))
                  printf("Position by %s to be opened",Symbol());
               else
                 {
                  printf("Error opening SELL position by %s : '%s'",Symbol(),m_trade.ResultComment());
                  printf("Open parameters : price=%f,TP=%f",price,tp);
                 }
              }
            //--- in any case we must exit from expert
            res=true;
           }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
 
SanAlex:

Bom dia!

O testador não quer abrir uma posição e dá um erro

ERR_TRADE_SEND_FAILED

4756

Falha no envio do pedido comercial

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Acho que algo precisa ser consertado aqui.


Sim. É o seu revendedor-Forexclub para eles o tipo de pedido é FilingFock. Vou dar um passeio com o cachorro e consertá-lo. Não pensei que houvesse mais ninguém no forexclub...

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Свойства ордеров - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
ElenaFxPro4:

Sim. É o seu revendedor-Forexclub que eles devem ter um tipo de pedido FilingFoc. Vou dar um passeio com o cachorro e consertá-lo. Não pensei que houvesse mais ninguém no forexclub...

O modo de preenchimento deve ser definido pelas regras, não a partir do nome do negociante forex.


Adicionado.

Você pode ver um exemplo na classe de comércio CTrade

SetMarginMode

Define o modo de cálculo da margem de acordo com as configurações da conta corrente

SetTypeFillingBySymbol

Define o tipo de ordem de acordo com as configurações do símbolo especificado

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / SetMarginMode
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / SetMarginMode
  • www.mql5.com
SetMarginMode - CTrade - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
ElenaFxPro4:

Sim. É o seu revendedor-Forexclub que eles devem ter um tipo de pedido FilingFoc. Vou dar um passeio com o cachorro e consertá-lo. Não pensei que houvesse mais ninguém no forexclub...

Não percebi - certamente você ainda tem um corretor aqui

Rbtg_NYCIncluir kod 01

 

Está funcionando.

Rbtg_NYCInclua o testador 01

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

         ENUM_ORDER_TYPE_FILLING TypeFilling = ORDER_FILLING_FOK;
         if (AccountInfoString(ACCOUNT_COMPANY)=="Alpari") TypeFilling = ORDER_FILLING_IOC;

trocado -----------

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Parece estar funcionando bem até o momento.

Foto 345

 
SanAlex:

Está funcionando.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

trocado -----------

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Parece estar funcionando bem até o momento.


como o pré-teste pelo algoritmo acontece, eu me pergunto - o resultado é o mesmo?
 
Renat Akhtyamov:
como é pré-testado com algoritmo, eu me pergunto se o resultado é o mesmo?

Ainda estou testando em um teste de um minuto - meu computador está fraco, então o teste é lento.

Parece bom à primeira vista - vamos ver como é o resultado final.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

sem erros no testador do Expert

 
SanAlex:

Bom dia!

O testador não quer abrir uma posição e dá um erro

ERR_TRADE_SEND_FAILED

4756

Falha no envio do pedido comercial

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Acho que algo deveria ser corrigido aqui

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Vou tentar substituir esta função por esta.

Não é necessário.

A 119ª linha deve ser se (AccountInfoString(ACCOUNT_COMPANY)=="Alpari" || AccountInfoString(ACCOUNT_COMPANY)=="Forex Club International Limited") TypeFilling = ORDER_FILLING_FOK;

e o mesmo para a AUTOOrderSELL. É ISTO. :)


 
ElenaFxPro4:

Não é necessário.

A 119ª linha deve ser se (AccountInfoString(ACCOUNT_COMPANY)=="Alpari" || AccountInfoString(ACCOUNT_COMPANY)=="Forex Club International Limited") TypeFilling = ORDER_FILLING_FOK;

e o mesmo para a AUTOOrderSELL. É ISTO. :)


Vou deixar assim por enquanto - vou corrigi-lo após o teste

- não quer parar o testador

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

a única coisa ruim é que o teste está acontecendo agora - e eu pareço estar exagerando aqui

Foto 3456

 
Vladimir Karputov:

O modo de preenchimento deve ser definido pelas regras, não a partir do nome do negociante forex.


Adicionado.

Você pode ver um exemplo na classe de comércio CTrade

SetMarginMode

Define o modo de cálculo da margem de acordo com as configurações da conta corrente

SetTypeFillingBySymbol

Define o tipo de ordem de acordo com as configurações do símbolo especificado

Muito obrigado. Eu deveria usar o modo automático, mas não consegui encontrá-lo. É por isso que preparei este patch como simples instruções para o corretor, que tenho que usar :) Eles são apenas 2. Remake. Obrigado.