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

 
BeerGod:

Bene, in questo modo seleziona gli ordini secondo i parametri dati.

ad esempio https://www.mql5.com/ru/forum/131859/page3#434221

Funzione NumberOfPositions().

Questa funzione restituisce il numero di posizioni aperte al momento. Una selezione più precisa delle posizioni da contare è specificata da parametri esterni:

  • sy - Nome dello strumento di mercato. Se questo parametro è impostato, la funzione considererà solo le posizioni dello strumento specificato. Il valore predefinito "" significa qualsiasi strumento di mercato. NULL significa lo strumento corrente.
  • op - operazione commerciale, tipo di posizione. Valori validi: OP_BUY, OP_SELL o -1. Il valore predefinito -1 significa qualsiasi posizione.
  • mn - Identificatore di posizione, MagicNumber. Il valore predefinito -1 significa qualsiasi identificatore.


grazie...aggiungerò quel thread del forum ai miei segnalibri. :))
 
Desead:


Il deinit viene chiamato quando elimino il robot dal grafico - non posso tracciare questa condizione in nessun altro modo..... , è probabilmente più facile scrivere uno script separato che rimuova tutti i pendenti rimanenti.

A proposito, un altro pensiero su questo argomento:

Sembra che io abbia risolto il problema della cancellazione degli ordini. Ho calcolato il numero di ordini "necessari" (da rimuovere) in una funzione separata, ho chiamato questa funzione e poi while con una condizione (Totale>0), poi il ciclo di rimozione for(int i=Totale-1;i<=0l; i--), di nuovo calcolando il numero di "necessari", contatore di tentativi di rimozione con un'uscita dawhile quando il livello dato è raggiunto. In questo modo tutto viene cancellato.

Un ciclo infinito può verificarsi qui nel caso in cui uno degli ordini scompaia dopo il momento del conteggio per qualsiasi motivo.


Il conteggio degli ordini è fatto ogni volta dopo che il ciclo for sull'eliminazione di un ordine è stato fatto, il contatore itera mentre con l'uscita dal ciclo conbreak, quando il contatore raggiunge il valore specificato nella variabile esterna, è possibile aggiungere la gestione degli errori prima dell'uscita e l'output del risultato con
Allarme(...)
o
Stampa( ...)
E come qualcuno mi ha consigliato di aggiungere un controllo per la risoluzione degli scambi. Quindi non c'è modo di fare un loop qui.


 
Dimka-novitsek:

Buona giornata!!! Non riesco a trovare una soluzione carina alla situazione. Ecco una tipica impostazione dell 'ordine. Ma se do zero al mio robot nei parametri, cioè niente stop e takeprofits, non funziona niente.

Possiamo anche impostare un if e inserire un ordine con degli zeri per la seconda volta, ma è un po' macchinoso.

Tutto è maturo - a livello dell'arte!!! ;)

E seriamente - imparate a pensare a quello che avete appena scritto. A zero valori di STOPP secondo la vostra formula stoploss e take profit sono uguali al prezzo di apertura di un ordine, il che è IMPOSSIBILE. Avete altre soluzioni (potete usare il vostro cervello??? :))?

 
Dimka-novitsek:

Buona giornata!!! Non riesco a trovare una bella soluzione alla situazione. Ecco una tipica impostazione dell'ordine. Ma se do zero al mio robot nei parametri, cioè niente stop e takeprofits, non funziona niente.

Possiamo anche impostare un if e inserire un ordine con degli zeri per la seconda volta, ma è un po' macchinoso.



if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; 
 
rigonich:


...ti sbagli (non gli hai dato una possibilità): se un uomo non stimola la sua materia grigia, passerà tutta la sua vita "in veranda" - "Dammi un suggerimento, per Dio!" :)))
 
BeerGod:

Bene, in questo modo seleziona gli ordini secondo i parametri dati.

ad esempio https://www.mql5.com/ru/forum/131859/page3#434221

Funzione NumberOfPositions().

Questa funzione restituisce il numero di posizioni aperte al momento. Una selezione più precisa delle posizioni da contare è specificata da parametri esterni:

  • sy - Nome dello strumento di mercato. Se questo parametro è impostato, la funzione considererà solo le posizioni dello strumento specificato. Il valore predefinito "" significa qualsiasi strumento di mercato. NULL significa lo strumento corrente.
  • op - operazione commerciale, tipo di posizione. Valori validi: OP_BUY, OP_SELL o -1. Il valore predefinito di -1 significa qualsiasi posizione.
  • mn - Identificatore di posizione, MagicNumber. Il valore predefinito di -1 significa qualsiasi identificatore.


guardato

Funzione ModifyOrder(). https://forum.mql4.com/ru/38949#434195

ci sono 3 parametri che devono essere inseriti. Due le ho indovinate, la terza no.

Cos'è UseSound nella prossima riga?

----------------------------------------------------

if (UseSound) PlaySound("alert.wav"); break;

 
lottamer:


Lasciatelo lavorare - ho una posizione e uno strumento.

Ma non funziona!

Dice che c'è un errore nel codice

a questo.

---------------------------

int start()

{

//----

se OrdiniTotali()>0

PlaySound ("alert.wav");

//----

ritorno(0);

}

-----------------------------

commette 8 errori!!!


Metti la condizione (quella dopo if) tra parentesi
 
TarasBY:

Hai maturato tutto - a livello artistico!!! ;)

E seriamente - imparate a pensare a quello che avete appena scritto. Se impostiamo zero STOPP secondo la vostra formula, stop loss e take profit sono uguali al prezzo di apertura di un ordine, il che è INACCETTABILE. Avete altre soluzioni (potete usare il vostro cervello??? :))?


:))) oops, posso anche chiarire il seguente punto in "paneuropeo"?

Qual è la differenza tra le funzioni start e void?

 
TarasBY:

...ti sbagli: se la materia grigia di una persona non viene stimolata, passerà tutta la sua vita "in veranda" - "Aiutami, per Dio!" :)))


Probabilmente hai ragione, ma è la mia filosofia di vita - se non è troppo disturbo, aiuta gli altri e loro ti aiuteranno quando ne avrai bisogno. A 55 anni, è difficile cambiare abitudini.

P.S. Questo è anche il mio modo di imparare.

 
lottamer:


:))) oops, posso anche chiarire il seguente punto in "pananamica"?

qual è la differenza tra le funzioni start e void?

Hai preso un colpo a qualcosa che nessuno ha ancora raggiunto: "RACCONTARE IL DITO CON L'ENORME TESTA A CUI È PORTATO"!!!! :)))

il primo è una funzione e il secondo è il tipo di valore che restituisce.

P.S. Sii paziente e leggilo.