Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1002

 
Seric29:
Как в dll библиотеке на с++ реализовать переменную типа datetame и color? Как в dll вызвать функцию Print() чем её заменить, потому что в с++ её нет, и можно ли вообще это сделать, потому что отладки в mql4 нет, а ошибки совершаешь часто или написать что-то с первого раза сложно, что можно сделать? 

не пробовали F1 нажимать ?

"Тип datetime предназначен для хранения даты и времени в виде количества секунд, прошедших с 01 января 1970 года. Занимает в памяти 8 байт."

с типом color - сами потренируйтесь :-)

---

При отладке dll, Вместо функции Print - печатайте в файл и в нём смотрите.

 
Maxim Kuznetsov:

не пробовали F1 нажимать ?

с типом color - сами потренируйтесь :-)

---

При отладке dll, Вместо функции Print - печатайте в файл и в нём смотрите.

Про принт() понятно, спасибо за совет, а в консоль можно выводить, потому что работать с файлами на с++ да и здесь не умею пока, а что касается datetime то я не понял к чему вы это вообще написали?

 
Seric29:

Про принт() понятно, спасибо за совет, а в консоль можно выводить, потому что работать с файлами на с++ да и здесь не умею пока, а что касается datetime то я не понял к чему вы это вообще написали?

а там всё написано про представление в C/C++

это 8-ми байтное беззнаковое целое unixtime, то есть uint64_t или time64_t как вам удобнее

 
Maxim Kuznetsov:

а там всё написано про представление в C/C++

это 8-ми байтное беззнаковое целое unixtime, то есть uint64_t или time64_t как вам удобнее

не работает ни uint64_t ни time64_t пробовал писать и так <uint64_t > тоже не работает. А с цветами как работать тоже не понятно, в сети разъяснений тоже не нашёл занимаюсь этим вопросом 2ой год?

 
Seric29:

не работает ни uint64_t ни time64_t пробовал писать и так <uint64_t > тоже не работает. А с цветами как работать тоже не понятно, в сети разъяснений тоже не нашёл занимаюсь этим вопросом 2ой год?

вам бы просто С/C++ подучить сначала, без МетаТрейдер и DLL. А то будет сплошное разочарование и напрасный труд

#include <ctime>

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

#include <cstdint>

см. 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:

вам бы просто С/C++ подучить сначала, без МетаТрейдер и DLL. А то будет сплошное разочарование и напрасный труд

#include <ctime>

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

#include <cstdint>

см. http://www.cplusplus.com/reference/

Если я правильно понял то оно берёт крайние точки и считает в секундах на как отобразить обычный формат пока мне не понятно. Хотелось бы примеры. А как работать с цветами?

 

Непонятно как сформировать дату такого формата 2008.09.23 00:00 если переменная time_t хранит секунды? 

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

Какой в интернете пример не найду даже не компилируется вот один из них

int main()
{ 
  time_t rawtime;
  struct tm * ptm;
  time( &rawtime );                                     // определить текущую дату в секундах
  ptm = gmtime( &rawtime ); 
return 0;}
Понятное дело что так что либо понять невозможно.
 

Здравствуйте.

Подскажите, почему при открытии sellstop если в параметре цена указать переменнную, в которой хранится нужная цена, то он ругается.


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

Как надо прописывать в этом случае?

И сразу добавлю еще вопросик. Как правильнее проверить на отрытие дальше. Т.е. если это первый ордер, тогда текущий код выбора сделок из стека и проверки ее типа подходит. Но в дальнейшем, пришла мысль, что может произойти путаница. Если ордеров несколько, то как понять  открылся ли этот ордер только сейчас, или он уже давно висит? Посмотрел форум, там советуют исходить из цены. Перебор наличия ордеров по этой цене +/- отклонение. Но опять же этот же вопрос. Как мы узнаем, новый это ордер или старый. Открылся ли это ордер из отложенника, или там уже был ордер, а цена просто сейчас находится на его уровне.

 
Gilmor:

Здравствуйте.

Подскажите, почему при открытии sellstop если в параметре цена указать переменнную, в которой хранится нужная цена, то он ругается.


Как надо прописывать в этом случае?

Следите за парностью скобок.

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