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

 
makssub #:

È l'ultima, non la penultima(


Guarda cosa hai scritto:

"Se il prezzo scende e viene aperto un altro ordine, l'ordine con il massimo OrderOpenPrice diventa il penultimo ordine. "

Questa funzione cerca il prezzo massimo o minimo aperto.

Se vuoi solo il penultimo, è meglio che ti ricordi il biglietto quando si apre.

 
MakarFX #:

Guarda cosa hai scritto:

"Se il prezzo scende e un altro ordine viene aperto, l'ordine con il massimo OrderOpenPrice è il penultimo ordine. "

Questa funzione cerca il prezzo massimo o minimo aperto.

Se vuoi solo il penultimo, è meglio che ti ricordi il biglietto quando si apre.

Mi scuso, a volte non mi esprimo molto chiaramente.

L'ho già fatto per tick e per tempo, ma nelle fluttuazioni, quando il prezzo può salire e poi scendere, può non essere il penultimo. Queste varianti sono già state elaborate. Quindi il prezzo di apertura è l'opzione migliore. O un mucchio di funzioni che ricontrolleranno tutto, e lì sono sicuro che mi confonderò molto. Non ho molto tempo per tenere tutto nella mia testa.

Ho scritto prima sul penultimo e ha ceduto. Un problema, non ha distinto tra OP_SELL e OP_BUY. Quando appare il secondo, inizia a contarlo (

 
makssub #:

Mi scuso, a volte non mi esprimo molto chiaramente.

Ho già fatto sul tick, e in tempo, ma in una fluttuazione, quando il prezzo può andare su, poi giù, può non essere il penultimo. Queste varianti sono già state elaborate. Quindi il prezzo di apertura è l'opzione migliore. O un mucchio di funzioni che ricontrolleranno tutto, e lì sono sicuro che mi confonderò molto. Non ho molto tempo per tenere tutto nella mia testa.

Ho scritto prima sul penultimo e ha ceduto. Un problema, non ha distinto tra OP_SELL e OP_BUY. Quando ottengo il secondo, inizia a contarlo (

Scrivi semplicemente quello che hai bisogno di trovare (se è successo, hai bisogno di ottenerlo)...perché sono già confuso anch'io

 
MakarFX #:

Scrivi semplicemente quello che hai bisogno di trovare (se è successo, hai bisogno di ottenerlo)...perché sono già confuso anch'io

Ho evidenziato quale prezzo d'ordine dovete trovare

Non è difficile se non c'è OP_BUY. Se appare OP_BUY, il mio codice non funziona(

double FindPenultSellPrice()
{
   double  UpPrice = DBL_MAX, profit = 0;
   int    i;
   for(i = OrdersTotal()-2; i >=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            if ( OrderOpenPrice() < UpPrice)
            {
               UpPrice = OrderOpenPrice();
            }
         }
      }
   }
   return(UpPrice);
}
 
MakarFX #:

Scrivi semplicemente quello che hai bisogno di trovare (se è successo, devi ottenerlo)... sono già confuso anch'io

Non è il penultimo ordine per tempo, è il penultimo ordine per prezzo se il prezzo è andato nella direzione opposta. Alexei ha scritto correttamente, dovremmo cercare per prezzo. Non dobbiamo cambiare i valori di quelli massimi o minimi.

Zy. Avrei ricordato l'ultimo ordine (è una griglia) e messo il penultimo nella mia variabile. L'algoritmo dovrebbe essere raffinato solo se si sale di uno e si scende immediatamente di uno e ancora su di uno e subito giù di uno)))) Se due ordini vanno in una direzione, allora dobbiamo ricordare il biglietto del penultimo e dell'ultimo ordine, per sicurezza. Se si apre un terzo ordine, il biglietto del penultimo ordine è uguale all'ultimo e il biglietto dell'ultimo ordine è uguale al terzo.

 
makssub #:

Evidenziato in colore quale prezzo d'ordine trovare

Non è difficile se non c'è OP_BUY. Se appare OP_BUY, il mio codice non funziona(

Prova in questo modo

//+------------------------------------------------------------------+
//|  Функция возвращает по символу и магику                          |
//|  1 - размер лота последней позиции                               |
//|  2 - цена последней открытой позиции                             |
//|  3 - время последней открытой позиции                            |
//+------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0,f=0;
   
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderOpenTime(); l=OrderLots(); p=OrderOpenPrice();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }
//+------------------------------------------------------------------+
double FindOpenPrice()
  {
   double AbsPoint=DBL_MAX;
   double openprice=0;
   
   for(int pos=OrdersTotal()-2;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(AbsPoint>MathAbs(OrderOpenPrice()-GetInfoLastPos(2)))
                 {
                  AbsPoint=MathAbs(OrderOpenPrice()-GetInfoLastPos(2));
                  openprice = OrderOpenPrice();
                 }
              }
           }
        }
     }
   return(openprice);
  }
//+------------------------------------------------------------------+
 
MakarFX #:

Prova questo.

Grazie per il vostro duro lavoro.

C'è una sfumatura) Si trova in alto, segnato in rosso. Per OP_SELL è in basso, segnato in blu. E lasciate che vi dica subito che non ho controllato come conterà se appare OP_BUY.

 
makssub #:

Grazie per il vostro duro lavoro.

C'è una sfumatura) Si trova in alto, segnata in rosso. Per OP_SELL deve essere in basso, segnato in blu. E devo dire subito che non sapevo come funziona se appare OP_BUY.

Sopra c'è il più vicino!

Ho chiesto di scrivere ciò che si deve trovare e si danno alcune porzioni.

Per esempio, ho bisogno di: "Se si è aperto un Sell, dovrei trovare il Sell più vicino dall'alto... ecc.

P.S. Cosa hai segnato in rosso? Non vedo 0_o
 
MakarFX #:

Quello in alto è il più vicino!

Ti ho chiesto di scrivere quello che devi trovare, ma tu dai alcune porzioni...

Per esempio ho bisogno di: "Se si è aperto un Sell, allora devi trovare il Sell più vicino dall'alto... ecc.

P.S. Cosa hai segnato in rosso? non vedo 0_o

Succede anche a me. Penso una cosa e ne scrivo un'altra. Non attento Scusa) Su rosso me stesso in shock)

 
makssub #:

Succede anche a me. Penso una cosa e ne scrivo un'altra. Non sto facendo attenzione, scusate, sono scioccato da quello rosso).

Quindi cosa vuoi?).
Motivazione: