[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 24

 
paladin80:
Se volete che con 3 ordini già aperti, il successivo (4, ecc.) si apra con 2 x lotti, allora
Sì, tutto è corretto, ma ho bisogno di mettere tutto nella seconda condizione, queste due condizioni sono accese e spente manualmente if (LotConst_or_not) gd_200 = Lot; (questa è la prima condizione)

else gd_200 = AccountBalance() * RiskPercent / 100.0 / 10000.0; (seconda condizione)

Ora, invece di impostare un lotto di bilanciamento, dovremmo correggere la condizione in cui con 3 ordini aperti i successivi (4, ecc.) si apriranno con 2 lotti. Se ci sono funzioni più semplici.

 
Potete dirmi come chiudere gli ordini pendenti quando scatta un TakeProfit per un ordine a mercato?
 

Buon pomeriggio!

Potete dirmi come leggere una stringa di testo con un certo numero da un file.

In linea di principio, posso usare il seguente codice:

StringSubstr(Text,0,16);

Per esempio leggere i primi 16 caratteri, ma se le linee saranno di lunghezza diversa, e ho bisogno di una corrispondenza

value1=linea 1;

value2=linea 2;

Grazie in anticipo!

 

Per favore, suggerisci un elaboratore di testi gratuito dove puoi spostare una parte del testo su una nuova linea quando lo sostituisci.
Grazie!

 
forexnew:

Buon pomeriggio!

Potete dirmi come leggere una stringa di testo con un certo numero da un file.

In linea di principio posso usare questo codice:

Per esempio leggere i primi 16 caratteri, ma se le stringhe saranno di lunghezze diverse, e ho bisogno di una corrispondenza

value1=linea #1;

value2=linea 2;

Grazie in anticipo!



FileReadString(hwd);
 
artem86:
Potreste consigliarmi come chiudere gli ordini pendenti quando scatta il TakeProfit per un ordine a mercato?

Prendete la funzione Kim isCloseLastPosByTake().

Se restituisce true - il TP si è attivato.

Vedere la funzione stessa su https://www.mql5.com/ru/forum/107476/page21#79908

 
FAQ:

FileReadString(hwd);

In questo caso, dovete prescrivere la lunghezza della stringa da leggere, ad esempio

Str=FileReadString(handle); Symbol1=StringSubstr(Str,0,6); //6 caratteri

Str=FileReadString(handle); Symbol2=StringSubstr(Str,0,6); //6 simboli

E se non conosco la lunghezza della stringa o se varia da una riga all'altra? Cioè ho bisogno di "catturare" il testo dell'intera stringa.

 
forexnew:

In questo caso, dovete prescrivere la lunghezza della stringa da leggere, ad esempio

Str=FileReadString(handle); Symbol1=StringSubstr(Str,0,6); //6 caratteri

Str=FileReadString(handle); Symbol2=StringSubstr(Str,0,6); //6 simboli

E se non conosco la lunghezza della stringa o se varia da una riga all'altra? Cioè ho bisogno di "catturare" il testo dell'intera stringa.


Onestamente, non sono sicuro di quale sia il problema...
Puoi sempre controllare la "lunghezza della linea":

int StringLen( string text) 
Возвращает число символов в строке
 
atztek:

Ad essere onesti, non sono sicuro di quale sia il problema...
Puoi sempre controllare la "lunghezza della linea":

Grazie! Funziona.
 

Guarda attentamente il formato della mia voce, non ho specificato una lunghezza di riga lì, poi leggi la descrizione, di nuovo attentamente:

string FileReadString(int handle, int length=0)
La funzione legge una stringa dalla posizione corrente del file. Si applica sia ai file CSV che a quelli binari. Per i file di testo, la stringa sarà letta prima del separatore. Per i file binari, un numero specificato di caratteri sarà letto nella stringa.
Per ottenere informazioni sugli errori, chiamate la funzione GetLastError().
Parametri:
maniglia-Descrittore di file restituito da FileOpen().
lunghezza-Numero di caratteri da leggere.
Esempio:
 int handle; string str; handle=FileOpen("filename.csv", FILE_CSV|FILE_READ);// if(handle>0) { str=FileReadString(handle);//allora questa funzione leggerà fino alla fine della stringa
FileClose(handle);

}


Motivazione: