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

 
STARIJ:
hai un riassunto

Grazie! L'ho controllato e l'ho aggiustato! Ora funziona.

 
Artyom Trishkin:
L'ordine viene selezionato per biglietto, e poi, dopo un chilometro di codice, si cerca di modificarlo. Ma potrebbe essere già chiuso in quel momento.

Se l'ordine è stato chiuso, allora OrdersTotal()==0;; rispettivamente, la OrderModify() non avverrebbe affatto.

 
ijonhson:

Se l'ordine fosse chiuso, allora OrdersTotal()==0; rispettivamente, OrderModify() non avrebbe luogo affatto

Prima si controlla la quantità, poi si controlla un sacco di codice dove la posizione potrebbe aver chiuso (ma si sta già gestendo una condizione di quantità maggiore di zero), e poi si seleziona e si modifica quella chiusa.
 

Gli ordini possono essere chiusi 0,01 lotti alla volta se l'ordine è un lotto di 0,59 per esempio. Sorge una domanda. È possibile combinare due ordini in uno? Per esempio, un ordine con il lotto 0.01 e vuoi aprire un altro ordine con lotto 0.02. Si possono combinare con lotti da 0,03 per evitare l'accumulo di ordini, e se sì, come?

 
installare la rete MT5
 
Taras Slobodyanik:
installare la rete MT5

non esiste una cosa del genere in MT4?

 

Salve di nuovo a tutti.


Con tutto il rispetto per i rettangoli incontaminati.


Non capisco - perché modifica felicemente gli ordini di vendita, ma ignora la modifica degli ordini di acquisto anche quando si usano tamburelli di incenso e altri strumenti di ottimizzazione irrazionale.


se (biglietto>0)

{

//impostare uno stop loss e un take profit per un ordine di acquisto//

se(OrderSelect (biglietto, SELECT_BY_TICKET, MODE_TRADES))

{

doppio sl, tp;

se (tipo==OP_BUY)

{

sl=OrderOpenPrice () - (StopLoss*_Point);

sl=NormalizeDouble (sl,_Digits);

tp=OrderOpenPrice () + (TakeProfit*_Point);

tp=NormalizeDouble (tp,_Digits);

}

se (tipo==OP_SELL)

{

sl=OrderOpenPrice () + (StopLoss*_Point);

sl=NormalizeDouble (sl,_Digits);

tp=OrderOpenPrice () - (TakeProfit*_Point);

tp=NormalizeDouble (tp,_Digits);

}

bool mod = false;

int count=0;

mentre (!mod)

{

mod=OrderModify (ticket, OrderOpenPrice (), sl, tp, 0, clrYellow);

count++;

se (count>=100)

{

mod=true;

pausa;

 

L'ho capito !!!!!

 

Per favore aiutatemi, sto imparando, se ZZ da un buffer è stato chiamato da un buffer e ZZ da due buffer, come devo scriverlo correttamente?

// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка

Non lo sto scrivendo correttamente, come dovrebbe essere scritto? Grazie

 

Non ha catturato il pezzo in alto, ha più senso così. Per favore, ditemi l'errore.