Errore NormalPrice! Buon pomeriggio a tutti. Ho modificato c mql4 a mql5 e ora ho ottenuto l'errore NormalPrice. Per favore, aiutatemi a capire il motivo.
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
CPositionInfo o_position; //класс для управления открытыми позициями
CTrade o_trade;
CSymbolInfo o_symbol;
COrderInfo o_order;
//+------------------------------------------------------------------+//| Переменные вводимые при запуске параметры |//+------------------------------------------------------------------+inputdouble StartLot = 0.1;
inputint Indent = 30;
inputint Step = 10;
inputdouble ProfitClose = 20;
inputint MagicNumber = 12345;
inputint Slippage = 30;
//+------------------------------------------------------------------+//| Изменяемые параметры в программе |//+------------------------------------------------------------------+int dStep;
int dIndent;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
dStep = Step;
dIndent = Indent;
if (!o_symbol.Name(Symbol()))
return(INIT_FAILED);
RefreshRates();
o_trade.SetExpertMagicNumber(MagicNumber);
//Проверка режимов открытия ордеров через функциюif (IsFillingTypeAllowed (o_symbol.Name(), SYMBOL_FILLING_FOK))
{
o_trade.SetTypeFilling(ORDER_FILLING_FOK);
}
elseif (IsFillingTypeAllowed (o_symbol.Name(), SYMBOL_FILLING_IOC))
{
o_trade.SetTypeFilling(ORDER_FILLING_IOC);
}
else
{
o_trade.SetTypeFilling(ORDER_FILLING_RETURN);
}
o_trade.SetDeviationInPoints(Slippage);
if (o_symbol.Digits() == 3 || o_symbol.Digits() == 5)
{
dStep *= 10;
dIndent *= 10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
datetime lpos_time = 0;
double lpos_price_open = 0.0;
double lpos_volume = 0.0;
ENUM_POSITION_TYPE lpos_type = -1;
int pos_count = 0;
double sum_profit = 0;
//счечик открытых позицийfor (int i = PositionsTotal() - 1; i>=0; i--)
{
if (o_position.SelectByIndex(i))
{
if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
{
if (o_position.Time() > lpos_time)//если время позиции больше чем время последней позиции
{
lpos_time = o_position.Time();
lpos_price_open = o_position.PriceOpen();
lpos_volume = o_position.Volume();
lpos_type = o_position.PositionType();
}
pos_count++;
sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit();
}
}
}
//счетчик количества отложенных ордеровint stop_count = 0;
for (int i = OrdersTotal()-1; i>=0; i--) //OrderTotal считает только отложенные ордера
{
if (o_order.SelectByIndex(i))
{
if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
stop_count++;
}
}
//Функция проверки котировокif (!RefreshRates())
return;
//if (sum_profit > ProfitClose)
{
CloseAll();
return;
}
//if (pos_count>0)
{
if (lpos_type == POSITION_TYPE_BUY && o_symbol.Bid() < lpos_price_open - dStep * o_symbol.Point())
{
o_trade.Sell(lpos_volume * 2, o_symbol.Name());
}
if (lpos_type == POSITION_TYPE_SELL && o_symbol.Ask() < lpos_price_open + dStep * o_symbol.Point())
{
o_trade.Buy(lpos_volume * 2, o_symbol.Name());
}
o_trade.SellStop(StartLot, o_symbol.Bid() - dIndent * o_symbol.Point());
o_trade.BuyStop(StartLot, o_symbol.Ask() + dIndent * o_symbol.Point());
return;
}
if (pos_count > 0 && stop_count > 0)
DeleteStopOrders();
}
//Функция проверки котировокboolRefreshRates()
{
if (!o_symbol.RefreshRates())
return (false);
if (o_symbol.Ask() == 0 || o_symbol.Bid() == 0)
return (false);
return(true);
}
//+------------------------------------------------------------------+bool IsFillingTypeAllowed (string symbol, int fill_type)
{
int filling = (int) SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);//запрашиваем режим открытияreturn(filling && fill_type);
}
//+------------------------------------------------------------------+void CloseAll()
{
for (int index = PositionsTotal()-1; index >=0; index--)
{
if (o_position.SelectByIndex(index))
{
if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
{
o_trade.PositionClose(o_position.Ticket());
}
}
}
}
//+Функция удаления стоп ордеровvoid DeleteStopOrders()
{
for (int i = OrdersTotal()-1; i>-0; i--)
{
if (o_order.SelectByIndex(i))
if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
o_trade.OrderDelete(o_order.Ticket());
}
}
Evgeniy Kazeikin: La domanda può essere off-topic, ma non vedo il motivo di crearne solo una. Lo chiederò qui. Su cosa si basa l'affidabilità del segnale?
Ci sono cinque o sei componenti, calcolati con una formula complessa, poi viene disegnata una scala con il colore appropriato
Oltre agli errori di cui sopra nel tester (sto testando un EA multicurrency), il tester non vuole visualizzare altri simboli, e il log contiene numerosi errori di mancata sincronizzazione, anche sotto il numero 4001.
Di nuovo, nella build 1981, tutto ha funzionato senza errori. Nel 1983 è un problema.
Funzione di controllo della sincronizzazione:
//+------------------------------------------------------------------+//| Проверка синхронизации данных |//+------------------------------------------------------------------+bool CheckSync(conststring &usingSymbols[],// Список используемых символовconstENUM_TIMEFRAMES timeframe // Рабочий ТФ
)
{
//--- Цикл по символамfor(int i=0; i<_symbolsSize; i++)
{
//--- Проверяем синхронизацию i-го символаif(!SymbolIsSynchronized(usingSymbols[i]) || // Если нет синх. данных терминала и сервера или..
!SeriesInfoInteger(usingSymbols[i],timeframe,SERIES_SYNCHRONIZED)) // ..не синх. данные по символу/периоду на данный момент
{
//---Print(__FUNCTION__,": ВНИМАНИЕ! Синхронизация по '"+usingSymbols[i]+"' ТФ "+EnumToString(timeframe)+" отсутствует!");
Print(__FUNCTION__,": error = ",GetLastError());
//--- Возвращаем ложьreturn( false );
}
}
//--- Все символы синхронизованыreturn( true );
}
La sincronizzazione è supportata da una richiesta di dati minuto per minuto per ogni carattere con CopyTime(). ResetLastError() non azzera l'errore numero 4001 prima di chiamare le funzioni di controllo della sincronizzazione.
Ciao, dopo l'aggiornamento di MT5 dell'8 novembre le linee orizzontali non sono più disegnate da questo script nello strategy tester. E il commento non viene visualizzato.
Si prega di consigliare come risolvere il problema.
Ciao, dopo l'aggiornamento di MT5 dell'8 novembre le linee orizzontali non sono più disegnate da questo script nello strategy tester. Si prega di consigliare come risolvere il problema.
Oltre agli errori di cui sopra nel tester (sto testando un EA multicurrency), il tester non vuole visualizzare altri simboli, e il log contiene numerosi errori di mancata sincronizzazione, anche sotto il numero 4001.
Di nuovo, nella build 1981, tutto ha funzionato senza errori. Nel 1983 è un problema.
Funzione di controllo della sincronizzazione:
La sincronizzazione è supportata da una richiesta di dati minuto per minuto per ogni carattere con CopyTime(). ResetLastError() non azzera l'errore numero 4001 prima di chiamare le funzioni di controllo della sincronizzazione.
Mi chiedo se qualcun altro ha questo problema sulla build 1983? Il tester multi-valuta si rifiuta di fare il caffè, sembra essersi trasformato in un tester mono-valuta. Sto cercando di ottenere barre per diversi simboli, ma non importa quale richiedo, restituisce quello che è impostato nelle impostazioni del tester.
Ecco un semplice Expert Advisor che blocca un errore.
Guardo aBarsCHFJPY[0], aBarsEURUSD[0], aBarsUSDCHF[0] con il debug, e vedo che sono assolutamente uguali (e quale esattamente dipende dalla selezione di un simbolo nelle impostazioni del tester). Cambiare la data del tester non ha alcun effetto su nulla. Detto questo, le proprietà dei personaggi sembrano essere corrette. Sono tornato indietro alla build 1966 - tutto è a posto lì.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Errore NormalPrice! Buon pomeriggio a tutti. Ho modificato c mql4 a mql5 e ora ho ottenuto l'errore NormalPrice. Per favore, aiutatemi a capire il motivo.
Da cosa dipende l'affidabilità del segnale?
La domanda può essere off-topic, ma non vedo il motivo di crearne solo una. Lo chiederò qui.
Su cosa si basa l'affidabilità del segnale?
Oltre agli errori di cui sopra nel tester (sto testando un EA multicurrency), il tester non vuole visualizzare altri simboli, e il log contiene numerosi errori di mancata sincronizzazione, anche sotto il numero 4001.
Di nuovo, nella build 1981, tutto ha funzionato senza errori. Nel 1983 è un problema.
Funzione di controllo della sincronizzazione:
La sincronizzazione è supportata da una richiesta di dati minuto per minuto per ogni carattere con CopyTime(). ResetLastError() non azzera l'errore numero 4001 prima di chiamare le funzioni di controllo della sincronizzazione.
Ciao, dopo l'aggiornamento di MT5 dell'8 novembre le linee orizzontali non sono più disegnate da questo script nello strategy tester. E il commento non viene visualizzato.
Si prega di consigliare come risolvere il problema.
Errore 4001.
Ciao, dopo l'aggiornamento di MT5 dell'8 novembre le linee orizzontali non sono più disegnate da questo script nello strategy tester. Si prega di consigliare come risolvere il problema.
Errore 4001.Confermato.
Terminale e sistema:
Esempio: Expert AdvisorDaily range funziona conOBJ_HLINE. Negli errori dei tester:
Oltre agli errori di cui sopra nel tester (sto testando un EA multicurrency), il tester non vuole visualizzare altri simboli, e il log contiene numerosi errori di mancata sincronizzazione, anche sotto il numero 4001.
Di nuovo, nella build 1981, tutto ha funzionato senza errori. Nel 1983 è un problema.
Funzione di controllo della sincronizzazione:
La sincronizzazione è supportata da una richiesta di dati minuto per minuto per ogni carattere con CopyTime(). ResetLastError() non azzera l'errore numero 4001 prima di chiamare le funzioni di controllo della sincronizzazione.
Questo errore è già stato risolto.
Confermato.
Il terminale e il sistema:
Esempio: Il consigliere digamma giornaliero funziona con gli oggettiOBJ_HLINE. Negli errori del tester:
Da sistemare nella prossima build.
Bild 1984 MQ Demo Server
Mi chiedo se qualcun altro ha questo problema sulla build 1983? Il tester multi-valuta si rifiuta di fare il caffè, sembra essersi trasformato in un tester mono-valuta. Sto cercando di ottenere barre per diversi simboli, ma non importa quale richiedo, restituisce quello che è impostato nelle impostazioni del tester.
Ecco un semplice Expert Advisor che blocca un errore.
Guardo aBarsCHFJPY[0], aBarsEURUSD[0], aBarsUSDCHF[0] con il debug, e vedo che sono assolutamente uguali (e quale esattamente dipende dalla selezione di un simbolo nelle impostazioni del tester). Cambiare la data del tester non ha alcun effetto su nulla. Detto questo, le proprietà dei personaggi sembrano essere corrette. Sono tornato indietro alla build 1966 - tutto è a posto lì.