[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1044

 
eddy:
No me interesa. Sólo quiero trazar una línea...
Los puntos de la imagen son max min ?
 
No, clozes
 
costy_:

Это для не стандартного подхода, того чего нет в отчете оптимизатора. файл здесь terminal\tester\files

Сохраняйте отчет из "Результаты оптим." сохран как>>


Ahora entiendo cómo salvar algo. Por favor, dígame cómo guardar automáticamente los resultados de la optimización. Básicamente, sólo me importa el drawdown y el beneficio máximos.
 
001:

Ahora entiendo cómo guardar algo que necesito. Por favor, indíqueme cómo guardar automáticamente los resultados de la optimización. En principio, sólo me importa la reducción y el beneficio máximos.

En Deinit, cuenta a través de OrdersHistoryTotal la suma de todos los rentables, no rentables, drawdown, profit y al archivo ;)

Algo así

   for(i=0;i<OrdersHistoryTotal();i++)
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol())
    if(OrderProfit()>=0)
     profit+=OrderProfit();
     else noprof+=OrderProfit();
   прибыль = profit  -  noprof;



 
eddy:
no, cloze.

Sobre lo mismo, en el periodo inferior se puede ver el vector del anterior en el gráfico H1 en la configuración ind H4.

¿Y para qué sirve?

Archivos adjuntos:
maxvekt.mq4  2 kb
 
costy_:

En Deinit, utilice OrdersHistoryTotal para contarla suma de todos los rentables, no rentables, drawdown, profit y archívelo ; )

Algo así




Sí, eso es. Desgraciadamente, este método da datos diferentes a los de la MT. Sólo hay que guardar atómicamente los resultados de la optimización en un archivo y ya está...
 
No entiendo el cálculo. ¿Me lo puedes explicar usando mi dibujo como ejemplo?
 
costy_:

Se desplaza a través de las órdenes abiertas y pendientes por orden de número de posición en la lista, selecciona la que le interesa y obtiene su ticket

y seguir trabajando con el billete.



Si no sabes qué hacer con él, simplemente no sabes qué hacer con él.

¿Por qué tenemos que hacer esto si ya hemos seleccionado el mismo pedido?

O quizás no entiendo algo: ESTE código :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

y esta otra:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

¿hará lo mismo?

 
Aleksandr_8:

Gracias por su respuesta.

¿Por qué tenemos que hacer esto si ya hemos seleccionado el mismo orden?

O tal vez no entiendo algo: ESTE código :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticket buy , SELECT_BY_TICKET, MODE_TRADES); lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

y esta otra:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

¿hará lo mismo?

El código marcado en rojo es redundante, ya que la orden ya ha sido seleccionada y no es necesario seleccionarla de nuevo para procesarla.

 
Aleksandr_8:

Gracias por su respuesta.

¿Por qué tenemos que hacer esto si ya hemos seleccionado el mismo orden?

O tal vez no entiendo algo: ESTE código :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

y esta otra:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

¿hará lo mismo?

En la primera variante, el segundo OrderSelect en ticketbuy, utiliza una segunda comprobación, supongo (si se abre en un pendiente o +1 ordertotal...).

En el post anterior se encontraron correctamente los errores (excepto el verde).

La compra de entradas no está marcada en la segunda. Tenemos que identificar

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
ticketbuy=OrderTicket();
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
Razón de la queja: