Il grande e terribile MT4 per sempre (o come strategizzare una transizione) - pagina 26

 
fxsaber:

Probabilmente non c'è questa bandiera all'interno.

A quanto pare no.

ma penso che MQ potrebbe farne uno, soprattutto perché sarebbe una bandiera per terminale, cioè per tutti i programmi.

 
Artyom Trishkin:
Probabilmente lo proporrò. Ma molto più tardi. A causa di circostanze soggettive. Purtroppo. Nel frattempo, si consideri un demagogo. Non vietato.

È ancora rilevante? Sarà la vostra versione della soluzione?

 
Igor Makanu:

È ancora rilevante? Sarà la vostra versione della soluzione?

Hai citato il mio post, che diceva "molto più tardi". Per me, "molto più tardi" significa non prima di un anno almeno. Non perché questo sia il tempo necessario per trovare una soluzione, ma semplicemente a causa di circostanze soggettive, purtroppo.

 
Artyom Trishkin:

non lo sarà per almeno un anno.

Ok, quindi non è rilevante.

 
Probabilmente si può ancora pensare a problemi che sono semplici nelle loro condizioni, e le cui soluzioni causano difficoltà inaspettate.
 
fxsaber:
Probabilmente si può ancora arrivare a problemi semplici, la cui soluzione causa difficoltà inaspettate.

Lo script monitora l'eccesso di rischio: se il numero totale di posizioni e ordini pendenti supera i due - segnalalo e esci.


Codice conciso:

void OnStart()
{
  while (!IsStopped())
    if ((PositionsTotal() + OrdersTotal() > 2)) // Если (риск превышен) число отложек/позиций больше двух,
    {
      Alert("Risk exceeded!");                  // сообщаем      
      ExpertRemove();                           // и выходим.
    }
}


Guardiamo il comportamento dello script a seconda delle azioni manuali. Prima di farlo (prima di eseguire lo script), segniamo il numero di posizioni sul conto PosTotal, ordini - OrdTotal.

Script PosTotal/OrdTotal Azione Risultato dello script
01 0/0 Aprire una posizione. Opere.
02 0/0 Collocare una posizione in sospeso. Funziona.
03 0/1 Mette in attesa un' attesa. 03 0/1 Mettere in pausa.
04 0/1 Aprire una posizione. Allarme (non sempre).
05 0/1 Cancella una posizione in sospeso. Opere.
06 1/0 Mettere un ordine in sospeso. Opere.
07 1/0 Apertura di una posizione. Allarme (non sempre).
08 1/0 Chiudere la posizione. Lavorare.
09 1/1 Cancellare una posizione in sospeso. Lavorare.
10 1/1 Chiudere una posizione. Allarme.
11 0/2 Cancella una posizione in sospeso. Lavorare.
12 2/0 Chiudere una posizione. Allarme.


Sembra un compito molto semplice, ma avverte. Quali sono le varianti di soluzione?


Probabilmente, dovremmo lavorare su compiti così semplici e sviluppare la nostra comprensione di MT5.

 
fxsaber:

Lo script controlla l'eccesso di rischio: se il totale delle posizioni e degli ordini pendenti supera i due - segnalalo e esci.


Codice conciso:


Guardiamo il comportamento dello script a seconda delle azioni manuali. Prima di farlo (prima di eseguire lo script) segniamo il numero di posizioni sul conto PosTotal, ordini - OrdTotal.

Script PosTotal/OrdTotal Azione Risultato dello script
01 0/0 Aprire una posizione. Opere.
02 0/0 Collocare una posizione in sospeso. Funziona.
03 0/1 Mette in attesa un' attesa. 03 0/1 Mettere in pausa.
04 0/1 Aprire una posizione. Allarme (non sempre).
05 0/1 Cancella una posizione in sospeso. Opere.
06 1/0 Mettere un ordine in sospeso. Opere.
07 1/0 Apertura di una posizione. Allarme (non sempre).
08 1/0 Chiudere la posizione. Lavorare.
09 1/1 Cancellare una posizione in sospeso. Lavorare.
10 1/1 Chiudere una posizione. Allarme.
11 0/2 Cancella una posizione in sospeso. Lavorare.
12 2/0 Chiudere una posizione. Allarme.


Sembra un compito molto semplice, ma avverte. Quali sono le varianti di soluzione?


Probabilmente, è su compiti semplici come questo che dovremmo lavorare sulla nostra comprensione di MT5.

Cosa c'entra l'MQ5? La condizione di uscita dal ciclo: IsStopped e non più di due ordini. Allora lo script funziona, e se la condizione non funziona, funziona anche lo script.

 
Алексей Тарабанов:

Cosa ha a che fare questo con MQ5? Condizione per uscire dal ciclo: IsStopped e non più di due ordini. Allora lo script funziona, e se la condizione non funziona, funziona anche lo script.

Il codice contiene persino dei commenti.

 
fxsaber:

Lo script controlla l'eccesso di rischio: se il numero totale di posizioni e di ordini pendenti supera i due - segnalalo e esci.

Un codice conciso:


Sembra un compito molto semplice, ma avverte. Quali sono le varianti di soluzione?


Probabilmente questo è il tipo di compiti semplici che dovremmo usare per sviluppare la nostra comprensione di MT5.

Penso di dover fare qualcosa del genere:

void OnStart()
{
   while (!IsStopped())
   {
      //--- посчитаем ордера
      int orders = 0;
      for(int i = 0; i < OrdersTotal(); i++)
         if(OrderGetTicket(i) > 0 && OrderGetInteger(ORDER_TYPE) < ORDER_TYPE_CLOSE_BY) orders++;
      
      if(orders + PositionsTotal() > 2) break;     // выходим
   }
   if(!_StopFlag) Alert("Risk exceeded!");         // сообщаем
}
 
Igor Makanu:

Probabilmente qualcosa del genere deve essere fatto:

Certamente bisogna filtrare gli ordini. Non è una cosa facile da fare.

ZS È una situazione interessante sul forum. Risposte attive alle domande. Qui è diverso, a quanto pare.
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2016.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...