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

 
Vadim Podoprigora:

Ciao!

Per favore aiutatemi a scrivere un EA.

L'essenza dell'Expert Advisor: apre 4 ordini di 1 lotto.

2 da vendere: usdchf; eurusd;

2 da comprare: gbpusd; usdjpy;

Una volta raggiunto un profitto totale di 5 pip, chiudi tutti i trade. E ricominciare.

4 lotti in totale?

E se non c'è profitto?

 
Vadim Podoprigora:

Ciao!

Per favore aiutatemi a scrivere un EA.

L'essenza dell'Expert Advisor: apre 4 ordini di 1 lotto.

2 da vendere: usdchf; eurusd;

2 da comprare: gbpusd; usdjpy;

Una volta raggiunto un profitto totale di 5 pip, chiudi tutti i trade. E ricominciare da capo.

Non c'è bisogno di duplicare la tua domanda in diversi thread.

Si prega di contattare Freelance.

 
Andrey Sokolov:

Saluti.

Puoi dirmi come scrivere la condizione in modo che l'azione venga eseguita all'apertura di una nuova candela sul grafico corrente?

https://www.mql5.com/ru/articles/159
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 

Ciao, aiutami a capire gli array!

Ho bisogno di riempire un array con l'indicatore MASD. Da quanto ho capito, ci sono dati: indice della barra, valoreMODE_MAIN, valoreMODE_SIGNAL, cioè l'array dovrebbe essere di tipo tridimensionale ( a [] [] []), o cosa? Se può fare un esempio.

 

Sergey, hai mai usato tu stesso questo codice?

L'articolo è generalmente buono, ma è

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

molto pericoloso. Per farlo funzionare, bisogna, come raccomandato dal batterista, "smanettare" la storia periodicamente. Non ho specificato quale luogo.

In generale, dopo molta sofferenza, ho concluso che è meglio usare la funzione CopyRates()

I messaggi sui possibili errori sono compilati da ognuno di noi, se vogliamo.

bool newBar()
{
static datetime timeLastBar;
  MqlRates mqlRates[];
   int s = 0;
    do
     {
      s++;
     }
    while(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, mqlRates) < 0 && s < 7);
   bool ret = timeLastBar != mqlRates[0].time;
   if(ret)
    timeLastBar = mqlRates[0].time;
   return(ret);
}/*******************************************************************/
 
Alexey Viktorov:

Sergey, hai mai usato tu stesso questo codice?

L'articolo è generalmente buono, ma è

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

molto pericoloso. Per farlo funzionare, bisogna, come raccomandato dal batterista, "smanettare" la storia periodicamente. Quale luogo non è stato specificato.

Alexey, dimmi, quando ti sei imbattuto in errori usandolo? Ne hai mai avuto uno?

Io stesso uso questo metodo e non ho avuto problemi. Beh, forse devo ancora farlo?

Vorrei delle spiegazioni - per così dire... :)

Dove l'ha detto il batterista?

 
Artyom Trishkin:

Alexei, dimmi, quando hai mai incontrato errori con questo uso? L'hai mai fatto?

Io stesso sto usando questo metodo e non ho ancora incontrato alcun problema. Beh, forse devo ancora farlo.

Vorrei delle spiegazioni - per così dire... :)

Dove ha detto una cosa del genere Drubashka?

https://www.mql5.com/ru/forum/89213

Ci sono otto pagine di battibecchi. E non solo drubashka, ma Slawa dice che

Slawa:

Dove vedete un comportamento inadeguato di questa funzione? Avete letto attentamente la documentazione?

Restituisce informazioni sullo stato dei dati storici. Non aggiorna le informazioni, non avvia lo scambio di dati. Restituisce solo quello che c'è al momento.

 
Artyom Trishkin:

Alexei, dimmi, quando hai mai incontrato errori con questo uso? L'hai mai fatto?

Perché io stesso uso questo metodo e non ho ancora incontrato alcun problema. Beh, forse devo ancora farlo.

Vorrei delle spiegazioni - per così dire... :)

Dove l'ha detto il batterista?

Ed ecco il ticchettio.

Vladimir Karputov:
Non ha funzionato su un simbolo in un terminale (su timeframe M15) - sono sicuro al 99% che il problema è che usando un altro timeframe ho bisogno di "sobbalzare" la storia in continuazione. Penso che sia meglio farlo attraverso CopyTime().
Il problema non è risolto dal gatto dal luogo causale.
 
Artyom Trishkin:

Alexei, dimmi, quando hai mai incontrato errori con questo uso? L'hai mai fatto?

Per quanto mi ricordo, potrebbe non restituire ciò che ci si aspetta se il TF è più grande di quello attuale.
 
Ciao, ho una domanda su MT5.

Per esempio, nel terminale MT5 ci sono alcuni Expert Advisors (MACD Sample e Moving Averages), ma se volete cambiare l'handle dell'indicatore nel codice di questi Expert Advisors e mettere un TF specifico, per esempio PERIOD_H4, invece di "_Period", allora nel test dai prezzi aperti del TF superiore, si verifica il seguente errore di caricamento dell'indicatore: cannot load indicator 'MACD' [4805] e come risultato: tester arrestato perché OnInit failed. Quali sono le vostre opinioni? Forse sto facendo qualcosa di sbagliato? È possibile codificare l'Expert Advisor in modo che venga testato per i prezzi aperti di qualsiasi TF?

Ho provato a usare l'indicatore come un indicatore personalizzato, l'errore è lo stesso.

Grazie in anticipo per il vostro feedback.

int OnInit(void)
{
//--- preparare la classe commerciale per controllare le posizioni se la modalità di copertura è attiva
ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
ExtTrade.SetExpertMagicNumber(MA_MAGIC);
ExtTrade.SetMarginMode();
//--- Indicatore della media mobile
ExtHandle=iMA(_Symbol,PERIOD_H4,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
se(ExtHandle==INVALID_HANDLE)
{
printf("Errore nella creazione dell'indicatore MA");
return(INIT_FAILED);
}
//--- ok
return(INIT_SUCCEED);
}