Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1002

 
Seric29:
¿Cómo implementar la variable de tipo datetame y color en una biblioteca dll de C++? Cómo llamar a la función Print() en la dll con qué reemplazarla, porque c++ no la tiene, y se puede hacer, porque no hay depuración en mql4 y se cometen errores a menudo o es difícil escribir algo la primera vez, ¿qué se puede hacer?

¿has probado a pulsar F1?

"El tipo datetime está diseñado para almacenar la fecha y la hora como el número de segundos transcurridos desde el 01 de enero de 1970. Ocupa 8 bytes en la memoria".

con el tipo de color - practíquelo usted mismo :-)

---

Al depurar la dll, en lugar de la función Print - imprima a un archivo y mire en él.

 
Maxim Kuznetsov:

¿has probado a pulsar F1?

con el tipo de color - practíquelo usted mismo :-)

---

Al depurar la dll, en lugar de la función Print - imprima a un archivo y mire en él.

Entiendo lo de Print(), gracias por el consejo, y la consola puede salir, porque no puedo trabajar con archivos en C++ y aquí, y en cuanto a datetime, no entiendo para qué lo has escrito...

 
Seric29:

Entiendo lo de print(), gracias por el consejo, y lo de la consola puede salir, porque aún no sé trabajar con archivos en C++ y aquí, y en cuanto a datetime, no entendí para qué lo escribiste?

Se trata de la representación en C/C++

es un entero sin signo de 8 bytes unixtime, es decir, uint64_t o time64_t como prefieras

 
Maxim Kuznetsov:

y lo dice todo sobre la representación en C/C++

es un entero sin signo de 8 bytes unixtime, es decir, uint64_t o time64_t como prefieras

ni uint64_t ni time64_t no funcionan, he intentado escribir <uint64_t > también. Y cómo trabajar con los colores tampoco está claro, no he encontrado explicaciones en la red también, estoy comprometido en esta cuestión 2 º año?

 
Seric29:

ni uint64_t ni time64_t funcionan he intentado escribir <uint64_t > también no funciona. Y tampoco sé cómo trabajar con los colores, no he encontrado ninguna explicación en la web, llevo 2 años con este tema.

Deberías estudiar primero C/C++, sin MetaTrader y DLL. De lo contrario, no será más que una frustración y un esfuerzo desperdiciado.

#include <ctime>

// или для uint64_t (что на мой взгляд вернее)

#include <cstdint>

véase http://www.cplusplus.com/reference/

Reference - C++ Reference
Reference - C++ Reference
  • www.cplusplus.com
The elements of the C language library are also included as a subset of the C++ Standard library. These cover many aspects, from general utility functions and macros to input/output functions and dynamic memory management functions: Containers Input/Output Stream Library Provides functionality to use an abstraction called streams specially...
 
Maxim Kuznetsov:

Deberías aprender primero C/C++, sin MetaTrader y DLL. De lo contrario, se sentirá frustrado y trabajará en vano.

#include <ctime>

// или для uint64_t (что на мой взгляд вернее)

#include <cstdint>

véase http://www.cplusplus.com/reference/

Si entiendo bien, toma los puntos extremos y los cuenta en segundos, pero no sé cómo mostrar el formato habitual. Me gustaría tener algunos ejemplos. ¿Y cómo trabajar con los colores?

 

No está claro cómo generar una fecha en este formato 2008.09.23 00:00 si la variable time_t almacena segundos?

time_t Data()
{ return 100;} Что функции в с++ так выглядят
 

Cualquier ejemplo que pueda encontrar en internet ni siquiera compila aquí hay uno de ellos

int main()
{ 
  time_t rawtime;
  struct tm * ptm;
  time( &rawtime );                                     // определить текущую дату в секундах
  ptm = gmtime( &rawtime ); 
return 0;}
Obviamente, es imposible entender nada de esta manera.
 

Hola.

Me podéis decir por qué cuando abro un sellstop, si especifico una variable en el parámetro precio que almacena el precio deseado, se jura.


int ZeroBufer;              // ticket zero
struct Order_Data_S // Структура которая заполняется по мере поступления данных.
  {
   int               ticket;
   double            price;
  };
Order_Data_S OrderBufer_S[100];

void OnTick()
  {
  double prise_s = MarketInfo(Symbol(), MODE_BID);
  double zero = prise_s;
  OrderSelect(OrderBufer_B[0].ticket,SELECT_BY_TICKET,MODE_TRADES);  //return value of 'OrderSelect' should be checked  

   if(OrderType() == 0) // открыт bay ордер
     {
      ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,OrderBufer_S[0].price),3,0,0,"bs2",2,0,clrRed);  // sell stop на шаг сетки.  // 'OrderSend' - wrong parameters count. 
      //',' - unexpected token. И еще 100500 ошибок на эту строку. OrderBufer_S[0].price не пустой. Там уже находится нужная цена.
      
      if(OrderSelect(ZeroBufer,SELECT_BY_TICKET,MODE_TRADES) != true)
        {
         ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,zero),3,0,0,"bs2",2,0,clrRed);
        }  // повторить, пока не откроет
     }
     }
     
     // Если вместо "OrderBufer_S[1].price" воткнуть другую переменную "zero" - в которой хранится цена, то он снова ругается, но гораздо меньше.
     // Его не устраивает эта переменная

¿Qué debo hacer en este caso?

Y una pregunta más. ¿Cuál es la mejor manera de comprobar si el pedido se abre a continuación? Es decir, si se trata de la primera orden, entonces el código actual para seleccionar operaciones de la pila y comprobar su tipo servirá. Pero después ha surgido la idea de que podría haber alguna confusión. Si hay más de un pedido, ¿cómo sabemos si este pedido se acaba de abrir o ya lleva mucho tiempo? He mirado en el foro y aconsejan utilizar el precio como base. Debemos intentar buscar la disponibilidad del pedido a este precio +/- desviación. Pero de nuevo, la misma pregunta. ¿Cómo sabemos si se trata de un orden nuevo o antiguo? Si la orden se abre a partir de una pendiente o la orden ya existía allí y el precio está simplemente en su nivel.

 
Gilmor:

Hola.

Me podéis decir por qué cuando abro un sellstop, si especifico una variable en el parámetro precio que almacena el precio deseado, se jura.


¿Qué debo hacer en este caso?

Vigila el emparejamiento de los soportes.

ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,OrderBufer_S[0].price),3,0,0,"bs2",2,0,clrRed);
Razón de la queja: