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

 
LSM:
我编辑了我的问题并添加了代码。有一个循环正在进行。不清楚当它在循环中发生时我将得到什么。
那里一切都很清楚。
例如,在这个周期中,该指标已计数为15。5分钟的蜡烛
并从15+1中取值。第16根15分钟的蜡烛。


 
LSM:

我将回答我自己的问题,以防有人需要)。

这就对了。
 

下午好。

请告诉我,我有一个想法,但从哪方面着手,我还 "不明白"。

我有一个指标,我从服务器上的CSV文件中打开了对某个账户号码 列表的访问。

从技术上讲,是否可以从列表中为一个特定的账户写一个信息,并在图表上显示这个特定用户的信息。

例如,我在CSV中指定账号,并写上 "你好...... "这样的文字,用户在图表上看到了吗?如果有可能的话,在什么方向 "挖"?谢谢你...

 

下午好,你能帮助我理解一些mql4的语法吗?我有一个想法,编写一个 趋势跟踪的EA,例如,进入一个多头头寸,止损150点,获利50点,然后如果价格达到tp,将开启一个新的买入,止损150,获利50,如果止损 失败,将执行卖出,风险/利润比与多头头寸相同。我试着用这样的逻辑写了一段代码,但是失败了,因为专家顾问在测试期间没有做任何交易。

double b, difference;
int ticket;

int OnInit()
{
   b=Bid;
   return(b);
}

void OnTick()
{
   difference = Bid-b;
   if(OrdersTotal()==0)
   {
      if(difference==150*Point)
      {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-150*Point,Ask+50*Point,0);
         if(difference==0){b=Bid+150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==200*Point){b=Bid-150*Point;}

      if(difference==-150*Point)
      {
         ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Bid+150*Point,Ask-50*Point,0);
         if(difference==0){b=Bid-150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==-200*Point){b=Bid+150*Point;}
   }
}
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 ( MQL5 ), среда разработки MetaEditor и...
 
MosheDayan:

下午好。

请告诉我,我有一个想法,但从哪方面着手,我还 "不明白"。

我有一个指标,我从服务器上的CSV文件中打开了对某个账户号码 列表的访问。

从技术上讲,是否可以从列表中为一个特定的账户写一个信息,并在图表上显示这个特定用户的信息。

例如,我在CSV中指定账号,并写上 "你好...... "这样的文字,用户在图表上看到了吗?如果有可能的话,在什么方向 "挖"?谢谢你...

向服务器发送一个带有账号的后置请求

IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)

在服务器上将传入的号码与CSV文件中的所有行进行核对,如果有匹配的,就从文件中的这一行向终端发送一个响应。剩下的就是在终端读取服务器的响应,并在图表上显示。

一般来说,这种事情在MySQL上比在文件上更容易实现。

 
Maxim235v34:
对了,如果不难的话,建议在这个论坛上减少行距的方法。

首先写在文本文件(记事本)中 - 然后通过剪贴板复制。你会得到这样的结果

double b, difference;
int ticket;

int OnInit()
{
   b=Bid;
   return(b);
}

void OnTick()
{
   difference = Bid-b;
   if(OrdersTotal()==0)
   {
      if(difference==150*Point)
      {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-150*Point,Ask+50*Point,0);
         if(difference==0){b=Bid+150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==200*Point){b=Bid-150*Point;}

      if(difference==-150*Point)
      {
         ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Bid+150*Point,Ask-50*Point,0);
         if(difference==0){b=Bid-150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==-200*Point){b=Bid+150*Point;}
   }
}
阅读OnInit()函数 - 把光标放在它上面,然后按F1。int这个词在前面--所以这个函数返回的是一个整数值。 你试图返回的是一个双倍类型 的值。 OnInit() 的结果是由终端的运行时子系统分析的,它几乎不需要这个值。
 
LRA:

首先写在文本文件中(用记事本)--然后通过剪贴板复制。它是这样的

谢谢你。值得一提的是。

阅读OnInit()函数--将光标放在它上面并按下F1。int这个词在前面--所以这个函数返回一个整数值。 你试图返回一个双倍类型 的值。 OnInit() 的结果是由终端的运行时子系统分析的,它几乎不需要这个值。
那么应该用什么类型的事件处理程序来实现这一点--以
在程序运行开始时固定价格值,未来的计算将相对于此进行?
我试着删除了int OnInit中的所有内容,并在最开始的void OnTick中加入变量varStart,写下以下代码
如果(varStart==0)
{
b=竞价。
varStart=1。
}
结果是没有变化的。
 

有一个带指针的函数。


  TickReturn *returntick(int period, int timeposition)
   {
      TickReturn *returntick = new TickReturn();
      MqlRates rates[];
      MqlTick last_tick;
      
      if(SymbolInfoTick(symbol,last_tick)){}
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
      
      //int timeposition=0;
      ArraySetAsSeries(rates,true);
      ArrayResize(rates,1);
      int copied=CopyRates(symbol,period,timeposition,1,rates);
      
      returntick.curtime = rates[0].time;
      returntick.open = rates[0].open;
      returntick.close = rates[0].close;
      returntick.high = rates[0].high;
      returntick.low = rates[0].low;
      returntick.priceask = last_tick.ask;
      returntick.pricebid = last_tick.bid;
      
      return(returntick);

   } 

我仍然在另一个函数中调用它。


string timeis = returntick(period, 1).curtime;

我怎样才能清除背后的记忆?

在delete(TickReturn);我得到一个错误的操作数除外。

 
hamsteruser:

有一个带指针的函数。


我仍然在另一个函数中调用它。


我怎样才能清除背后的记忆?

在delete(TickReturn);我得到一个错误的操作数除外。


如果我没有看错你的代码,TickReturn是一个类。你创建了一个指向这个类类型的变量的指针,然后你删除...这门课本身?你需要销毁这个指针,并确保它存在,而且是动态的。

 
Алексей Барбашин:

如果我没有看错你的代码,TickReturn是一个类。你已经创建了一个指向该类类型的变量的指针,但你在销毁......... 这个班级本身?你必须销毁这个指针,并确保它存在并且是动态的。


*returntick也是不可破坏的。我只是对交易终端的 输出感到困惑。它告诉我它没有清除记忆。