[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 80

 
drknn:
Forse il valore lì finisce con uno zero e quest'ultimo zero viene semplicemente scartato nel processo di normalizzazione? Scartato perché la voce 0,1 è equivalente a 0,10 e lo zero è meglio scartato?

improbabile, a mano ho guardato il valore della linea al punto dell'ultima barra, non c'era zero... e in alcuni casi il valore è stato esattamente convertito alla 4a cifra, a volte alla 3a. poiché la cifra finale era >5
 
drknn:


Non funziona (restituisce un valore corretto alla stringa, ma la variabile è piena di merda, 3 cifre o 4.

c'è un modo per ottenere correttamente questo valore dalla stringa?

 
NameLess:


Non funziona(( la stringa restituisce un valore corretto ma la variabile è piena di merda, 3 cifre o 4.

C'è un modo per ottenere correttamente il valore dalla stringa?


Puoi fare un dll-case e arrotondare in esso. Ho dovuto fare una cosa del genere per scartare semplicemente la parte frazionaria di un numero. Non capisco un'altra cosa - il codice indicatore è progettato per cinque cifre? A questa domanda probabilmente può rispondere solo uno sviluppatore. O semplicemente fare il proprio indicatore.
 
drknn:

Si può fare un dll e round in esso. Ho dovuto farlo per scartare semplicemente la parte frazionaria di un numero. Quello che non è chiaro qui - il codice indicatore è progettato per cinque cifre? A questa domanda probabilmente può rispondere solo uno sviluppatore. O semplicemente fare il proprio indicatore.

Ho controllato l'iMA e sembra essere ok, ma ad essere onesti non so cosa lo causi.
 
NameLess:

Ho visto iMA e sembra essere ok. ad essere onesti non capisco perché succede. ma lo fa. non ho idea di cosa fare con le dll, potresti almeno mandarmi un link da leggere?


Non ho idea di dove trovare il link per leggere il contenuto della dll-case. Oppure provate a usare MQL4 per mettere il valore in una stringa e fare una funzione che prenda solo X caratteri dalla stringa. Per esempio, prezzo = 1,25254130 - questo valore è stato introdotto nella stringa. La funzione dovrebbe passare attraverso i primi 7 caratteri e restituire esattamente quelli - cioè 1,2525254. Semplicemente mettiamo in loop questo valore in una nuova stringa, stringa per stringa, come una perlina. Poi convertirlo in un doppio e restituirlo dalla subroutine.

Riguardo alla dll - guarda qualcosa del genere su questo forum https://www.mql5.com/ru/forum/124088

 
drknn:


Questo è già un problema - è necessaria almeno una conoscenza superficiale di un linguaggio di programmazione. Oppure provare a prendere il valore in una stringa e fare una funzione che toglie solo X caratteri dalla stringa. Per esempio, prezzo = 1,25254130 - questo valore è stato inserito nella stringa. La funzione dovrebbe passare attraverso i primi 7 caratteri e restituire esattamente quelli - cioè 1,2525254. Semplicemente mettiamo in loop questo valore in una nuova stringa, stringa per stringa, come una perlina. Poi convertirlo in un doppio e restituirlo dalla subroutine.

A proposito della dll - vedere qualcosa di simile su questo forum https://www.mql5.com/ru/forum/124088


lo so, non in profondità, ma per niente in nessun linguaggio)))) sì il metodo è familiare. grazie per il consiglio. non ho mai avuto a che fare con le dll, perché non ho mai fatto programmazione professionalmente.

Ad essere sincero sono confuso, perché il problema non è affatto logico, non posso ottenere un valore dall'indicatore, o meglio posso, ma solo ad una stringa.

 

Per favore consigliate come permettere una singola esecuzione di una condizione in un EA (ad esempio l'apertura di un ordine), piuttosto che ripeterla ad ogni tick. In questo caso, quando si chiude una posizione, l'EA non dovrebbe aprirne una nuova. Ho provato a immaginarlo, ma non funziona come previsto.

extern bool    BUY         = true;
extern int     Magic       = 0;
extern double  Lot         = 0.1;
extern int     takeprofit  = 0;
extern int     stoploss    = 0;
extern int     slippage    = 3; 
double SL,TP;
int init(){
    return(0);
  }
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }

return(0);
}
void OPENORDER(string ord)
{
int error;
 while (true)
 { error=true;
 if (ord=="Buy") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0){BUY = false;}
}
return;
}
Vi ringrazio in anticipo.


 
nemo811:

Per favore consigliate come permettere una singola esecuzione di una condizione in un EA (ad esempio l'apertura di un ordine), piuttosto che ripeterla ad ogni tick. In questo caso, quando si chiude una posizione, l'EA non dovrebbe aprirne una nuova. Ho provato a immaginarlo, ma non funziona come previsto.

Vi ringrazio in anticipo.



Ho risolto questo problema mettendo un flag nella condizione prima di qualsiasi azione (apertura in questo caso); all'interno della condizione, dopo l'apertura di un ordine, il flag cambia il suo valore e, rispettivamente, al prossimo tick il programma non entrerà in questa condizione con l'apertura dell'ordine. Se il processo è automatizzato, allora puoi mettere una funzione che cancelli tutti i flag quando non ci sono posizioni aperte, altrimenti l'EA aprirà l'ordine solo una volta e si dissolverà, perché il flag non cambierà il suo valore
 
NameLess:

Ho risolto questo problema mettendo un flag nella condizione prima di qualsiasi azione (in questo caso, l'apertura), all'interno della condizione dopo l'apertura di un ordine il flag cambia il valore e, rispettivamente, al prossimo tick il programma non entrerà in questa condizione con l'apertura di un ordine. Se il processo è automatizzato, allora è possibile utilizzare una funzione che cancellerebbe tutti i flag al momento di assenza di posizioni aperte, altrimenti l'EA aprirà l'ordine solo una volta e poi svanirà, perché il flag non cambierà il valore

Per favore, mi faccia un esempio. Sto imparando e non ho ancora affrontato il compito di impostare una bandiera. )
 
nemo811:

Per favore, mi faccia un esempio. Sto imparando e non ho ancora affrontato il compito di impostare una bandiera. )

Non sono un professionista, ti sto solo dicendo come ho risolto il problema. Non è un codice piccolo e ti ci vorrà più tempo per capirlo che per avere l'idea da zero)))
Motivazione: