[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 157

 

朋友,你能告诉我,我需要做什么来输出5位数的价格?例如,我正在写一个这样的案例。

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

而且它打印出来的价格有四个小数位。

提前感谢你))。

 
rid >> :

你把这个函数放在代码的哪个地方?

我正处于写代码的早期阶段...因此,没有地方可以放进去....

你能幼稚地给我解释一下如何用神奇的数字来计算订单数量吗?))


 
Alex5757000 писал(а)>>

朋友,你能告诉我,我需要做什么来输出5位数的价格?例如,我正在写一个这样的案例。

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

而且它打印出来的价格有四个小数位。

提前感谢你))。

你试过DoubleToStr()吗?

 
ArtY0m писал(а)>>

我正处于写代码的早期阶段...因此,没有地方可以放进去....

你能幼稚地给我解释一下如何用神奇的数字来计算订单数量吗?))


最简单的方法是看这里https://book.mql4.com/ru/

 

请帮助我。我不明白一个该死的东西。

如果在EA 1.mq4(附件)的视觉测试 过程中,我在图表上放了一个3-cci指标(附件),那么,看起来,参数完全相同的cci指标的计算信号和实际cci(右上角的对象文本)并不一致。

为什么?

而且由于某些原因,这个指标中的警报不起作用。

附加的文件:
pack_1.rar  2 kb
 
我找不到关于在低时间框架图表上画出高时间框架蜡烛(即两个蜡烛同时出现)的指标的参考。谁能告诉我?
 
ArtY0m >> :

我正处于写代码的早期阶段...因此,没有地方可以放进去....

你能幼稚地给我解释一下,如何用神奇的数字来计算订单数量吗?)


一个专家顾问(最简单的形式)由几个部分组成。

首先,外部参数和全局变量被设置。

在这之后,通常会有初始化和非初始化函数。

之后,执行START功能,其中设置了专家顾问的主要工作算法。

第二,接下来是辅助性的、用户定义的函数。

这些用户定义的函数在START函数中根据需要被使用(调用)。

这里有这样的东西。

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit= False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit= True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit= True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ", NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ", NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if ( UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if ( NumberOfPositions(NULL, OP_BUY, MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY, lots,Ask,3,Ask-Point* StopLossBuy,
Ask+Point* TakeProfitBuy,"Хи-Хи, тра-ля-ля", MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++)                                    {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()== sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op)                   {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()== MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-( TrailingStop+ TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()== MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+( TrailingStop+ TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment( m);
  if (StringLen( m)>0) Print( m);
}        

我希望你现在不会有这样的问题了!"。

 

还有一个问题:是否可以从一个未结头寸 下挂单,而不是从当前价格下挂单?

预先感谢)

 

当然,你可以。我们只需要确保这个挂单放在与当前价格有一定距离的地方,以满足经纪公司设定的止损水平。

例如,如果一个挂单离上一个订单的开盘价有100点的距离,但它离当前价格太近,日志将返回一个错误130 来打开订单。

 
rid >> :

当然,你可以。我们只需要确保这个挂单放在与当前价格有一定距离的地方,以满足经纪公司设定的止损水平。

例如,如果订单设置在距离上次开仓价100点的位置,但它离当前价格太近,日志将返回一个错误130 来打开订单。

如果这不是一个秘密,怎么会呢?

原因: