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

 
Artyom Trishkin:

更快地弄清和理解

写下价格,以后怎么拿,什么时候拿?

void PriceTimePos(string sy="",int op=-1,int mn=-1)
  {
  double Цены[3];
   datetime t;
   bool daa;
   int d,k_=OrdersTotal(),typ_;
   double   r=0;
   int      i,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(OrderCloseTime()>=TimeCurrent()-2440*60)
                       {
                        t=OrderCloseTime();
                        r=OrderOpenPrice();
                        sl=OrderStopLoss();
                        tp=OrderTakeProfit();
                        lot=OrderLots();
                        typ_=OrderType();
                        Print("OpenPrice",r);
                       Цены[0]=OrderOpenPrice();
                    
                       }
                    }
                 }
              }
           }
        }
     }
//
  }
在这个循环中插入,而不是r
                        daa=false;
                        for(i=0; i<k; i++)
                          {
                           if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                             {
                              if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
                                {
                                 if(OrderType()>1 && OrderType()<6)
                                   {
                                    d=MarketInfo(OrderSymbol(), MODE_DIGITS);
                                    r=NormalizeDouble(r, d);
                                    if(r==NormalizeDouble(OrderOpenPrice(),d)) daa=true; 
                                   }
                                }
                             }
                          }
 

你好,我做了一个函数,它应该在最后一个订单以负数关闭后增加止损

按设定的步骤增加,直到达到最大值。因此,它总是设置止损的原始值。

有什么问题吗?谢谢你!

//+------------------------------------------------------------------+

double SL()

{

双层sL。

如果(OrdersHistoryTotal()==0)

{

sL=StopLoss。

}

如果(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

如果(OrderProfit()>=0)

{

sL=StopLoss。

}

如果(OrderProfit()<0 && OrderType()==OP_BUY)

{

sL=OrderOpenPrice()-OrderStopLoss()+Step。

}

如果(OrderProfit()<0 && OrderType()==OP_SELL)

{

sL=OrderStopLoss()-OrderOpenPrice()+Step。

}

}

如果(sL>maxStep)

{

sL=StopLoss。

}

return(sL)。

}

//+------------------------------------------------------------------+

 
Artyom Trishkin:
  1. 你从非无效函数中返回数值是正确的,但最好是切换到新的轨道 - 那里没有什么复杂的东西。
  2. 写的时候,不要忘记在代码的最开始插入#property strict指令--在这里所有的指令都被写出来了,阅读错误代码--它们的描述都在文档中,一切都会很好,并不复杂。
我在哪里可以找到错误代码? 这个文档在哪里?
 
#property strict

int Count=0;

void OnInit()     
{
   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
   return;                                                                     // Выход из init()
   }   
//--------------------------------------------------------------------
void OnStart()                                                                       // Спец. ф-ия start()
   {
   double Price = Bid;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   }
void OnDeinit()                                                                              // Спец. ф-ия deinit()
   {
   Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;                                                                                 // Выход из deinit()
   }

我写错了什么?

它应该是这样的:http://prntscr.com/lu1kb9


试图在当前模板下插入数据

//+------------------------------------------------------------------+
//|                                                            п.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
                                                                       // Выход из init()
     
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 
   double Price = PRICE_OPEN;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   
   
  }
//+------------------------------------------------------------------+


但还是不一样,请帮助我
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
请帮助,谁有一个可以传递数组来计算最大缩水的函数?
 

下午好。

我正在通过Sergei Kovalev的教程掌握emq-el。

我从那里下载了专家顾问,并对其进行了编译,它甚至似乎在工作,但在编译时,它显示了一些注释,不是错误,而是警告。

我应该怎么改才能使它的编译没有任何错误?预先感谢你。

附加的文件:
expert.mq4  28 kb
 
Sergey Branin:
我在哪里可以找到错误代码? 这个文档在哪里?

在本网站的菜单中 - 查找

 
Artyom Trishkin:

在本网站的菜单中 - 查找

Artem,有关于mql5的文档,而问题在mql4部分

谢尔盖-布兰尼
我在哪里可以找到错误代码? 这个文档在哪里?

这里是mql4文档。在MetaEditor中,你应该按F1键。

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 
Alexey Viktorov:

Artyom,mql5的文档在那里吗?而问题在mql4部分

在mql4上有一个文档。而在MetaEditor中最好按F1键。

啊...嗯,都一样--也不是那么复杂--把手指放在F1上,找到你需要的一切,比在论坛上等一天的答案要快。我不明白...

 
你好,我是编程新手。我没有在任何地方找到任何现成的代码。我的想法是这样的--我需要从EA中控制一个自定义指标,或者说在某些事件发生时改变其外部参数(一个)。简要的逻辑是:如果手数(或例如仓位数)>预定义的值,指标中的外部设置(在另一个窗口 中,与本EA无关)会即时改变,而无需重新初始化指标。也许你可以尝试通过
 string ServiceCustomIndicatorByIndexA(int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA(int hwndChart,int nWindow,string &asIndicators[],int nSize);   
我不知道该怎么做,是否有程序员可以写一个简单的代码块作为例子。 c/o Denis



原因: