Pomeriggio. L'indicatore ha bisogno di ottenere dati da un altro indicatore, quando si carica l'indicatore viene visualizzata la storia, i nuovi valori non vengono aggiornati, si prega di consigliare qual è l'errore nel ciclo o da qualche altra parte:
//+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ intOnCalculate(constint rates_total, constint prev_calculated, // Количество просчитанных баров constdatetime &time[], constdouble &open[], constdouble &high[], constdouble &low[], constdouble &close[], constlong &tick_volume[], constlong &volume[], constint &spread[]) { int limit; int counted_bars = IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit = Bars - counted_bars - 500; for (int i=limit; i>=0; i--) { Buf_1[i]=iCustom(Symbol(), 0,"ATR", 0, i);//При подстановке любого индикатора нет обновления!!! } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
In una situazione del genere, sto ottenendo un errore - potete aiutarmi a capire perché si verifica un errore - in MQL5 non si può cambiare il valore della variabile di input dell'utente?
'Slippage' - la costante non può essere modificata Kamikadze_MA-may.mq5 67 7
In una situazione del genere, ottengo un errore - potete aiutarmi a capire perché l'errore si verifica - in MQL5 non si può cambiare il valore di una variabile inserita dall'utente?
'Slippage' - la costante non può essere modificata Kamikadze_MA-may.mq5 67 7
Sì, sì, ho già aperto quell'articolo - grazie. Inserita la funzione MarketInfoMQL4, ma il risultato è negativo.... Forse l'ho messo nel posto sbagliato...
-Aleks-: Sì, ho già aperto questo articolo - grazie. Ho incollato la funzione MarketInfoMQL4, ma il risultato è negativo.... Forse l'ho messo nel posto sbagliato...
MarketInfo(Symbol(),MODE_DIGITS) è (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)
Fareste meglio a guardare più a fondo nelle profondità della sostituzione nelle funzioni
Sarà più elegante e vicino a MQL5.
Prendetevi il vostro tempo, insomma.
Non avete bisogno di librerie e funzioni aliene. Dovreste imparare a scrivere in MQL5 puro.
In una situazione del genere, sto ottenendo un errore - potete aiutarmi a capire perché si verifica un errore - in MQL5 non si può cambiare il valore della variabile di input dell'utente?
'Slippage' - la costante non può essere modificata Kamikadze_MA-may.mq5 67 7
Sì, i parametri di ingresso non possono essere modificati. Ad essere onesti, non capisco perché questo valore dovrebbe essere cambiato in base alle citazioni a 3/5 cifre? Si imposta questo valore nei parametri di ingresso. Non si può semplicemente scrivere 100 (se 3/5 cifre) e non preoccuparsi?
MarketInfo(Symbol(),MODE_DIGITS) è (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)
Fareste meglio a guardare più a fondo nelle profondità della sostituzione nelle funzioni
Sarà più elegante e vicino a MQL5.
Prendetevi il vostro tempo, insomma.
Non avete bisogno di librerie e funzioni aliene. Dovreste imparare a scrivere in MQL5 puro.
A proposito, la funzione da MarketInfoMQL4() porta ad un errore - come risolverlo? (imparare due lingue mi farà bollire il cervello - ho bisogno di essere in grado di controllare come funzionano le idee nel mercato azionario senza codifica profonda)
'(' - nome previsto Kamikadze_MA-may.mq5 332 17 '::' - nome previsto Kamikadze_MA-may.mq5 332 17
double MarketInfoMQL4(string symbol, int type) { switch(type) { case MODE_LOW: return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW)); case MODE_HIGH: return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH)); case MODE_TIME: return(SymbolInfoInteger(symbol,SYMBOL_TIME)); case MODE_BID: { MqlTick last_tick; SymbolInfoTick(symbol,last_tick); double Bid=last_tick.bid; return(Bid); } case MODE_ASK: { MqlTick last_tick; SymbolInfoTick(symbol,last_tick); double Ask=last_tick.ask; return(Ask); } case MODE_POINT: return(SymbolInfoDouble(symbol,SYMBOL_POINT)); case MODE_DIGITS: return(SymbolInfoInteger(symbol,SYMBOL_DIGITS)); case MODE_SPREAD: return(SymbolInfoInteger(symbol,SYMBOL_SPREAD)); case MODE_STOPLEVEL: return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL)); case MODE_LOTSIZE: return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE)); case MODE_TICKVALUE: return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE)); case MODE_TICKSIZE: return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE)); case MODE_SWAPLONG: return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG)); case MODE_SWAPSHORT: return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT)); case MODE_STARTING: return(0); case MODE_EXPIRATION: return(0); case MODE_TRADEALLOWED: return(0); case MODE_MINLOT: return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN)); case MODE_LOTSTEP: return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); case MODE_MAXLOT: return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX)); case MODE_SWAPTYPE: return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE)); case MODE_PROFITCALCMODE: return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE)); case MODE_MARGINCALCMODE: return(0); case MODE_MARGININIT: return(0); case MODE_MARGINMAINTENANCE: return(0); case MODE_MARGINHEDGED: return(0); case MODE_MARGINREQUIRED: return(0); case MODE_FREEZELEVEL: return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));
5 sterline per una risposta?
)
In attesa...
Pomeriggio. L'indicatore ha bisogno di ottenere dati da un altro indicatore, quando si carica l'indicatore viene visualizzata la storia, i nuovi valori non vengono aggiornati, si prega di consigliare qual è l'errore nel ciclo o da qualche altra parte:
//| 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[])
{
int limit;
int counted_bars = IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = Bars - counted_bars - 500;
for (int i=limit; i>=0; i--)
{
Buf_1[i]=iCustom(Symbol(), 0,"ATR", 0, i);//При подстановке любого индикатора нет обновления!!!
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
In una situazione del genere, sto ottenendo un errore - potete aiutarmi a capire perché si verifica un errore - in MQL5 non si può cambiare il valore della variabile di input dell'utente?
'Slippage' - la costante non può essere modificata Kamikadze_MA-may.mq5 67 7
extern int Slippage = 10; // Проскальзывание
int init()
{
//3,5 знаков
if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
{
Slippage*=10;
}
return(INIT_SUCCEEDED);
}
}
In una situazione del genere, ottengo un errore - potete aiutarmi a capire perché l'errore si verifica - in MQL5 non si può cambiare il valore di una variabile inserita dall'utente?
'Slippage' - la costante non può essere modificata Kamikadze_MA-may.mq5 67 7
extern int Slippage = 10; // Проскальзывание
int init()
{
//3,5 знаков
if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
{
Slippage*=10;
}
return(INIT_SUCCEEDED);
}
}
Non esiste una cosa del genere nel 5
MarketInfo
Non conosco lo Slippage)
Questo non è nel 5pc.
MarketInfo
Che diavolo - perché non lo mette negli errori...
Che tipo di analogico dovrei usare?
Oh, che palle - perché non lo mette in errore...
Che tipo di analogico dovrei usare?
Questo stesso thread lo scorso fine settimana parlava di passare al 5-circa.
Dal mio post e indietro leggere tutti i post su 2-3 pagine
https://www.mql5.com/ru/forum/6343/page662#comment_2930149
Lo stesso thread dello scorso fine settimana riguardava il passaggio a 5k.
Dal mio post e indietro leggere tutti i post su 2-3 pagine
https://www.mql5.com/ru/forum/6343/page662#comment_2930149
Sì, ho già aperto questo articolo - grazie. Ho incollato la funzione MarketInfoMQL4, ma il risultato è negativo.... Forse l'ho messo nel posto sbagliato...
MarketInfo(Symbol(),MODE_DIGITS) è (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)
Fareste meglio a guardare più a fondo nelle profondità della sostituzione nelle funzioni
Sarà più elegante e vicino a MQL5.
Prendetevi il vostro tempo, insomma.
Non avete bisogno di librerie e funzioni aliene. Dovreste imparare a scrivere in MQL5 puro.
In una situazione del genere, sto ottenendo un errore - potete aiutarmi a capire perché si verifica un errore - in MQL5 non si può cambiare il valore della variabile di input dell'utente?
'Slippage' - la costante non può essere modificata Kamikadze_MA-may.mq5 67 7
extern int Slippage = 10; // Проскальзывание
int init()
{
//3,5 знаков
if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
{
Slippage*=10;
}
return(INIT_SUCCEEDED);
}
}
MarketInfo(Symbol(),MODE_DIGITS) è (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)
Fareste meglio a guardare più a fondo nelle profondità della sostituzione nelle funzioni
Sarà più elegante e vicino a MQL5.
Prendetevi il vostro tempo, insomma.
Non avete bisogno di librerie e funzioni aliene. Dovreste imparare a scrivere in MQL5 puro.
A proposito, la funzione da MarketInfoMQL4() porta ad un errore - come risolverlo? (imparare due lingue mi farà bollire il cervello - ho bisogno di essere in grado di controllare come funzionano le idee nel mercato azionario senza codifica profonda)
'(' - nome previsto Kamikadze_MA-may.mq5 332 17
'::' - nome previsto Kamikadze_MA-may.mq5 332 17
double MarketInfoMQL4(string symbol,
int type)
{
switch(type)
{
case MODE_LOW:
return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
case MODE_HIGH:
return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
case MODE_TIME:
return(SymbolInfoInteger(symbol,SYMBOL_TIME));
case MODE_BID:
{
MqlTick last_tick;
SymbolInfoTick(symbol,last_tick);
double Bid=last_tick.bid;
return(Bid);
}
case MODE_ASK:
{
MqlTick last_tick;
SymbolInfoTick(symbol,last_tick);
double Ask=last_tick.ask;
return(Ask);
}
case MODE_POINT:
return(SymbolInfoDouble(symbol,SYMBOL_POINT));
case MODE_DIGITS:
return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
case MODE_SPREAD:
return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
case MODE_STOPLEVEL:
return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
case MODE_LOTSIZE:
return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
case MODE_TICKVALUE:
return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
case MODE_TICKSIZE:
return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
case MODE_SWAPLONG:
return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
case MODE_SWAPSHORT:
return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
case MODE_STARTING:
return(0);
case MODE_EXPIRATION:
return(0);
case MODE_TRADEALLOWED:
return(0);
case MODE_MINLOT:
return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
case MODE_LOTSTEP:
return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
case MODE_MAXLOT:
return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
case MODE_SWAPTYPE:
return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
case MODE_PROFITCALCMODE:
return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
case MODE_MARGINCALCMODE:
return(0);
case MODE_MARGININIT:
return(0);
case MODE_MARGINMAINTENANCE:
return(0);
case MODE_MARGINHEDGED:
return(0);
case MODE_MARGINREQUIRED:
return(0);
case MODE_FREEZELEVEL:
return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));
default: return(0);
}
return(0);
}