[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 331

 

Sepulca

allora a colpo d'occhio si può provare questo come nel file allegato. Le modifiche sono accompagnate dal commento "// Modify for Elektronik".


Purtroppo non posso controllare la tua modifica, c'è un errore

Non possoaprire SELL EURUSD 2 a 1,2445 , errore 4109.

E il copione è questo.

File:
reverse.mq4  16 kb
 

Buon pomeriggio.

Potresti dirmi perché il risultato è distorto quando si converte il doppio in int

int init()

{

int sum=(1.3167+0.001)*10000;

Alert (sum);

return(0);

}

Il risultato viene stampato come 13176.

Logicamente dovrebbe essere 13177.

Questo problema appare solo quando si aggiunge. Quando si sottrae

int sum=(1.3167-0.001)*10000;

produce il risultato corretto: 13157

Mi chiedo se aprendo le parentesi

int sum=1.3167*10000+0.001*10000; 

allora lo fa bene. Qual è la differenza?

Grazie in anticipo.

 
GygaByte:

Buon pomeriggio.

Potete dirmi perché quando si converte il doppio in int il risultato è distorto

Scrivere:

int sum=NormalizeDouble((1.3167+0.001)*10000,Digits);
e si leggerà correttamente.
 

Grazie per il suggerimento di Sepulca , l'ho risolto.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 

Grazie per il suggerimento di Sepulca , l'ho risolto.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 
hoz:


Bene, ho nel mio codice una fissazione di quando il valore dell'indicatore è superiore al livello dell'indicatore e inferiore a(il livello dell'indicatore + la deviazione ammissibile, una specie di gap). Qui:

0,1 l'ho preso a caso. Ma le aperture avvengono nel momento sbagliato.

A giudicare dalle tue parole, hai bisogno di confrontare il valore su qualche barra, che è inferiore al livello dell'indicatore con il valore sulla barra zero sopra (livello + spazio) e non viceversa?

Ma se troviamo l'incrocio del valore dell'indicatore sulla barra precedente e il valore sulla barra attuale (attraverso il livello specificato), allora per la barra attuale il valore, e di conseguenza, il prezzo può volare molto lontano e, di conseguenza, questa non è affatto un'opzione. Come fare, allora, per spiegare chiaramente la condizione di cui ho scritto? Ecco uno screenshot che spiega la situazione:

Dalla schermata, devi controllare: se l'RSI sulla prima barra è inferiore al livello e l'RSI sulla barra zero è maggiore o uguale al livello, allora compra. Allo stesso tempo la RSI dovrebbe essere contata ai prezzi di apertura - altrimenti non si possono evitare falsi positivi sulla barra zero. Se vuoi l'RSI ad altri prezzi (prezzi di chiusura, per esempio), allora controlla la seconda e la prima barra di conseguenza.
 
hoz:


Boris, hai il valore tratto dal timeframe 1M. Ed è paragonato non al livello ma a zero. Non capisco perché il valore sarà preso ad ogni tick. Forse non è complicato, ma non ho lavorato con gli indicatori prima e non sembra logico a prima vista.

Di nuovo, se i valori sono presi ad ogni tick, come si fa a confrontare con un livello specifico in modo che ad ogni tick l'esaminatore segua quel livello?

Nel mio caso, per comprare su M5 ho scritto nel modo seguente:

Quii_RSIToUpLimit è il livello dell'indicatore RSI. Ho capito che il periodo per M1 deve essere moltiplicato per 5 per usare il livello su M5, giusto? Allora il periodo sarà 70 e non 14.

Victor, invece di zero, metti il tuo livello in una direzione con un più e nell'altra con un meno! E come con Close sulla barra zero, su quale tick passerà il vostro livello, così darà un segnale! Il periodo di RSI determinerà l'ottimizzazione! In generale, Artem ha ragione! Fate come vi consiglia!
 
abolk:

Scrivilo:

E tutto conterà correttamente.


Corretto, ma come la pratica ha dimostrato - non sempre...

int init()
  {
//----
double bid=NormalizeDouble(Bid,Digits);
double b=NormalizeDouble(0.0005,Digits);
double bid_minus=NormalizeDouble(bid-b,Digits);
double bid_plus=NormalizeDouble(bid+b,Digits);

Alert ("bid= ",bid," bid_minus= ",bid_minus," bid_plus= ",bid_plus, " Bid = ",DoubleToStr(Bid,6));
//----
   return(0);
  }

Se la quinta cifra decimale = 5 (1,xxxx5), il valore è ancora distorto:

Avvisi

la domanda è ancora valida...

P.S. In generale, ho bisogno di assegnare un valore di prezzo a MagicNumber... E digitate MagicNumber - int, qui e provate a convertire con

int MN=NormalizeDouble(Bid*10000,Digits);

Chi altro può darmi consigli?

Grazie.

 

Saluti a tutti! Felice Giorno della Vittoria!

Potete dirmi perché il terminale non si connette, dà il messaggio "Nessuna connessione", anche se c'è un ping. Anche se c'è un ping, in realtà c'è una connessione con il server. Ecco uno screenshot: http://snag.gy/UFNFL.jpg

Test del ping

I dati per la registrazione non vengono creati http://snag.gy/i8cmn.jpg

Non si registra

Questo "Please wait" dura più di un'ora. Di solito dovrebbe essere istantaneo.

Non capisco cosa sto sbagliando. Perché nessuna connessione, se ne ho una, perché ho il ping?

Ho provato M5 allo stesso modo e sono stato registrato, ma M4 non ci riesco, l'ho provato 20 volte.

Per favore consigliatemi, chi lo sa!

 
Buona sera. Potreste dirmi se ci sono degli indicatori del profilo di mercato? E anche una documentazione o una descrizione di come usarli? Almeno i segnali più semplici per entrare nel mercato usando gli indicatori del profilo di mercato?