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

 
Valerius:


尝试刷新报价。服务 - 报价档案 - 选择你的货币对 - 下载。

如果这还没有帮助,请重新安装metatrader。


我试着重新安装了几次,甚至开了一个新的账户....。它没有发挥作用。这可能与什么有关?

谢谢你。

 
sidovi:


我试着重新安装了几次,甚至开了一个新的账户....。没有成功。这可能与什么有关?

谢谢你。


在安装之前,你是否删除了MetaTrader安装程序文件夹中的所有文件?

那你有没有试过引用档案?

 
a196012a:

所有较大的订单只有在成交量达到0.3手时才会打开。所有较小体积的订单,如果是在SL上收盘时以0.3手的体积打开,将以0.1手的体积打开。只有0.1和0.3。没有其他卷。

在通过SL关闭0.3手订单时,请记住订单打开时的小时,以回复其打开时的关闭(即0.1手订单)。

谢谢你的帮助。

请你告诉我,在哪里可以设置当我的帖子有回复时向我的电子邮件发送消息的选项。

再次非常感谢。


而你实际上需要的是什么,是算法还是书面的函数本身?
 
a196012a:

谢谢你的反馈。

我需要算法或函数。

主要是在我关闭0.3 SL订单后,代码要记住小时的值

我不知道如何准确地编码这个动作。

如果一个成交量为0.3的订单在SL上关闭了

{
A2=当较小体积的订单被打开以回应其关闭时的小时值
}

===================================================================================================

如果几个成交量为0.1的订单在SINGLE TICK上以SL关闭

{

以EVERY平仓单的收盘价 开出一个0.3量的单独订单

}

===================================================================================================

如果有几笔成交量为0.3的订单在一个SL上关闭,在一个TIKE上关闭

{

记住EVERY相关订单的开盘时间的价值,按体积计算0.1

}

我写了一个打开和关闭订单的工作代码(见第一篇帖子)。

我不知道该在其中加入什么代码,以节省0.1个订单的开启时间。

我不知道如何对订单的开仓进行编码,并记住开仓小时值,以防几个订单在一个刻度上被关闭。

如果在与实现我的想法改变我写的代码有关的情况下--我不介意你改变它。

我的方案的最终目标是记住开幕式的时值。所有其他行动(包括开盘指令)都从属于这一最终目标,具有辅助性质。

如果我知道没有它们,我就不会在代码中包括它们。

再次感谢。


下面是一个程序的例子。请看一看。里面有一些评论。

extern int MagicNumber=123;

datetime time;
//=================================================================
void start()
{
int er,se;

if(prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
            //то просто возвращается нулевое значение
            //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
  if(se==1)
   {
    if(OrderType()==OP_BUY && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
  if(se==2)
   {
    if(OrderType()==OP_SELL && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
 }

return;
}

//========================
bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            return(false); // есть открытые ордера (любые)
           }
         }
      }
   }
return(true);
}

//=================================================================
datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
          if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
         }
      }
   }
return(NULL);
}

//=================================================================
int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderProfit()>0)
           {//Если  закрылся по профиту то просто ухоим из цикла.
              return(0);
           }
          if(OrderType()==OP_SELL && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(2);
           }
          if(OrderType()==OP_BUY && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(1);
           }
         }
      }
   }
return(0);
}
 
Valerius:


在安装之前,你是否删除了安装Metatrader的文件夹中的所有文件?

你有没有试过引用档案?


是的,0结果:()
 
sidovi:

是的,0结果:()


那么你必须联系你的区政府以获得支持...

这是我第一次看到这种情况。

 
Valerius:


那么只能联系你的区政府寻求支持...

这是我第一次看到这个。


你认为windows10中是否有一个服务会影响到这一点?
 
sidovi:

你认为windows10中是否有一个服务会影响到这一点?

不,没有。
 
Victor Nikolaev:

没有,没有一个。

谢谢你
 
a196012a:

非常感谢您的帮助

我只是从Kovalev的教程和其中描述的函数中学习编程的基础知识。

我在你的代码中遇到了一些函数,这些函数在我的书和代码库中都没有见过

以下是我不知道的功能

sear()。

SearTim(se)。

prov_open_orders()

如果你告诉我在哪里可以读到它们,我将非常感激。

在这个代码中
原因: