Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 864

 
Taras Slobodyanik:

Quindi è necessario definire una vacanza o un divieto di commercio?
Il commercio è stato permesso il 27.

se è un fine settimana, allora avete bisogno di un parser di notizie - per identificare le vacanze/il fine settimana.

Non importa quale sia la ragione per cui non si fa trading su un particolare simbolo, basta vedere che non si fa trading. E scusate, non sono ancora abbastanza maturo per capire il parser. Che cos'è e come è scritto nel codice?

 
novichok2018:

Ciao!

Grazie ancora adAlexey Viktorov per la dritta sulle citazioni - tutto funziona. Questo lunedì abbiamo una situazione - i tedeschi hanno scambiato, mentre gli inglesi hanno un giorno di riposo. Si è scoperto che nella condizione di apertura delle posizioni in euro sono stati utilizzati i vecchi valori della sterlina. Da qui la richiesta: consigliate come impostare il controllo nel codice che entrambi i simboli siano scambiati in questo giorno?

Grazie.

#include <Trade\AccountInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- объект для работы со счетом
CAccountInfo account;
//--- получим номер счета, на котором запущен советник
   long login=account.Login();
   Print("Login=",login);
//--- выясним тип счета
   ENUM_ACCOUNT_TRADE_MODE account_type=account.TradeMode();
//--- если счет оказался реальным, прекращаем работу эксперта немедленно!
   if(account_type==ACCOUNT_TRADE_MODE_REAL)
     {
      MessageBox("Работа на реальном счете запрещена, выходим","Эксперт запущен на реальном счете!");
      return(-1);
     }
//--- выведем тип счета    
   Print("Тип счета: ",EnumToString(account_type));
//--- выясним, можно ли вообще торговать на данном счете
   if(account.TradeAllowed())
      Print("Торговля на данном счете разрешена");
   else
      Print("Торговля на счете запрещена: возможно, вход был совершен по инвест-паролю");
//--- выясним, разрешено ли торговать на счете с помощью эксперта
   if(account.TradeExpert())
      Print("Автоматическая торговля на счете разрешена");
   else
      Print("Запрещена автоматическая торговля с помощью экспертов и скриптов");
//--- допустимое количество ордеров задано или нет
   int orders_limit=account.LimitOrders();
   if(orders_limit!=0)Print("Максимально допустимое количество действующих отложенных ордеров: ",orders_limit);
//--- выведем имя компании и сервера
   Print(account.Company(),": server ",account.Server());
//--- напоследок выведем баланс и текущую прибыль на счете
   Print("Balance=",account.Balance(),"  Profit=",account.Profit(),"   Equity=",account.Equity());
   Print(__FUNCTION__,"  completed"); //---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }

Fontehttps://www.mql5.com/ru/articles/481

Торговые операции на MQL5 - это просто
Торговые операции на MQL5 - это просто
  • www.mql5.com
Почти все трейдеры приходят на рынок для того, чтобы заработать денег, хотя есть и доля тех, кому важен не сам торговый результат, а участие в процессе, драйв. Впрочем, получить удовольствие от процесса можно не только торгуя вручную, но и занимаясь разработкой автоматических торговых систем. Ведь создание торгового робота может быть таким же...
 
Sergey Voytsekhovsky:

Fontehttps://www.mql5.com/ru/articles/481

Non so cosa dire qui. Grazie, ma penso che questo sia completamente fuori tema. E perché"se il punteggio si rivela reale, terminare immediatamente l'EA!"Suppongo che mi manchi qualcosa.

 
novichok2018:

Non so cosa dire qui. Grazie, naturalmente, ma penso che questo sia completamente fuori tema. E perché"se il punteggio si rivela reale, terminare immediatamente l'EA!"?

Questo è un esempio del codice dell'articolo. L'articolo copre un codice sperimentale, non per il commercio, ma le funzioni sono le stesse. È un vecchio articolo, ma è un buon articolo per i principianti.

L'output che stai cercando non può essere calcolato dal codice. Il commercio era aperto, ma gli inglesi non hanno scambiato e non hanno avuto quotazioni normali. Prova a impostare la "normalità" per le citazioni e controlla se ci sono. Per esempio lo spread, la volatilità dei tick, la frequenza degli aggiornamenti dei prezzi, o qualsiasi cosa non vi piaccia. Un volo di fantasia.

 
novichok2018:

Non so cosa dire qui. Grazie naturalmente, ma penso che questo sia completamente fuori tema.

Il modo più semplice per scoprire l'uscita è dalle proprietà dell'account, ci saranno delle restrizioni sull'account, IMHO ovviamente. Ecco perché ho dato il blocco di codice qui sopra come esempio

//--- выясним, можно ли вообще торговать на данном счете
   if(account.TradeAllowed())
      Print("Торговля на данном счете разрешена");

E nelle uscite nazionali ci possono essere delle restrizioni sul simbolo. Infatti, controlla l'articolo, ce n'è uno anche lì:

#include<Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- объект для получения свойств символа
CSymbolInfo symbol_info;
//--- зададим имя символа, для которого будем получать информацию
   symbol_info.Name(_Symbol);
//--- получим текущие котировки и выведем
   symbol_info.RefreshRates();
   Print(symbol_info.Name()," (",symbol_info.Description(),")",
         "  Bid=",symbol_info.Bid(),"   Ask=",symbol_info.Ask());
//--- получим значения минимальных отступов для торговых операций
   Print("StopsLevel=",symbol_info.StopsLevel()," pips, FreezeLevel=",
         symbol_info.FreezeLevel()," pips");
//--- получим количество знаков после запятой и размер пункта
   Print("Digits=",symbol_info.Digits(),
         ", Point=",DoubleToString(symbol_info.Point(),symbol_info.Digits()));
//--- информация о спреде
   Print("SpreadFloat=",symbol_info.SpreadFloat(),", Spread(текущий)=",
         symbol_info.Spread()," pips");
//--- запросим тип исполнения ордеров, нет ли ограничений
   Print("Ограничения на торговые операции: ",EnumToString(symbol_info.TradeMode()),
         " (",symbol_info.TradeModeDescription(),")");
//--- выясним режим заключения сделок
   Print("Режим исполнения сделок: ",EnumToString(symbol_info.TradeExecution()),
         " (",symbol_info.TradeExecutionDescription(),")");
//--- выясним способ вычисления стоимости контрактов
   Print("Вычисление стоимости контракта: ",EnumToString(symbol_info.TradeCalcMode()),
         " (",symbol_info.TradeCalcModeDescription(),")");
//--- размер контрактов
   Print("Размер стандартного контракта: ",symbol_info.ContractSize(),
         " (",symbol_info.CurrencyBase(),")");
//--- минимальный, максимальный размеры объема в торговых операциях
   Print("Volume info: LotsMin=",symbol_info.LotsMin(),"  LotsMax=",symbol_info.LotsMax(),
         "  LotsStep=",symbol_info.LotsStep());
//--- 
   Print(__FUNCTION__,"  completed");
//---
   return(0);
  }
 
novichok2018:

Non importa quale sia la ragione per cui non si fa trading su un particolare simbolo, basta vedere che non si fa trading. E mi dispiace, non sono ancora abbastanza maturo per capire il parser. Che cos'è e come è scritto nel codice?

Cosa significa "non fare trading"? ?
il trading è permesso - scambiate quanto volete)

Parser significa scaricare un file con le notizie, poi analizzarlo (parsing) - e identificare il weekend di vacanza.

 
Taras Slobodyanik:

Il commercio è permesso - scambiate quanto volete)

Il commercio è permesso, ma non c'è commercio - è una vacanza.

Ma credo di aver trovato una soluzione:

if(SeriesInfoInteger("EURUSD",PERIOD_H1,SERIES_LASTBAR_DATE)==SeriesInfoInteger("GBPUSD",PERIOD_H1,SERIES_LASTBAR_DATE))

e poi la posizione non si è aperta il 27.

Mi sembra una buona soluzione. Se qualcuno vede delle insidie, sarei grato di saperlo. Grazie a tutti.

 
novichok2018:

Il commercio è permesso ma non c'è commercio - sono in vacanza.

Non so come sia se il commercio è permesso
(anche in un giorno di festa e in un fine settimana).

ha guardato le notizie ai broker - non ha visto nessuno limitare la sterlina il 27

 
Taras Slobodyanik:

Non vedo come, se il commercio è permesso, allora il commercio avviene
(anche in un giorno festivo e nel fine settimana)

ha guardato le notizie ai broker - non ha visto nessuno limitare la sterlina il 27

In realtà non ero interessato alla sterlina ma all'indice FTSE100. L'ho semplificato così: finché c'è l'euro, che sia la sterlina))). Quindi non ci sono dati dell'indice il 27.

 
Confuso. Come posso ottenere il profitto reale (perdita) su un ordine aperto (non un ordine pendente) su MT4, comprese tutte le commissioni, gli swap, ecc. (OrderProfit() + OrderSwap() + OrderCommission() o soloOrderProfit() o qualcos'altro? Vorrei guadagnare qualcosa dopo la chiusura dell'ordine.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Motivazione: