Errori, bug, domande - pagina 1776
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Errore di compilazione
int f( const T& ) { return sizeof( T ); }
class A {};
void OnStart()
{
const A * const a = new A; //Error: 'T' - unexpected token
f( a );
}
Nella Guida di Metatrader 4 sull'indicatore iGator()
[in] Источник данных, идентификатор одной из линий индикатора. Mожет быть любой из следующих величин:
MODE_GATORJAW - синяя линия (линия челюсти аллигатора),
MODE_GATORTEETH - красная линия (линия зубов аллигатора),
MODE_GATORLIPS - зеленая линия (линия губ аллигатора).
e sotto c'è un esempio
double diff=iGator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_UPPER,1);
Fonte di dati MODE_UPPER, capisco che c'è un errore nell'aiuto
Errore di compilazione (o piuttosto nessun messaggio di errore)
A() { ::ArrayResize( i1, 1 ); }
int i1[ ];
int i2[1];
void f1() const { i1[0] = 0; } //нет сообщения ошибки
void f2() const { i2[0] = 0; } //Error: 'i2' - member of the constant object cannot be modified
};
Ho trovato due errori durante la gestione dell'evento click del pulsante del mouse.
1. gestire l'evento del clic della rotellina del mouse in OnChartEvent(). L'idea è che la funzione genera l'evento (id == CHARTEVENT_MOUSE_MOVE) quando si clicca il tasto sinistro del mouse (con e senza tenerlo premuto), il tasto destro del mouse (con e senza tenerlo premuto), ma se si clicca la rotella, l'evento sarà generato solo quando la si tiene premuta. Cioè, se premete il tasto centrale e lo rilasciate immediatamente, l'evento non sarà generato!
2. Dopo aver elaborato la pressione del tasto sinistro del mouse (sparam == "1") verrà generato l'evento sparam == "0". Dopo aver cliccato il tasto destro del mouse (sparam == "2"), per qualche motivo l'evento sparam == "0" non viene generato. Non dovrebbero essere gestiti tutti i pulsanti del mouse allo stesso modo? Taccio sul clic sulla ruota, perché, come ho detto al punto 1 - nessun evento viene generato quando la ruota viene cliccata.
Controllare il codice:
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
//| Обработка события графика |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
switch(id)
{
case CHARTEVENT_MOUSE_MOVE:
FuncMove(lparam,dparam,sparam);
break;
}
}
//+------------------------------------------------------------------+
//| Функция обработки события перемещения мыши |
//+------------------------------------------------------------------+
void FuncMove(const long lparam,// Х координата
const double dparam,// Y координата
const string sparam // Строковое значение статуса кнопки
)
{
Print(__FUNCTION__,": sparam = "+sparam);
}
//+------------------------------------------------------------------+
//| Функция деинициализации индикатора |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- Отписываемся от события передвижения мыши
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,false);
}
//+------------------------------------------------------------------+
Errore di compilazione (o piuttosto nessun messaggio di errore)
A() { ::ArrayResize( i1, 1 ); }
int i1[ ];
int i2[1];
void f1() const { i1[0] = 0; } //нет сообщения ошибки
void f2() const { i2[0] = 0; } //Error: 'i2' - member of the constant object cannot be modified
};
nella funzione f2, lo stato dell'oggetto A cambia, perché l'array A::i2 non è dinamico - tutti i suoi elementi appartengono all'oggetto A
Errore di compilazione
class B {
int A() { return 0; }
void f( int ) {}
void g() { f(A()); } //Error: 'A' - invalid cast operation
};
Dratuti. Domanda: come faccio a inviare un messaggio a un utente con cui non ho ancora corrisposto sui browser mobili (android, apple)? Ho guardato da diversi dispositivi - da nessuna parte c'è un pulsante "invia un messaggio", così come "aggiungi agli altri". La pagina dell'utente ha un aspetto simile a questo, senza pulsanti:
Lo dico da molto tempo. Finora non hanno detto nulla.
Trovati due errori nella gestione degli eventi del pulsante del mouse.
Controllare.
Grazie, controlla il numero della prima barra visibile sul grafico: ChartGetInteger( 0, CHART_FIRST_VISIBLE_BAR );
Il punto è che se disabilitate lo scorrimento del grafico e monitorate l'ultima barra visibile, allora al momento di una nuova candela il suo numero cambia per qualche motivo, anche se il grafico non si muove! Il TF è M1 per poter controllare più velocemente. Iniziare dall'indicatore:
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Подписываемся на событие движения мыши
ChartSetInteger( 0, CHART_EVENT_MOUSE_MOVE, true );
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
//| Обработка события графика |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
switch( id )
{
case CHARTEVENT_MOUSE_MOVE:
Print( __FUNCTION__," "+TimeToString( TimeCurrent(), TIME_DATE|TIME_SECONDS )+": sparam = "+sparam+", ",(int)ChartGetInteger( 0, CHART_FIRST_VISIBLE_BAR ));
break;
}
}