Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 903

 
Vladimir Pavlov:

Stupidamente ho fatto uno script per copiare all'interno del computer.... Non copia!!!

Allora dov'è la descrizione dell'errore? Quale sistema operativo? Quale build di MetaTrader 5?

Hai i diritti di scrittura sulla cartella?


Aggiunto: sembra che se non c'è una directory, deve essere creata prima.


Quando si copia in una directory esistente - nessun problema. MetaTrader 5 funzionerà senza errori.

 

Come posso essere sicuro che la posizione con l'id dato abbia chiuso?

La soluzione ovvia - quando PositionSelectByTicket restituisce false, ma questo può probabilmente accadere anche in una situazione in cui le posizioni aperte non hanno avuto il tempo di essere caricate nel terminale quando si è connessi al conto di trading?

Una soluzione leggermente più complicata - PositionSelectByTicket restituisce false e HistorySelectByPosition restituisce true. In questo caso, se la storia di questa posizione è caricata, allora la lista delle posizioni aperte deve essere caricata.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
. ... Rick D. ... .:

Aspettate che il terminale si sincronizzi. Per esempio, mentre(HistorySelect).

 
fxsaber:

Aspettate che il terminale si sincronizzi. Per esempio, mentre (HistorySelect).

Non sono un esperto del funzionamento interno del terminale. Ma forse è gaoanted che quando OnInit arriva, la tabella delle posizioni aperte (ed eventualmente la storia del trading) è già caricata?

 
. ... Rick D. ... .:

Non sono un esperto del funzionamento interno del terminale.

Anche lontano da un esperto. È solo che mi vengono in mente diverse opzioni da provare contemporaneamente. E quello che funzionerà dovrà essere sperimentato.

 
Vladimir Karputov:

La soluzione più semplice: apri un grafico dello strumento finanziario desiderato in MetaTrader e posiziona l'Expert Advisor su di esso.

Questo è noto. Ma mi chiedo come impostare la coppia nel programma? C'è una funzione per questo?
 
cepreu1:
Questo è noto. Ma voglio sapere come impostare la coppia nell'applicazione? C'è una funzione per questo?

Facilmente.

Per esempio, operazioni commerciali. Vedere la classeCTrade trade, metodoBuy:

bool  Buy( 
   double        volume,          // объем позиции 
   const string  symbol=NULL,     // символ 
   double        price=0.0,       // цена исполнения 
   double        sl=0.0,          // цена Stop Loss 
   double        tp=0.0,          // цена Take Profit 
   const string  comment=""       // комментарий 
   )

Ho evidenziato il posto dove potete specificare il simbolo richiesto.


O per esempio ricevere dati sui prezzi di apertura e chiusura... -CopyRate:

int  CopyRates( 
   string           symbol_name,       // имя символа 
   ENUM_TIMEFRAMES  timeframe,         // период 
   int              start_pos,         // откуда начнем  
   int              count,             // сколько копируем 
   MqlRates         rates_array[]      // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov:

Facilmente.

Per esempio, operazioni commerciali. Vedere la classeCTrade trade, metodoBuy:

Ho evidenziato il posto dove potete specificare il simbolo richiesto.


O per esempio ricevere dati sui prezzi di apertura e chiusura... -CopyRate:

Sì, ok. Ma non ho specificato che voglio assegnare una coppia all'avvio, ma

senza aprire una posizione. E Buy lo fa aprendo una posizione,

eCopyRates fornisce idati storici della coppia senza assegnarli.

 
cepreu1:

Sì, ok. Ma non ho specificato che voglio assegnare una coppia all'avvio, ma

senza aprire una posizione. E Buy lo fa aprendo una posizione,

eCopyRatesi dati storici della coppia senza assegnarla.

Sei troppo florido, ma provo a indovinare: hai bisogno di un parametro di input con il nome del simbolo? Poi ecco il codice - si specifica il simbolo desiderato nel parametro"InpSymbol". Questo simbolo è controllato in OnInit() - se non c'è un tale simbolo, l'Expert Advisor sarà scaricato e un messaggio di errore apparirà nella scheda "Experts" del terminale (o nella scheda "Journal" dello Strategy Tester).

//+------------------------------------------------------------------+
//|                                                   Set Symbol.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\SymbolInfo.mqh>  
CSymbolInfo    m_symbol;                     // symbol info object
//--- input parameters
input string   InpSymbol="ASDWER";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(InpSymbol)) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!RefreshRates())
      return;
   string text=m_symbol.Name()+"\n"+
               "Ask "+DoubleToString(m_symbol.Ask(),m_symbol.Digits())+"\n"+
               "Bid "+DoubleToString(m_symbol.Bid(),m_symbol.Digits());
   Comment(text);

  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+

Se esiste un simbolo specificato nel parametro"InpSymbol", allora le seguenti informazioni saranno visualizzate sul grafico

  • Nome del simbolo
  • Chiedi il prezzo
  • Prezzo Offerta


Ecco come funziona: lo avviamo su EURUSD e specifichiamo il simbolo USDJPY nelle impostazioni. Quindi, funziona con il simbolo EURUSD, ma i dati (prezzi) provengono da USDJPY


File:
 
Vladimir Karputov:

Sei un po' troppo florido, ma fammi indovinare: hai bisogno di un parametro di input con il nome di un simbolo? Poi ecco il codice - si specifica il simbolo richiesto nel parametro"InpSymbol". Questo simbolo è controllato in OnInit() - se non c'è un tale simbolo, l'Expert Advisor sarà scaricato e un messaggio di errore apparirà nella scheda "Experts" del terminale (o nella scheda "Journal" dello Strategy Tester).

Se esiste un simbolo specificato nel parametro"InpSymbol", allora le seguenti informazioni saranno visualizzate sul grafico

  • Nome del simbolo
  • Chiedi il prezzo
  • Prezzo Offerta


Ecco come funziona: lo avviamo su EURUSD e specifichiamo il simbolo USDJPY nelle impostazioni. Quindi, funziona con il simbolo EURUSD, ma le informazioni (prezzi) provengono dagli Stati Uniti

Vladimir Karputov:

Stai diventando florido, ma fammi indovinare: hai bisogno di un parametro di input con il nome del simbolo? Poi ecco il codice - si specifica il simbolo richiesto nel parametro"InpSymbol". Questo simbolo è controllato in OnInit() - se non c'è un tale simbolo, l'Expert Advisor sarà scaricato e un messaggio di errore apparirà nella scheda "Experts" del terminale (o nella scheda "Journal" dello Strategy Tester).

Se esiste un simbolo specificato nel parametro"InpSymbol", allora le seguenti informazioni saranno visualizzate sul grafico

  • Nome del simbolo
  • Chiedi il prezzo
  • Prezzo Offerta


Ecco come funziona: lo avviamo su EURUSD e specifichiamo il simbolo USDJPY nelle impostazioni. Quindi, risulta che funziona con il simbolo EURUSD, ma riceve informazioni (prezzi) dal simbolo USDJPY


Sì, ma in questo esempio, l'Expert Advisor funziona su EURUSD, ma le informazioni (prezzi) sono ottenute dal simbolo USDJPY.

Perché complicare le cose, voglio dire, se prendiamo questo esempio, poi lanciamo l'Expert Advisor su EURUSD ( o qualsiasi altro

coppia di valute necessaria) e questo è tutto, osserviamo questa coppia e poi, se necessario, apriamo una posizione.

Motivazione: