[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 898

 
Dimka-novitsek:
Stessa situazione.
Mostra il codice
 
arvis:
Come posso impostare l'indicatore per contare il profitto in pip da un certo momento in MT4?

Se volete che sia basato sul tempo, è così che sarà quando il prezzo chiude, e se volete che conti i punti dalle 21:00, allora dovete giocare con il tempo e non c'è niente di complicato.

 double Profit; // или double Profit = 0;

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2);
CurrCl = iClose(Symbol(), 0, 1);

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}
 

Per favore, consigliate come rendere corretto il seguente codice:

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

Per poter fare così:

if (LastOpenOrder - Bid >= 25 * Point) CloseOrder;

Cioè chiudere solo quest'ultimo ordine aperto, non toccare gli altri!

Grazie in anticipo.

 

Come posso scrivere correttamente nel mio EA e ottenere il risultato dell'indicatore?

double ROC = iCustom(NULL,0, "ROC",12,0,0); - nessuna uscita di dati.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0); - i dati non vengono stampati.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0,0); - i dati non vengono stampati.

Indicatore: https://www.mql5.com/ru/code/9340

 
DhP:

Come posso scrivere correttamente nel mio EA e ottenere il risultato dell'indicatore?

double ROC = iCustom(NULL,0, "ROC",12,0,0); - nessuna uscita di dati.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0); - i dati non vengono stampati.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0,0); - i dati non vengono stampati.

Indicatore: https://www.mql5.com/ru/code/9340

Il modo corretto sarebbe questo:

double ROC = iCustom(NULL,0,"ROC",0,0);

ma non riesco a capire cosa ci vuoi fare. beh, forse non ho bisogno di capirlo )

 
belck:

Se vuoi usare il tempo, questo è come sarà quando il prezzo si chiude, e se vuoi usare le 21:00, allora devi giocare con il tempo e non c'è niente di complicato.


Grazie per l'aiuto, Belck.

Dimmi, come puoi calcolare lo stesso importo di profitto in pip, se fai trading su diverse coppie? Inoltre, bisogna tener conto degli affari chiusi.

 
arvis:


Grazie per il tuo aiuto, Belck.

Dimmi, come posso calcolare lo stesso profitto in pip se faccio trading su diverse coppie? Inoltre, devo prendere in considerazione anche gli scambi chiusi.

È difficile per me rispondere a questa domanda.

Ma posso dire una cosa che tutto questo dovrebbe essere chiamato.

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2); // то тут указываете какая валютная пара и по желанию период : PrevCl = iClose("EURUSD", PERIOD_H1, 2);
CurrCl = iClose(Symbol(), 0, 1); // тут так же

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}

il prezzo dell'ultimo ordine aperto si chiama così:

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 
Tutto è più o meno chiaro. Grazie mille per il tuo tempo, Belck.
 
arvis:


Grazie per l'aiuto, Belck.

Come faccio a calcolare lo stesso profitto in pip se faccio trading su diverse coppie? Ho già iniziato a farlo in questo modo, ma non sono sicuro di come farlo.

Ho iniziato a farlo in questo modo, ma ora capisco che mi sono confuso:

double LastOpenPriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

и

double LastClosePriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderClosePrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 

Questo è il criterio che mi lascia perplesso:

- Se c'era più di un ordine chiuso, il loro numero totale di pip redditizi dovrebbe essere contato, ma sono i pip che dovrebbero essere contati.

Si prega di consigliare come procedere correttamente in questo codice:

LastBuyPrice = FindLastBuyPrice();     

if (Ask - LastBuyPrice >= 25 * Point) {
      for (int l_pos_16 = OrdersTotal()  - 1; l_pos_16 >= 0; l_pos_16--) {
 OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         CloseThisSymbolAll();
         Print("Closed All due to Stop Out");
         }
       }
     }


double FindLastBuyPrice() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}