初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 413

 
first_may:
何が言いたかったのか、はっきりしない?
意味:フォーラムにコードを正しく挿入して ください。
 
Karputov Vladimir:
次のような意味です:フォーラムでコードを正しく挿入 する

なるほど、1本目と2本目のローソク足で天底と金線の位置を確認するんだ。信号があれば、アラートを入力する。でも、1回で終わらせてほしいです。よろしくお願いします。以下はそのコードです。

 
//+------------------------------------------------------------------+
//|                                                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:

なるほど、1本目と2本目のローソク足で天底と金線の位置を確認するんだ。信号があれば、アラートを入力する。でも、1回で終わらせてほしいです。よろしくお願いします。以下はそのコードです。

1つのバーに複数の警告を表示しない。

//+------------------------------------------------------------------+
//|                                                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:

1本の棒に1つ以上の警告はありません。

ありがとうございました!!!
 

皆さん、こんにちは。

負けトレードの後、1シグナルをスキップするEAを作るには?(とても良いZ戦略)

言葉で説明すると、コード自体が実装できるようになっている。

 
Leanid Aladzyeu:

皆さん、こんにちは。

負けトレードの後、1シグナルをスキップするEAを作るには?(とても良いZ戦略)

言葉で説明すると、コード自体が実装できるようになっている。

途方に暮れているとき、端末のグローバル変数に ある値を 与え、最初の信号でゼロにリセットする。取引機能は この値を監視し、新しい取引を開始するかどうかを決定する。

つまり、作業指示はおよそ次のようなものです。

a) 利益を追跡する。

b) シグナルをカウントし、損失が発生した場合はチェックボックスをオンにし、まだ他に取引するシグナルがない場合は、損失後の最初のシグナルが発生した時点でチェックボックスをリセットします。

c) チェックボックスをチェックし、取引するか待つかを決定します。

GPTを使用する方が便利です。ターミナルがクラッシュしてもそれらは保存され、コード内の単純な変数はどんなくしゃみでもリセットでき、Expert Advisorはエラーで動作します。

 
Vitalie Postolache:

途方に暮れながら、端末のグローバル変数に ある値を代入し、最初の信号でゼロにリセットする。取引機能は この値を監視し、新しい取引を開始するかどうかを決定する。

つまり、作業の順番はおおよそ次のようになります。

a) 利益を追跡する。

b) シグナルを数え、損失が出た場合はボックスをチェックし、まだ別のシグナルが来ていなければ、損失が出た後、最初のシグナルが来たときにボックスをリセットする。

c) チェックボックスをチェックし、取引するか待つかを決定します。

GPTはより便利に使用でき、それらはターミナルがクラッシュしたときに保存され、コード内の単純な変数はどんなくしゃみでもリセットでき、Expert Advisorはエラーで動作します。

一人を除いて全員が理解した。シグナルカウンターの作り方は?
それで?
if("条件" == тру)
i ++;
 
Leanid Aladzyeu:
1つを除き、すべて取得しました。シグナルカウンターの作り方は?
そうだろ?
if("条件"==true)
i ++;
こんな感じで、静的変数
 

くし

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

タイプ変換によるデータ損失の可能性 .mq4 1697 29

SLでタイプDoble。


理由: