新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1002

 
Seric29:
如何在C++ dll库中实现数据名和颜色类型变量?如何在dll中调用Print()函数,用什么来代替它,因为c++没有,你能做到吗,因为mql4中没有调试,你经常犯错,或者第一次写东西就很难,你能做什么?

你有没有试过按F1?

" datetime"类型 设计用来存储日期和时间,作为自1970年1月1日起经过的秒数 它在内存中占据了8个字节。"

带颜色的类型--自己练习吧 :-)

---

当调试dll时,用打印功能代替--打印到文件并在其中查找。

 
Maxim Kuznetsov:

你有没有试过按F1?

带颜色的类型--自己练习一下吧 :-)

---

当调试dll时,用打印功能代替--打印到文件并在其中查找。

我理解Print(),谢谢你的提示,控制台可以输出,因为我不能在C++和这里处理文件,至于Datetime,我完全不明白你为什么要写它?

 
Seric29:

我理解print(),谢谢你的建议,控制台可以输出,因为我还不知道如何在C++和这里处理文件,至于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/C++,不要学习MetaTrader和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/C++,不需要MetaTrader和DLL。否则你会感到沮丧,白白地工作。

#include <ctime>

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

#include <cstdint>

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

如果我理解正确的话,它采取极端点,以秒为单位进行计数,但我不知道如何显示通常的格式。我想知道一些例子。那么,如何与色彩打交道呢?

 

不清楚如果变量time_t存储的是秒,如何生成这种格式的日期2008.09.23 00:00?

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

无论我在互联网上找到什么例子,都无法编译,这里是其中一个例子

int main()
{ 
  time_t rawtime;
  struct tm * ptm;
  time( &rawtime );                                     // определить текущую дату в секундах
  ptm = gmtime( &rawtime ); 
return 0;}
显然,以这种方式理解任何事情都是不可能的。
 

你好。

你能告诉我为什么当我打开一个止损点时,如果我在价格参数中指定一个存储所需价格的变量,它将发誓。


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:

你好。

你能告诉我为什么当我打开一个止损点时,如果我在价格参数中指定一个存储所需价格的变量,它将发誓。


在这种情况下,我应该怎么做?

密切关注托架的配对情况。

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