私が試行錯誤しているアドバイザーの組み立て方 - ページ 49

削除済み  
Alexsandr San:

多くのインジケータに存在する水平線が 発生したときに、水平線だけでなく、水平線を描いているインジケータ自体も削除する機能を追加する必要があります。

削除済み  
Alexsandr San:

もう一つの機能として、多くのインジケータに存在する水平線が 発生した場合、水平線だけでなく、水平線を描いているインジケータ自体も削除すること。

機能追加

input string   t8="------ Indicator Delete ------";              //
input string   Inpshort_name                = "Obj LeM Brain";   // INDICATOR_SHORTNAME 1
input string   Inpshort_name0               = "Indicator 2";     // INDICATOR_SHORTNAME 2
input bool     Inpres                       = false;             // Delete All Indicators
//---
#property version     "1.002"
ファイル:
削除済み  
Alexsandr San:

インジケータ - Obj LeM Brain - ExpertUtility Command.mq 5に適応可能です。

LeManBrainTrend1Sig - と - LeManTrend Indicator - それなしでは動作しません- Obj LeM Brain - インジケーターには、さらに2つのインジケーターが必要です。

-----------------------------------------------------------

から、水平線の距離を長くする。


ターンアウトとマイナス、変化 横線内向き

撮影者

---------------------------------------------------------

このインディケータはExpert Advisorに書き込む必要はなく、このインディケータから必要なのは水平線のみです。Expert Advisorでインジケータを削除するように記述する必要があります。

使用する必要はありません。

input string   t2="----- Indicators: SELL   -----";              //
input string   short_name                   = "LeMan_BrainTrend1Sig";   // Name Indicators "SELL"
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_sell;         // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_sells;       // Trade command: (SellBuffer Indicators)
input string   t3="----- Indicators: BUY    -----";              //
input string   short_name1                  = "LeMan_BrainTrend1Sig";   // Name Indicators "BUY"
input bool     InpIndicators1               = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = close_buys;        // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_buy;          // Trade command: (SellBuffer Indicators)

そして、インジケータを削除し、インジケータの水平線がコマンドを繰り返さないようにします。

input string   t8="------ Indicator Delete ------";              //
input string   Inpshort_name                = "Obj LeM Brain";   // INDICATOR_SHORTNAME 1
input string   Inpshort_name0               = "Indicator 2";     // INDICATOR_SHORTNAME 2
input bool     Inpres                       = false;             // Delete All Indicators
削除済み  

Expertにもう一つ機能を追加し、シグナルからChartにIndicatorを設定できるようにしました。

//+------------------------------------------------------------------+
//|                                         AddChartIndicatorAdd.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//---
input string Inpshort_name  = "Obj LeM Brain"; // INDICATOR_SHORTNAME
input string Inpshort_name0 = "Examples/MACD"; // INDICATOR_SHORTNAME
//---
int indicator_handle=INVALID_HANDLE;
int indicator_handle0=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   AddIndicator();
   AddIndicator0();
  }
//+------------------------------------------------------------------+
//| Функция проверки и добавления индикатора на график               |
//+------------------------------------------------------------------+
bool AddIndicator()
  {
//--- выводимое сообщение
   string message;
//--- проверим на совпадение символ индикатора и символ графика
   if(_Symbol!=_Symbol)
     {
      message="Демонстрация использования функции Demo_ChartIndicatorAdd():";
      message=message+"\r\n";
      message=message+"Нельзя на график добавить индикатор, рассчитанный на другом символе.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта символ графика - "+_Symbol+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графика
   if(_Period!=_Period)
     {
      message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- все проверки прошли, символ и период индикатора соответствуют графику
   if(indicator_handle==INVALID_HANDLE)
     {
      Print(__FUNCTION__,"  Создаем индикатор MACD");
      indicator_handle=iCustom(_Symbol,_Period,Inpshort_name);
      if(indicator_handle==INVALID_HANDLE)
        {
         Print("Не удалось создать индикатор MACD. Код ошибки ",GetLastError());
        }
     }
//--- сбросим код ошибки
   ResetLastError();
//--- накладываем индикатор на график
   Print(__FUNCTION__,"  Добавляем индикатор MACD на график");
   Print("MACD построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикатор MACD
   int subwindow=(int)ChartGetInteger(0,0);
   PrintFormat("Добавляем индикатор MACD на окно %d графика",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
     {
      PrintFormat("Не удалось добавить индикатор MACD на окно %d графика. Код ошибки  %d",
                  subwindow,GetLastError());
     }
//--- добавление индикатора на график прошло успешно
   return(true);
  }
//+------------------------------------------------------------------+
//| Функция проверки и добавления индикатора на график               |
//+------------------------------------------------------------------+
bool AddIndicator0()
  {
//--- выводимое сообщение
   string message;
//--- проверим на совпадение символ индикатора и символ графика
   if(_Symbol!=_Symbol)
     {
      message="Демонстрация использования функции Demo_ChartIndicatorAdd():";
      message=message+"\r\n";
      message=message+"Нельзя на график добавить индикатор, рассчитанный на другом символе.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта символ графика - "+_Symbol+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графика
   if(_Period!=_Period)
     {
      message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- все проверки прошли, символ и период индикатора соответствуют графику
   if(indicator_handle0==INVALID_HANDLE)
     {
      Print(__FUNCTION__,"  Создаем индикатор MACD");
      indicator_handle0=iCustom(_Symbol,_Period,Inpshort_name0);
      if(indicator_handle0==INVALID_HANDLE)
        {
         Print("Не удалось создать индикатор MACD. Код ошибки ",GetLastError());
        }
     }
//--- сбросим код ошибки
   ResetLastError();
//--- накладываем индикатор на график
   Print(__FUNCTION__,"  Добавляем индикатор MACD на график");
   Print("MACD построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикатор MACD
   int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
   PrintFormat("Добавляем индикатор MACD на окно %d графика",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,indicator_handle0))
     {
      PrintFormat("Не удалось добавить индикатор MACD на окно %d графика. Код ошибки  %d",
                  subwindow,GetLastError());
     }
//--- добавление индикатора на график прошло успешно
   return(true);
  }
//+------------------------------------------------------------------+

ショット4

ファイル:
削除済み  

この機能から何が必要なのかがわからない。

私はオプションを見つけたと思う、私はちょうど絵のように、このようなアクションをコードに書く必要があります。

撮影者

削除済み  
Alexsandr San:

この機能から何が必要なのかがわからない。

私はオプションを見つけたと思う、私はちょうど絵のように、このようなアクションをコードに書く必要があります。

この機能をユーティリティコマンド("Utility Command")に追加しました #property version "1.004"

をクリックすると、この機能に関する設定が表示されます。

input string   t1="----- Trailing Line: 2   -----";              //
input string   InpObjUpNameG                = "POT";             // Obj: TOP (Horizontal Line)
input int      InpStep3                     = 0;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommandG   = close_open_b;      // Obj:  command:
input string   InpObjDownNameG              = "REWOL";           // Obj: LOWER (Horizontal Line)
input int      InpStep4                     = 0;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommandG    = close_open_s;      // Obj:  command:
input ushort   InpObjTrailingStopG          = 0;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepG          = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   t9="------ ChartIndicatorAdd -----";              //
input bool     InpChartInd                  = false;             // Avto Line Chart Indicators
input string   InpIndiL                     = "AVERAGE 0";       // Line name (ChartIndicatorAdd)
input int      InpStep5                     = 15;                // Obj: Шаг сетки, пунктов("0" -> false)
input string   InpIndi_name                 = "Obj LeM Brain";   // INDICATOR_SHORTNAME

トレンドラインまたは水平線の名前 - インジケータを設定する。

input string   InpIndiL                     = "AVERAGE 0";       // Line name (ChartIndicatorAdd)

インディケータ名 - チャートにインストールするインディケータを指定します。

input string   InpIndi_name                 = "Obj LeM Brain";   // INDICATOR_SHORTNAME

指標の水平線またはトレンドラインの名前。

input string   InpObjUpNameG                = "POT";             // Obj: TOP (Horizontal Line)


input string   InpObjDownNameG              = "REWOL";           // Obj: LOWER (Horizontal Line)

撮影者

-------------------------- 動作原理は以下の通りです。

GBPUSDM2

----------------------- インジケータは水平線(青)を移動します - これを突破すると、売りで開き、インジケータを削除し、別のインジケータが拾ってインジケータの紫のレベルにラインを移動する黄色の線を設定します - 後 、水平 黄色の線は、再びインジケータを設定します。

GBPUSDM2h

ファイル:
 
ゲージ」でやって、「ゲージ」でトレードして。

"Finger in the sky "は、風の中の時間。
 
Alexsandr San:

デポジットを抜くと、つつき始めるんです。

つまり、取引を開始する前に預金を失ってしまうのです。
それゆえ、最初から最後まで「つっこむ」のです。
 
Alexsandr San:

何か気の利いたことを言うかと思ったのに。

スマートなことは、すぐに必要なときに言うものです。
今、そのニーズがあったのです。しかし、どうやら効果はなかったようだ。
削除済み  
Alexsandr San:

ユーティリティ(「ユーティリティコマンド」)にこの機能を追加 #property version "1.004"

をクリックすると、この機能に関する設定が表示されます。

トレンドラインや水平線の名前 - Indicatorをインストールする。

インディケータ名 - チャートにインストールするインディケータを指定します。

指標の水平線またはトレンドラインの名前。

-------------------------- 作業の原則は、次のとおりとする。

---------------------- インジケータは水平線(青)を移動します - これを突破すると、SELLでオープンし、インジケータを削除して黄色のラインを設定します、これは別のインジケータによってピックアップされ、インジケータの紫のレベルにラインを移動します - 後 、水平 黄色、再びインジケータを設定することになります。


機能は完全に動作します - ユーティリティは、非常に、悪くないが判明した。

しかし、この機能に加え、オープンポジションからのポイント数でインジケーターを設定する機能を追加する必要があります。

撮影者