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

 
Sysmart:

Domanda sui test (vedi foto del tester)

- apriamo un ordine Sell (freccia verde nell'immagine), ha un Take Profit di 1.10439;

- aggiungiamo un ordine pendente Sell Stop (freccia gialla nell'immagine) con il prezzo 1,10441;

La domanda è perché l'ordine Take Profit non è scattato a 1.10439 e il Sell Stop (freccia rossa) a 1.10441?

Quando compri a 1.3000, compri in modo costoso al cattivo prezzo 1.3003 (per esempio), quando chiudi la posizione hai impostato il TP per vendere a 1.2020, il tuo trade si chiuderà ad un prezzo dove il Bid è a 1.2017 e l'Ask a 1.2020, cioè paghi 2 volte lo spread per gestire la tua posizione, e la differenza va in tasca all'ufficio. In alternativa puoi fare trading in conti più liquidi come NDB (5 cifre)

 
novichok2018:
Ciao, la mia domanda è fuori tema, ma non so dove farla se voglio avere una risposta davvero competente. Google non ha aiutato. La domanda è: oggi l'indice DAX30 ha improvvisamente iniziato a scambiare non alle 9:00, ma alle 2:15. Da nessuna parte, anche sul sito della Borsa di Francoforte non ho trovato alcuna spiegazione o avviso. Forse qualcuno è più informato e può darmi un suggerimento su dove trovare le informazioni?

Bene, visto che nessuno è a conoscenza di questo problema, allora per favore consigliate come legare l'inizio dell'EA all'inizio del trading su un simbolo. In questo momento ho un semplice collegamento al tempo: if(Hour()==9) {CODE}. Quindi, quando cambio l'ora di inizio dalle 9:00 alle 2:15, la condizione sulle posizioni di apertura smette di funzionare. E se cambio semplicemente l'ora, non c'è garanzia che l'ora di inizio del trading cambi di nuovo, e non me ne accorgerò.

 
novichok2018:

Bene, visto che nessuno è a conoscenza di questo problema, allora per favore consigliate come legare l'inizio dell'EA all'inizio del trading su un simbolo. In questo momento ho un semplice collegamento al tempo: if(Hour()==9) {CODE}. Quindi, quando cambio l'ora di inizio dalle 9:00 alle 2:15, la condizione sulle posizioni di apertura smette di funzionare. E se cambiamo semplicemente l'ora, non c'è garanzia che l'ora di inizio del trading cambi di nuovo, e non me ne accorgerò.

Cerca nel kodobase.

Ecco il primohttps://www.mql5.com/ru/code/27315

 
Sysmart:

Domanda sui test (vedi foto del tester)

- apriamo un ordine Sell (freccia verde nell'immagine), ha un Take Profit di 1.10439;

- aggiungiamo un ordine pendente Sell Stop (freccia gialla nell'immagine) con il prezzo 1,10441;

La domanda è perché l'ordine Take Profit non è scattato a 1.10439 e il Sell Stop (freccia rossa) a 1.10441?

Ricorda solo che gli ordini di vendita sono aperti al prezzo Bid e chiusi al prezzo Ask, per gli ordini di acquisto è il contrario. Questo è tutto.

 
Igor Makanu:

ricerca per codobase

Ecco il primohttps://www.mql5.com/ru/code/27315

Grazie, naturalmente, ma questo esempio è fuori tema. Abbiamo bisogno di un link all'ora di inizio delle negoziazioni di un particolare strumento o all'ora di inizio della borsa che negozia quello strumento. Non l'ho trovato nel kodobase.

 

Ciao, stavo scrivendo del codice e ho incontrato questo problema.

Il codice funziona se si esclude una linea:

#property strict

Con lo stesso, smette immediatamente di funzionare.

Ecco il frammento di codice stesso dove viene rilevato l'errore:

void manageAlerts()
{
   if (alertsOn)
   {
      if (alertsOnCurrent)
           int whichBars = 0;
           else whichBars = 1; 
         if (arrup[whichBars]  != EMPTY_VALUE) doAlert(whichBars,"up");
         if (arrdwn[whichBars] != EMPTY_VALUE) doAlert(whichBars,"down");
   }
}

Ed ecco i risultati:

'whichBars' - identificatore non dichiarato; linea 7 del frammento

Il 'whichBars' - identificatore non dichiarato; 8 linea del frammento


Come si può rimediare a questo?

 
pykachilo:

Ciao, stavo scrivendo del codice e ho incontrato questo problema.

Il codice funziona se si esclude una linea:

Con lo stesso, smette immediatamente di funzionare.

Ecco il frammento di codice stesso dove viene rilevato l'errore:

Ed ecco i risultati:

'whichBars' - identificatore non dichiarato; linea 7 del frammento

Il 'whichBars' - identificatore non dichiarato; 8 linea del frammento


Come si può rimediare a questo?

whichBars dovrebbe essere definito all'inizio della funzione, non nella condizione.
 

Buon pomeriggio.

Ecco una domanda: nella documentazione sotto "Graphic Event Types" (https://docs.mql4.com/ru/constants/chartconstants/enum_chartevents)
per l'eventoCHARTEVENT_KEYDOWN è definito che il parametro sparam è "Valore stringa della bitmask che descrive lo stato dei pulsanti della tastiera".

Tuttavia, non riesco a trovare informazioni su quali bit sono responsabili di cosa.

Per l'evento CHARTEVENT_MOUSE_MOVE c'è un parametro simile sparam che è un "Valore stringa della bitmask che descrive lo stato dei pulsanti del mouse".
è descritto in dettaglio nella stessa pagina...

Dove posso vedere la documentazione su sparam="valore stringa della bitmask che descrive lo stato dei pulsanti della tastiera" per l'evento CHARTEVENT_KEYDOWN?

Grazie.

Типы событий графика - Константы графиков - Константы, перечисления и структуры - Справочник MQL4
Типы событий графика - Константы графиков - Константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Существуют 9 видов событий, которые можно обрабатывать с помощью функции предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom...
 
Maksims Ignatovs:

Dove posso vedere la documentazione per sparam="string value bitmask che descrive lo stato dei pulsanti della tastiera" per l'evento CHARTEVENT_KEYDOWN?

potete stampare tramite Print(sparam) per i pulsanti desiderati.

Non conosco il tuo compito, ma io stesso preferisco usare lparam, così non devo pensare alla lingua, alla didascalia e ad altre variazioni.

 
Igor Zakharov:

potete stampare tramite Print(sparam) per i pulsanti desiderati.

Non conosco il tuo compito, ma io stesso preferisco usare lparam, così non devo pensare alla lingua, alla didascalia e ad altre variazioni.

Questa è una soluzione interessante per un caso generale. È chiaro che per un tasto particolare, si può passare attraverso tutte le combinazioni possibili (lingua, tappi, ecc.) per vedere cosa succede e anche provare a trarne qualche conclusione,
MA, questo problema dovrebbe essere riflesso nella documentazione. Per gli eventi del mouse è - tutto è disponibile nella documentazione. E la tastiera?

Motivazione: