Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 559

 
akarustam:

Aquí están las maravillas de la prueba de un programa EA en MT5 (ver imagen-archivo)... ¿Puede haber eqividad positiva con un saldo negativo? y cuando el saldo es negativo? Antes de pasarme a Trading Nation cambié mucho de opinión y nunca llegué a hacerlo... Creo que es hora de dormir un poco)

Si alguien está interesado en el código abierto y en el set, que me avise. - Sin duda, lo publicaré. He comenzado a dominar MT5 con la cobertura y ahora, - milagros, sin embargo)

No hay milagros. Tengo una posición abierta con un gran superávit y una posición cerrada con una pérdida que supera mi saldo. No estoy perdiendo porque tengo fondos suficientes para mantener una posición abierta.
 
Artyom Trishkin:
No hay milagros. Hay posiciones abiertas con un gran superávit, y hay una posición cerrada con una pérdida mayor que el tamaño del balance. No hay ningún inconveniente porque hay fondos suficientes para mantener las posiciones abiertas.
Es así de sencillo... ¡GRACIAS!
 

Por favor, pueden decirme cuál es mi error.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

La fecha de la matriz OpenSellTime no se imprime y no la segunda parte de la expresión - PriceOpenSell.

Y, no puedo encontrar sobre los comandosprintf como%G y%d.

 

Buenas tardes a todos)

Esta es una pregunta para un tonto en programación...

Estoy intentando compilar un EA para una nueva compilación. El compilador me da muchos errores diferentes...

Aquí está uno de ellos

if(oppositedelete){delete( OP_SELLSTOP);delete( OP_SELLLIMIT);}

Hay 2 errores marcados en rojo en este fragmento de código:'(' - puntero de objeto esperado

Habiendo leído un poco sobre el tema del error, entendí que el nombre está reservado y debo reemplazarlo...

Así que la pregunta es con qué sustituirlo.

 
Anton Razmyslov:

Buenas tardes a todos)

Esta es una pregunta para un tonto en programación...

Estoy intentando compilar un EA para una nueva compilación y el compilador me da muchos errores diferentes...

Aquí está uno de ellos

if(oppositedelete){delete( OP_SELLSTOP);delete( OP_SELLLIMIT);}

Hay 2 errores marcados en rojo en este fragmento de código:'(' - puntero de objeto esperado

Habiendo leído un poco sobre el tema del error, entendí que el nombre está reservado y debo reemplazarlo...

Así que la pregunta es con qué sustituirlo.

A lo que se te ocurra. Por ejemplo _borrar o borrar_1294_765_1912 o sólo Napoleón
 

Hay esta línea en el código

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

¿Por qué recibo este texto en la salida?

OpenSellTime - 2015.12.01 11:15

donde ";" y la segunda parte es"PriceOpenSell"?

 
-Aleks-:

Hay esta línea en el código

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

¿Por qué recibo este texto en la salida?

OpenSellTime - 2015.12.01 11:15

¿dónde está el ";" y la segunda parte"PriceOpenSell"?

eliminado ";" - trabajado.

La pregunta sobre printf sigue siendo...

 

¿Cómo puedo enviar correctamente una solicitud de cierre de una posición de contador?

Si cierro como antes, al contrario, se laca ))

Ya he intentado todo, todavía da error 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 falló el cierre de la posición #64 comprar 0,81 EURUSD por la posición #0 [Solicitud no válida]

¿Qué campos hay que rellenar y cuáles no? Supongo que no importa si la posición abierta es corta o larga.

//+------------------------------------------------------------------+
//| Закрытие  позиции по типу                                        |
//+------------------------------------------------------------------+
void PositionClose(double lot, int P_type,long id)
  {
Print("Вход в функцию Закрытие  позиции по типу !");
    ZeroMemory(mrequest); ZeroMemory(mresult);            // обнуляем значения mrequest, mresult

   //--- Получить текущее значение котировки в структуру типа MqlTick
   if(!SymbolInfoTick(_Symbol,latest_price))
     {
      Alert("Ошибка получения последних котировок - ошибка:",GetLastError(),"!!");
      return;
     }            
//--- формируем торговый запрос
      mrequest.action = TRADE_ACTION_CLOSE_BY;                                              // закрыть позицию встречной
      mrequest.order = id; 
//      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
//      mrequest.price =  NormalizeDouble(latest_price.bid,_Digits);                      // последняя цена ask
//    mrequest.sl = 0;               // Stop Loss
//     mrequest.tp = 0;               // Take Profit
      mrequest.symbol = _Symbol;                        // символ
      mrequest.volume = lot;                            // количество лотов для торговли
 //     mrequest.magic = MAGIC;                               // Magic Number
      
//     if (P_type == 0) mrequest.type = ORDER_TYPE_SELL; // проверяем тип позиции
//     if (P_type == 1) mrequest.type = ORDER_TYPE_BUY;     
      mrequest.type = ORDER_TYPE_CLOSE_BY;
      mrequest.type_filling = ORDER_FILLING_FOK;        // тип исполнения ордера - все или ничего
      mrequest.deviation=10;                            // проскальзывание от текущей цены
                                        
            if( OrderSend(mrequest,mresult)>0)            // если значение отосланного ордера не ноль, то 
                  {  if(mresult.retcode==10009 || mresult.retcode==10008)
                     Print(" позиция  закрыта !");
                  } else {
                     Print(ResultRetcodeDescription(mresult.retcode));
                     return;
                         }
  }
 

Hola, Pregunta sobre el probador.

Estoy probando un Asesor Experto multidivisa y me gustaría ver en el visualizador todas las ventanas de todos los pares de divisas que se están negociando.

En la ayuda del visualizador se habla de un comando "Chart" en la sección "View" del menú principal del visualizador, que parece que se utiliza para abrir nuevos gráficos. Pero por alguna razón no tengo el comando "Chart" en absoluto y, en consecuencia, no puedo abrir gráficos de pares adicionales. ¿Cuál es el problema aquí?

 
Aleksandr Prishenko:

¿Cómo puedo enviar correctamente una solicitud de cierre de una posición de contador?

Si cierro como antes, al contrario, se laca ))

Ya he intentado todo, todavía da error 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 falló el cierre de la posición #64 comprar 0,81 EURUSD por la posición #0 [Solicitud no válida]

¿Qué campos hay que rellenar y cuáles no? Según tengo entendido, no importa si la posición es larga o corta.

Utilizar un código mínimo - utilizar la biblioteca estándar:

//+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"

#include <Trade\Trade.mqh>

CTrade my_trade;
ulong    result_deal_0  =0;
ulong    result_deal_1  =0;
bool     first_start    =false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   first_start=false;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!first_start)
     {
      my_trade.Sell(0.01);
      result_deal_0=my_trade.ResultDeal();
      Sleep(1000);

      my_trade.Buy(0.02);
      result_deal_1=my_trade.ResultDeal();
      Sleep(1000);

      if(result_deal_0!=0 && result_deal_1!=0)
         PositionCloseBy(result_deal_0,result_deal_1);

      first_start=true;
     }
  }
//+------------------------------------------------------------------+
//| Position Close By                                                |
//+------------------------------------------------------------------+
void PositionCloseBy(ulong ticket,ulong ticket_by)
  {
   my_trade.PositionCloseBy(result_deal_0,result_deal_1);
  }
//+------------------------------------------------------------------+

Registro de agentes:

ES      0       09:12:21.189    Trade   2016.04.14 00:00:30   instant sell 0.01 EURUSD at 1.12728 (1.12728 / 1.12736 / 1.12728)
IL      0       09:12:21.189    Trades  2016.04.14 00:00:30   deal #2  sell 0.01 EURUSD at 1.12728 done (based on order #2)
 OP      0       09:12:21.189    Trade   2016.04.14 00:00:30   deal performed [#2  sell 0.01 EURUSD at 1.12728]
NF      0       09:12:21.189    Trade   2016.04.14 00:00:30   order performed sell 0.01 at 1.12728 [#2  sell 0.01 EURUSD at 1.12728]
GJ      0       09:12:21.192    TestEA (EURUSD,H1)      2016.04.14 00:00:30   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.12728 [done at 1.12728]
KH      0       09:12:21.192    Trade   2016.04.14 00:00:31   instant buy 0.02 EURUSD at 1.12736 (1.12728 / 1.12736 / 1.12728)
OD      0       09:12:21.192    Trades  2016.04.14 00:00:31   deal #3  buy 0.02 EURUSD at 1.12736 done (based on order #3)
 GI      0       09:12:21.193    Trade   2016.04.14 00:00:31   deal performed [#3  buy 0.02 EURUSD at 1.12736]
LM      0       09:12:21.193    Trade   2016.04.14 00:00:31   order performed buy 0.02 at 1.12736 [#3  buy 0.02 EURUSD at 1.12736]
NS      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:31   CTrade::OrderSend: instant buy 0.02 EURUSD at 1.12736 [done at 1.12736]
OP      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   Вход в функцию Закрытие  позиции по типу !
GI      0       09:12:21.193    Trade   2016.04.14 00:00:32   close position #2  sell 0.01 EURUSD by position #3  buy 0.02 EURUSD (1.12728 / 1.12736 / 1.12728)
OM      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #4  buy 0.01 EURUSD at 1.12736 done (based on order #4)
 RK      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #5  sell 0.01 EURUSD at 1.12728 done (based on order #4)
 EF      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   CTrade::OrderSend: unknown action 10 [done]
EI      0       09:12:21.423    Trade   2016.04.14 23:59:59   position closed due end of test at 1.12663 [#3  buy 0.01 EURUSD 1.12736]
JG      0       09:12:21.423    Trades  2016.04.14 23:59:59   deal #6  sell 0.01 EURUSD at 1.12663 done (based on order #5)
 HN      0       09:12:21.423    Trade   2016.04.14 23:59:59   deal performed [#6  sell 0.01 EURUSD at 1.12663]
IS      0       09:12:21.423    Trade   2016.04.14 23:59:59   order performed sell 0.01 at 1.12663 [#5  sell 0.01 EURUSD at 1.12663]
Razón de la queja: