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

 
Artyom Trishkin:

Anche su Windows, le schede non possono essere ordinate con mql4.

Puoi aprire i grafici solo nell'ordine che vuoi e impostare i modelli necessari su di essi.

Naturalmente, non è possibile ordinarli, ma è possibile spostarli manualmente uno per uno.

Per quanto riguarda l'ordinamento tramite mql, penso che tu possa provare la seguente opzione:

1. Chiudiamo tutte le finestre tranne quella in cui è in esecuzione il codice, l'Expert Advisor o lo script.

2. aprire nuove finestre in una certa sequenza, compresa quella con l'Expert Advisor e regolarle o applicare un modello.

3. Infine, cancellate la finestra in cui il codice è in esecuzione.

 
Alexey Viktorov:

Ovviamente non si può ordinare, ma si può spostare manualmente uno alla volta.

Per quanto riguarda l'ordinamento tramite mql, penso che tu possa provare la seguente opzione:

1. Chiudi tutte le finestre tranne quella in cui è in esecuzione il codice, l'Expert Advisor o lo script.

2. aprire nuove finestre in una certa sequenza, compresa quella con l'Expert Advisor e regolarle o applicare un modello.

3. Infine, cancellate la finestra in cui il codice è in esecuzione.

Ci ho già pensato - ci sono una serie di fattori che interferiscono, per esempio - in qualsiasi grafico l'Expert Advisor è in esecuzione
 
Artyom Trishkin:
Ci ho già pensato - ci sono una serie di fattori che interferiscono, per esempio - un EA è in esecuzione su alcuni dei grafici
Allora è probabilmente meglio fare dei modelli di tutti i grafici prima di cancellarli. E dopo l'apertura, applicate questi modelli. Spero che siano pochissimi gli EA che scrivono ora e che non raccolgono gli ordini.
 
Artyom Trishkin:
Ci ho già pensato - ci sono una serie di fattori che interferiscono, per esempio - un Expert Advisor è in esecuzione su uno dei grafici

ChartID

Restituisce l'ID del grafico corrente.

lungoChartID();

Valore restituito

Valore di tipo lungo.

 
Alekseu Fedotov:

ChartID

Restituisce l'ID del grafico corrente.

lungoChartID();

Valore restituito

Valore di tipo lungo.

И? In che modo conoscere il vostro identificatore aiuta a ordinare i grafici aperti, su cui lavorano gli Expert Advisors? :)
 
Artyom Trishkin:
И? In che modo conoscere il tuo ID aiuta a distinguere i grafici aperti su cui lavorano gli EA? :)


Intendo il grafico su cui lavora l'Expert Advisor.

Artyom Trishkin:

Ciho già pensato - ci sono alcuni fattori di confusione, per esempio -in uno dei grafici l'Expert Advisor è in esecuzione
 
Alekseu Fedotov:


Sto parlando del grafico su cui lavora l'EA

Artyom Trishkin:

Ciho già pensato - ci sono una serie di fattori che interferiscono, per esempio -su alcuni dei grafici l'Expert Advisor è in esecuzione
Non vedi alcun problema nel cancellare i grafici esistenti e riaprirli nell'ordine corretto nel caso in cui l'Expert Advisor o gli indicatori siano in esecuzione su alcuni di essi?
Quindi pensa a come lo farai, e vedrai che l'ID e il fatto di saperlo non ti aiuterà.
 
Alekseu Fedotov:


Sto parlando del grafico su cui sta girando l'EA

Artyom Trishkin:

Ci hogià pensato - ci sono una serie di fattori che interferiscono, per esempio - l'EA è in esecuzione su alcuni dei grafici

Capisco che in una cartella di profilo ho bisogno di rinominare i caratteri in una certa sequenza - il ri-salvataggio dei caratteri avviene quando cambio il profilo o chiudo il terminale - quindi è ovvio che ho bisogno di lavorare con i file con un profilo chiuso. Ma tutto questo richiede la chiamata di librerie. È così, credo.
 

Cari utenti del forum!

Ho un'idea per aggiungere una condizione alla funzione di calcolo delvolume della posizione: se l'ultimo ordine ha chiuso con una perdita, il prossimo sarà piazzato con un rapporto aumentato.

L'ho già scritto ma uno dei ritorni non funziona, poi l'altro.

Per favore, consigliatemi cosa sto facendo di sbagliato?

doppio GetLot(int type)

{

if(CountOrdersType(type)==0 || LastOrderTypeLots(type)>Max_Lot)

{

se(!Auto_Lot)return(Start_Lot);

return(AccountBalance()*(Lot_Percents/100)*AccountLeverage()/MarketInfo(Symbol(),MODE_LOTSIZE)); }

{ if(!History)return(Start_Lot);

datetime time=0;double lastlot=0;int lastop=0;double prof=0;

for(int i=OrdersHistoryTotal()-1;i>=0;i--)

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()<=1)

{

if(time<OrderCloseTime()){time=OrderCloseTime();lastlot=OrderLots();lastop=OrderType();prof=OrderProfit();}

}

if(prof < 0 && OrderMagicNumber() == Magic)lot=OrderLots();

return(lot * History_Multiplier); }

return(LastOrderTypeLots(type)*Lot_Multiplier);

}


 
Artyom Trishkin:
Non vedi alcun problema nel cancellare i grafici esistenti e riaprirli nel giusto ordine nel caso in cui tu abbia un EA o degli indicatori in esecuzione su alcuni di essi?
Quindi pensa a come lo farai, e ti renderai conto che l'ID e il fatto che tu lo sappia non ti aiuterà in questo caso.


Riflettere,

Per quanto riguarda la cancellazione

   long Chart_ID = ChartID();
   int i=0,limit=100;
   while(i<limit)
     {
    if(ChartNext(Chart_ID)<0) break;
      ChartClose(ChartNext(Chart_ID));
      i++;
     }
Motivazione: