Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 940

 
Artyom Trishkin:

Non funzionerà qui - non usa smartphone e altri nuovi gadget - c'è un telefono della Smolny...

Qui c'è almeno una persona che la pensa come te. Anch'io ignoro tutti questi gadget e i social media. Solo che non c'è nessun telefono del Cremlino...

 

Sono stufo dei requotes.

//+------------------------------------------------------------------+
void OpenSell()
  {

   m_symbol.Name("EURUSD");
   RefreshRates();
   if(m_trade.Sell(InpLots,"EURUSD",m_symbol.Bid(),0.0,0.0))
     {
      if(m_trade.ResultDeal()==0)
        {
         Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
      else
        {
         Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }

     }

//---
  }
//+------------------------------------------------------------------+

Cosa c'è di sbagliato in questo codice? Non ottengo nemmeno il risultato di un controllo dell'esecuzione dell'ordine.

Ricevo solo una tabella con un requote, tutto qui.


 
ilvic:

Sono stufo dei requotes.

Cosa c'è di sbagliato in questo codice? Non ottengo nemmeno il risultato di un controllo dell'esecuzione dell'ordine.

Ricevo solo una tabella con un requote e questo è tutto.


Dovreste incollare il risultato diPrintResultTrade come codice. Non sotto forma di un'immagine, ma sotto forma di un codice.

 

Questa è la scrittura dell'esperto. Si prega di notare che non scrive il risultato del test

2018.11.02 15:20:36.769 Above (EURUSD,M1)       CTrade::OrderSend: instant sell 1.00 EURUSD at 1.14299 [requote (1.14307/1.14317)]

E questo è ciò che dice il registro.

2018.11.02 11:18:49.826 Network '13107230': scanning network for access points
2018.11.02 11:19:17.821 Network '13107230': scanning network finished
2018.11.02 15:20:35.846 Trades  '13107230': instant sell 1.00 EURUSD at 1.14299 (deviation: 100)
2018.11.02 15:20:36.769 Trades  '13107230': requote 1.14307 / 1.14317 (instant sell 1.00 EURUSD at 1.14299 (deviation: 100))

Demo di metacaratteri del server

 
ilvic:

Questo è scritto da un esperto. Si prega di notare che non scrive il risultato del test

E questo è ciò che dice il registro.

Server methaqvotes demo

Inserire il risultato diPrintResultTrade come codice. Non come un'immagine, ma come un codice.


Onon si arriva affatto aPrintResultTrade e si viene buttati fuori prima?

 

Lo è? Se no, allora dimmi cosa intendi.

//+------------------------------------------------------------------+
//| Print CTrade result                                              |
//+------------------------------------------------------------------+
void PrintResultTrade(CTrade &trade,CSymbolInfo &symbol)
  {
   Print("File: ",__FILE__,", symbol: ",m_symbol.Name());
   Print("Code of request result: "+IntegerToString(trade.ResultRetcode()));
   Print("code of request result as a string: "+trade.ResultRetcodeDescription());
   Print("Deal ticket: "+IntegerToString(trade.ResultDeal()));
   Print("Order ticket: "+IntegerToString(trade.ResultOrder()));
   Print("Volume of deal or order: "+DoubleToString(trade.ResultVolume(),2));
   Print("Price, confirmed by broker: "+DoubleToString(trade.ResultPrice(),symbol.Digits()));
   Print("Current bid price: "+DoubleToString(symbol.Bid(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultBid(),symbol.Digits()));
   Print("Current ask price: "+DoubleToString(symbol.Ask(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultAsk(),symbol.Digits()));
   Print("Broker comment: "+trade.ResultComment());
  }
//+------------------------------------------------------------------+
 
ilvic:

Questa è la scrittura dell'esperto. Si prega di notare che non scrive il risultato del test

E questo è ciò che dice il registro.

Demo del server methaquotes.

Perché hai dovuto tagliare il codice? Esempio di funzione di apertura nel codiceParabolic SAR EA

//+------------------------------------------------------------------+
//| Open Sell position                                               |
//+------------------------------------------------------------------+
void OpenSell(double sl,double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double short_lot=InpLots;
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double free_margin_check= m_account.FreeMarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   double margin_check     = m_account.MarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   if(free_margin_check>margin_check)
     {
      if(m_trade.Sell(short_lot,m_symbol.Name(),m_symbol.Bid(),sl,tp))
        {
         if(m_trade.ResultDeal()==0)
           {
            Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
         else
           {
            Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
        }
      else
        {
         Print("#3 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
     }
   else
     {
      Print(__FUNCTION__,", ERROR: method CAccountInfo::FreeMarginCheck returned the value ",DoubleToString(free_margin_check,2));
      return;
     }
//---
  }
 
ilvic:

Lo è? Se no, allora dimmi cosa intendi.

Hai buttato via il controllo del passo #3 del codice.

 
Vladimir Karputov:

Inserire il risultato diPrintResultTrade come codice. Non come un'immagine, ma come un codice.


Onon si arriva aPrintResultTrade e si viene buttati fuori prima?

Esattamente, se l'ordine viene eseguito, la vostra stampa sarà come questa

2018.11.02 10:09:12.648 Above (EURUSD,M1)       #2  Buy -> true. Result Retcode: 10009, description of result: done at 1.14387

Se c'è un requote, l'Expert Advisor rimane in silenzio.

E sono rimasto con un ordine non completato

 
ilvic:

Esattamente, se l'ordine viene eseguito, la stampa sarà come questa

Se un requote, l'Expert Advisor sarà silenzioso come un pesce.

E io rimango con un ordine non completato.

Nel mio post, ho dato un esempio di funzione. Non l'ho tagliato. C'è un esempio inParabolic SAR EA