Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1002

 
Seric29:
Como implementar o datetame e a variável de tipo de cor em uma biblioteca C++ dll? Como chamar a função Print() na dll com o que substituí-la, porque o c++ não a tem, e você pode fazer isso, porque não há depuração no mql4 e você comete erros frequentemente ou é difícil escrever algo na primeira vez, o que você pode fazer?

você já tentou pressionar F1?

"O tipo de data e hora é projetado para armazenar a data e a hora como o número de segundos transcorridos desde 01 de janeiro de 1970. Ocupa 8 bytes na memória".

com tipo de cor - pratique você mesmo :-)

---

Ao depurar a dll, em vez da função Imprimir - imprimir para arquivar e olhar nela.

 
Maxim Kuznetsov:

você já tentou pressionar F1?

com tipo de cor - pratique você mesmo :-)

---

Ao depurar a dll, em vez da função Imprimir - imprimir para arquivar e olhar nela.

Entendo sobre Print(), obrigado pela dica, e o console pode ser produzido, porque não posso trabalhar com arquivos em C++ e aqui, e quanto à data, não entendo porque você a escreveu de forma alguma?

 
Seric29:

Eu entendo sobre impressão(), obrigado pelo conselho, e o console pode ser produzido, porque ainda não posso trabalhar com arquivos em C++ e aqui, e quanto à data, eu não entendi porque você o escreveu de forma alguma?

É tudo uma questão de representação em C/C++

é uma unidade de tempo inteiro de 8 bytes sem assinatura, ou seja, uint64_t ou tempo64_t como você preferir

 
Maxim Kuznetsov:

e diz tudo sobre representação em C/C++

é uma unidade de tempo inteiro de 8 bytes sem assinatura, ou seja, uint64_t ou tempo64_t como você preferir

nem uint64_t nem time64_t não funciona, eu tentei escrever <uint64_t > também. E como trabalhar com cores também não está claro, não encontrei explicações na rede também, estou engajado nesta questão do 2o. ano?

 
Seric29:

nem uint64_t nem time64_t funciona eu tentei escrever <uint64_t > também não funciona. E também não sei como trabalhar com cores, não encontrei nenhuma explicação na web, tenho lidado com esta questão por 2 anos.

Você deve apenas estudar C/C++ primeiro, sem MetaTrader e DLL. Caso contrário, você não será nada além de frustração e esforço desperdiçado.

#include <ctime>

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

#include <cstdint>

ver 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:

Você deve aprender C/C++ primeiro, sem MetaTrader e DLL. Caso contrário, você ficará frustrado e trabalhando em vão.

#include <ctime>

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

#include <cstdint>

ver http://www.cplusplus.com/reference/

Se eu entendi corretamente, são necessários pontos extremos e os conto em segundos, mas não sei como exibir o formato usual. Eu gostaria de alguns exemplos. E como trabalhar com cores?

 

Não está claro como gerar uma data neste formato 2008.09.23 00:00 se a variável time_t armazena segundos?

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

Qualquer exemplo que eu possa encontrar na internet nem mesmo compilar aqui está um deles

int main()
{ 
  time_t rawtime;
  struct tm * ptm;
  time( &rawtime );                                     // определить текущую дату в секундах
  ptm = gmtime( &rawtime ); 
return 0;}
Obviamente, é impossível entender qualquer coisa desta maneira.
 

Olá.

Você pode me dizer por que quando eu abro uma bancada de venda, se eu especificar uma variável no parâmetro de preço que armazena o preço desejado, ela jurará.


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" - в которой хранится цена, то он снова ругается, но гораздо меньше.
     // Его не устраивает эта переменная

O que devo fazer neste caso?

E mais uma pergunta. Qual é a melhor maneira de verificar se o pedido é aberto em seguida? Isto é, se esta for a primeira ordem, então o código atual para selecionar o comércio da pilha e verificar seu tipo será suficiente. Mas, mais tarde, surgiu a idéia de que poderia haver alguma confusão. Se existe mais de um pedido, como saber se este pedido acabou de ser aberto ou se já está lá há muito tempo? Verifiquei o fórum e eles me aconselham a usar o preço como base. Devemos tentar determinar se existe um pedido a este preço +/- desvio. Mas novamente, a mesma pergunta. Como sabemos se esta é uma ordem nova ou antiga? Se o pedido é aberto a partir de um pedido pendente ou se o pedido já existia lá e o preço está simplesmente em seu nível.

 
Gilmor:

Olá.

Você pode me dizer por que quando eu abro uma bancada de venda, se eu especificar uma variável no parâmetro de preço que armazena o preço desejado, ela jurará.


O que devo fazer neste caso?

Fique de olho no emparelhamento de parênteses.

ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,OrderBufer_S[0].price),3,0,0,"bs2",2,0,clrRed);