初学者的问题 MQL5 MT5 MetaTrader 5 - 页 413

 
first_may:
不清楚是什么意思?
意义:在论坛中正确插入代码
 
Karputov Vladimir:
我的意思是:在论坛中正确插入代码

我明白了,我检查了第一和第二根蜡烛上的天干和金俊的位置。如果有一个信号,我就输入一个警报。但我希望这只是一次性的事情。请帮助我。以下是代码。

 
//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[]; 
double ich2_buffer[]; 
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;



//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   SignalICH=TradeSignal_20();
   
   
   Comment("SignalICH: "+(string)SignalICH);
}



//+------------------------------------------------------------------+
//| Функция                                             |
//+------------------------------------------------------------------+
int TradeSignal_20()
{
   int sig=0;

   if(h_ich==INVALID_HANDLE)
   {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
   }
   else
   {
      if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
   }
   
   //--- проводим проверку условия и устанавливаем значение для sig
   if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;
   
   if (ich1_buffer[1]>ich2_buffer[1])
      if (ich1_buffer[2]<ich2_buffer[2])
         Alert(Symbol()+": покупка");
   
   if (ich1_buffer[1]<ich2_buffer[1])
      if (ich1_buffer[2]>ich2_buffer[2])
         Alert(Symbol()+": продажа");
   
   
   //--- возвращаем торговый сигнал
   return (sig);
}
 
first_may:

我明白了,我检查了第一和第二根蜡烛上的天干和金俊的位置。如果有一个信号,我就输入一个警报。但我希望这只是一次性的事情。请帮助我。以下是代码。

一条杠上不能有超过一个警报。

//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[];
double ich2_buffer[];
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;
//+------------------------------------------------------------------+
//| Объявим переменную-флаг разрешения/запрета алерта                |
//+------------------------------------------------------------------+
bool bool_alert=false;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevtime=0;
   datetime time_zero[];
   CopyTime(Symbol(),Period(),0,1,time_zero);
   
   if(!bool_alert)
      if(prevtime!=time_zero[0])
         bool_alert=true;
   prevtime=time_zero[0];
   
   SignalICH=TradeSignal_20();

   Comment("SignalICH: "+(string)SignalICH);
  }
//+------------------------------------------------------------------+
//| Функция                                                          |
//+------------------------------------------------------------------+
int TradeSignal_20()
  {
   int sig=0;

   if(h_ich==INVALID_HANDLE)
     {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if(CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if(!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if(!ArraySetAsSeries(ich2_buffer,true)) return(0);
     }

//--- проводим проверку условия и устанавливаем значение для sig
   if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;8

   if(ich1_buffer[1]>ich2_buffer[1])
      if(ich1_buffer[2]<ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": покупка");
            //--- опускаем флаг
            bool_alert=false;
           }

   if(ich1_buffer[1]<ich2_buffer[1])
      if(ich1_buffer[2]>ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": продажа");
            //--- опускаем флаг
            bool_alert=false;
           }

//--- возвращаем торговый сигнал
   return (sig);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

每一栏不超过一个警报。

非常感谢!
 

大家好!

如何使EA在交易失败后跳过1个信号?( 非常好的Z型战略 )

用词解释,就是代码本身能够实现。

 
Leanid Aladzyeu:

大家好!

如何使EA在交易失败后跳过1个信号?( 非常好的Z型战略 )

用词解释,就是代码本身能够实现。

在亏损时,给终端的全局变量 赋予一定的,并在第一个信号时将其重置为零。交易功能 监控这个值,并决定是否开启新的交易。

换句话说,该工作单大约如下。

a) 追踪利润。

b) 计数信号,在亏损的情况下勾选复选框,如果还没有其他交易信号,在亏损后的第一个信号出现时重置复选框。

c) 勾选方框,决定是交易还是等待。

使用GPT更方便,它们在终端崩溃时被保存,代码中的简单变量可以被任何一个喷嚏重置,专家顾问将在错误中工作。

 
Vitalie Postolache:

一筹莫展时, 终端的全局变量 分配一定的,在第一个信号时将其重置为零。交易功能 监控这个值,并决定是否开启新的交易。

也就是说,工作的顺序大约是这样的。

a) 追踪利润。

b) 计算信号,在亏损的情况下勾选方框,如果我们还没有另一个交易信号,在亏损后第一个信号出现时重置方框。

c) 勾选方框,决定是交易还是等待。

GPT使用起来更方便,当终端崩溃时,它们会被保存下来,代码中的简单变量可以通过任何一个喷嚏来重置,专家顾问会带着错误工作。

所有的人都明白,除了一个人。如何制作一个信号计数器?
那么?
如果("Condition" == тру)
i ++;
 
Leanid Aladzyeu:
除了一个,其他都有了。如何制作一个信号计数器?
对吗?
如果("Condition"==true)
i ++;
像这样:静态变量
 

唾液

sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS));

由于类型转换可能造成的数据损失 .mq4 1697 29

在SL的类型Doble。


原因: