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

 
Alexey G. Smolyakov:
Il percorso completo della cartella MQL4\Indicators\Used. Sembra che non ci sia modo di uscire dalla cartella. Ma questa è un'anomalia - altri Expert Advisors lavorano con i loro indicatori in cartelle simili senza problemi. Ma qual è il problema con questo indicatore - non lo capisco. Ho dato un'occhiata al suo codice, ma non avevo abbastanza conoscenza ed esperienza per capirlo. Ho il sospetto che conti solo l'ultima barra o qualcosa del genere.

allora tutto è OK

premete Ctrl+D nel terminale - si apre la finestra dei dati, lanciate l 'indicatore sul grafico e vedrete nella finestra dei dati i buffer dell'indicatore e i loro valori su ogni barra, si ottengono le stesse cifre tramite iCustom()

ci sono indicatori che hanno EMPTY_VALUE su alcune barre - vedrete una cella vuota nella finestra dei dati (non è garantito che l'autore dell'indicatore non abbia impostato 0,0 invece di EMPTY_VALUE - dovete controllarlo)

Poi, quando iCustom() viene chiamato, il valore ottenuto deve essere confrontato con EMPTY_VALUE . Cerca nel kodobase o nell'EA ZigZag o nell'upload ZigZag - lì troverai un esempio pronto di come lavorare con i valori vuoti dell'indicatore EMPTY_VALUE

 
Igor Makanu:

allora tutto è OK

premete Ctrl+D nel terminale - si apre la finestra dei dati, lanciate l 'indicatore sul grafico e vedrete nella finestra dei dati i buffer dell'indicatore e i loro valori su ogni barra, si ottengono le stesse cifre tramite iCustom()

ci sono indicatori che hanno EMPTY_VALUE su alcune barre - vedrete una cella vuota nella finestra dei dati (non è garantito che l'autore dell'indicatore non abbia impostato 0,0 invece di EMPTY_VALUE - dovete controllarlo)

Poi, quando iCustom() viene chiamato, il valore ottenuto deve essere confrontato con EMPTY_VALUE . Cerca in kodobase o nell'Expert Advisor su ZigZag o nell'upload di ZigZag in un file - lì vedrai un esempio pronto di come lavorare con i valori vuoti dell'indicatore EMPTY_VALUE

Grazie, controllare i valori di EMPTY_VALUE mi ha aiutato.
 
Buon pomeriggio. Come fare una funzione che mostri ciò che è impostato nelle impostazioni (Solo lungo / Solo corto / Lungo & corto). Ho provato questo, ma non funziona
string LSset()
{
string LS;
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_LONGONLY) LS="ONLY LONG";
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_SHORTONLY) LS="ONLY SHORT";
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) != SYMBOL_TRADE_MODE_SHORTONLY && 
   SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) != SYMBOL_TRADE_MODE_LONGONLY) LS="LONG & SHORT";
return(LS);
}
File:
 
Lomonosov1991:
Buon pomeriggio. Come fare una funzione che mostri ciò che è impostato nelle impostazioni (Solo lungo / Solo corto / Lungo & corto). Ho provato questo, ma non funziona

Non dovrebbe funzionare così. È possibile scrivere una tale funzione, ma difficile per un principiante.

 
fxsaber:

Non dovrebbe funzionare così. È possibile scrivere una tale funzione, ma difficile per un principiante.

regole di ricerca, alcuni anni fa gli sviluppatori hanno promesso di rendere l'accesso da parte di un esperto a queste impostazioni, ma non hanno mai fatto

soluzionehttps://www.mql5.com/ru/forum/121619#comment_3208150

soluzione dll, non so perché ne abbiate bisognohttps://www.mql5.com/ru/forum/231434/page2#comment_6773340

ZS: non ho controllato, ma cerca nei thread, sembra che il problema di non salvare queste impostazioni quando si applica il modello grafico rimanga

LongOnly, ShortOnly or Long&Short?
LongOnly, ShortOnly or Long&Short?
  • 2009.11.03
  • www.mql5.com
Не подсажет ли кто нибудь как внутри советника оределить в каком режиме он запущен LongOnly, ShortOnly or Long&Short? Заранее спасибо...
 
extern int punkt=100;
extern int Ordersss=3;
extern double xxx=1.2;

int PunktsX()
{
   int P=punkt;                             
   int i;
   for(i=Ordersss; i<NumberOfPositions(); i++)
   P*=xxx;
   return(P);
}

Ho fatto una funzione sul consulente di media. se più di 3 ordini sono aperti, ogni ordine successivo sarà aperto ulteriormente.

Non posso correggere l'avviso(possibile perdita di dati a causa della conversione del tipo)

Si prega di consigliare cosa fare)

 
Lomonosov1991:

Ho fatto una funzione sul consulente di media. se più di 3 ordini sono aperti, ogni ordine successivo sarà aperto ulteriormente.

Non posso correggere l'avviso(possibile perdita di dati a causa della conversione del tipo)

Si prega di consigliare cosa fare)

P=(int)(P*xxx);

Per un calcolo più accurato sarebbe probabilmente meglio

extern int punkt=100;
extern int Ordersss=3;
extern double xxx=1.2;

int PunktsX()
{
   double P=punkt;                             
   int i;
   for(i=Ordersss; i<NumberOfPositions(); i++)
   P*=xxx;
   return (int) P;
}
 
Konstantin Nikitin:

Per un calcolo più accurato è probabilmente meglio fare così

Grazie) Non sapevo che si potesse fare con il ritorno)

 
Igor Makanu:

regole di ricerca, qualche anno fa gli sviluppatori avevano promesso di rendere queste impostazioni accessibili da un esperto, ma non l'hanno mai fatto

soluzionehttps://www.mql5.com/ru/forum/121619#comment_3208150

soluzione dll, non so perché sia necessariohttps://www.mql5.com/ru/forum/231434/page2#comment_6773340

ZS: non ho controllato, ma cercando nei thread, sembra che il problema di non salvare queste impostazioni quando si applica il modello grafico rimanga

Grazie, farò una prova)

 
Lomonosov1991:

Lo proverò)

Forum sul trading, sistemi di trading automatico e test di strategia

Biblioteche: Esperto

fxsaber, 2019.06.04 16:40

// MT4-советник показывает, в каком режиме Long/Short был запущен.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
  MqlParam Params[];
  string Names[];
  
  const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
  return(((Res & 3) << 1) + (Res & 1));
}

string LongShortToString( const int Chart_ID = 0 )
{
  const int Flag = GetLongShortFlag(Chart_ID);
  string Str = NULL;
  
  if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY) && (bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Long & Short";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY))
    Str = "Only Long";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Only Short";
    
  return(Str);
}

int OnInit()
{
  Alert(LongShortToString());
  
  return(INIT_FAILED);
}
Motivazione: