ロボットの作成 - ページ 5

 

Horizontal Linesを 設定するためのボタンを2つ追加しました。

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


ファイル:
ioia3x_0004.PNG  96 kb
0004.mq5  44 kb
 

水平トレンド 線のコマンドを追加しました。

//+------------------------------------------------------------------+
//|                                                         0005.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"
#define    InpMagic  182979245
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//---
CPositionInfo  m_position; // trade position object
CTrade         m_trade;    // trading object
CSymbolInfo    m_symbol;   // symbol info object
//+------------------------------------------------------------------+
//| ENUM_TRADE_COMMAND                                               |
//+------------------------------------------------------------------+
enum ENUM_TRADE_COMMAND
  {
   Turn_Off=0,       // TURN  OFF
   UpName=1,         // Line UpName
   DownName=2,       // Line DownName
   UpName_s=3,       // Line UpName + Open Sell
   UpName_b=4,       // Line UpName + Open Buy
   DownName_b=5,     // Line DownName + Open Buy
   DownName_s=6,     // Line DownName + Open Sell
   close_buys=7,     // Close All Buy's
   close_sells=8,    // Close All Sell's
   close_all=9,      // Close All Buy's and Sell's
   open_buy=10,      // Open  Buy
   open_sell=11,     // Open  Sell
   close_open_b=12,  // Close Sell + Open Buy
   close_open_s=13,  // Close Buy + Open Sell
   open_buy_sell=14, // Open  Buy and Sell
  };
//+------------------------------------------------------------------+
input string   t="----- Lots                -----";              //
input double   InpLots                      = 0.01;              // Lots
input string   t0="---- Line Name           -----";              //
input string   InpObjUpName                 = "Имя Линии Up";    // Obj: Up (Trailing Horizontal Line) or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommand    = UpName_s;          // Obj:  command: UP
input string   InpObjDownName               = "Имя Линии Down";  // Obj: Down (Trailing Horizontal Line) or Trend Line)
input ENUM_TRADE_COMMAND InTradeCommand     = DownName_b;        // Obj:  command: DOWN
input ushort   InpObjStep                   = 15;                // Obj: Step (distance from price to object, in pips)
input string   t1="---- Indicators: UP      -----";              //
input bool     InpIndicatorsUp              = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = open_buy;          // Trade command: ( Buy )
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_sell;         // Trade command: ( Sell )
input string   t2="---- Indicators:         -----";              //
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = close_sells;       // Trade command: ( Buy )
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_buys;        // Trade command: ( Sell )
//---
double   m_adjusted_point;                // point value adjusted for 3 or 5 points
int      handle_iCustomUp;                // variable for storing the handle of the iStochastic indicator
int      handle_iCustom;                  // variable for storing the handle of the iStochastic indicator
datetime ExtPrevBarsUp           = 0;     // "0" -> D'1970.01.01 00:00';
datetime ExtPrevBars             = 0;     // "0" -> D'1970.01.01 00:00';
double   m_obj_step              = 0.0;   // Obj: Trailing Stop   -> double
uint     SLEEPTIME               = 1;     // Время паузы между повторами в секундах
ushort   InpSignalsFrequency     = 1;     // Search signals, in seconds (min value "1")
datetime ExtLastSignalsRx        = 0;     // "0" -> D'1970.01.01 00:00';
datetime ExtPrevBarsRx           = 0;     // "0" -> D'1970.01.01 00:00';
datetime ExtLastSignalsSx        = 0;     // "0" -> D'1970.01.01 00:00';
datetime ExtPrevBarsSx           = 0;     // "0" -> D'1970.01.01 00:00';
bool     ExtTurnOff              = false; //
bool     ExtUpName               = false; //
bool     ExtDownName             = false; //
bool     ExtNeedCloseBuy         = false; //
bool     ExtNeedCloseSell        = false; //
bool     ExtNeedCloseAll         = false; //
bool     ExtNeedOpenBuy          = false; //
bool     ExtNeedOpenSell         = false; //
bool     ExtNeedOpenBuySell      = false; //
//+------------------------------------------------------------------+
ファイル:
0005.mq5  101 kb
 
SanAlex:

水平トレンド 線のコマンドを追加しました。

皆さん、良い一日を、良い気分でお過ごしください。

ローマンは何を要求したのですか?これは彼の最初の投稿からの引用です: "完全にプログラム、それが開始されたときに取引を開くために、何が何であるかを説明してください。たくさん手伝ってください。"

何のためのコードなのか 説明もなく、ただコードを追加しても意味がありません

Romanさん、この状況に対するあなたの解決策は、私と全く同じです。CodeBase のシンプルな Expert Advisor を使ってみましょう。少なくともこれはhttps://www.mql5.com/ru/code/138 です。

MetaEditorでそのコードを開き、コードの各行にあるコメントを研究し始める。コメントがすべて英語で書かれているEAもあります。言語がよくわからない場合は、Google翻訳を利用すると便利です。もし、Expert Advisorで、行の解説がない場合は、プログラムコード内のすべての色のついた単語を順次検索し、その上にカーソルを置いてF1キーを押すと、MQL5のマニュアルの適切なセクションが開かれるようになっています。これらの項目を読み、自分の言葉でコメントし、わからないことがあれば、ここで質問してください。そうすることで、プログラミング言語の習得をより早く進めることができます。

ウラジミールさん、ありがとうございます。

Советник "Метод Пуриа"
Советник "Метод Пуриа"
  • www.mql5.com
Предлагается использовать следующие валютные пары в торговой стратегии форекс "Метод Пуриа" : AUDJPY - M30 - 15 пунктов (т.е. закрываем сделку при 15 пипсов тейк-профита) NZDUSD - 1H - 25 пунктов USDCAD - H1 - 20 пунктов EURGBP - H1 - 10 пунктов USDJPY - M30 - 15 пунктов GBPUSD - М30 - 20 пунктов USDCHF - M30 - 10 пунктов EURCHF - H1 - 15...
 
MrBrooklin:

皆さん、ご機嫌いかがでしょうか?

ローマンは何を要求したのですか?ここに彼の最初の投稿からの引用があります: "完全にプログラム、それが起動すると、貿易を開く上で、何が何であるかを説明してください。たくさん手伝ってください。"

説明なしにただコードを追加しても、彼にとっては無意味なのです

Romanさん、この状況でのあなたの解決策は、私と全く同じです。CodeBase のシンプルな Expert Advisor を使ってみましょう。少なくともこれはhttps://www.mql5.com/ru/code/138 です。

MetaEditorでそのコードを開き、コードの各行にあるコメントを研究し始める。コメントがすべて英語で書かれているEAもあります。言語がよくわからない場合は、Google翻訳を利用すると便利です。もし、Expert Advisorで、行の解説がない場合は、プログラムコード内のすべての色のついた単語を順次検索し、その上にカーソルを置いてF1キーを押すと、MQL5のマニュアルの該当箇所が開かれます。これらの項目を読み、自分の言葉でコメントし、わからないことがあれば、ここで質問してください。そうすることで、プログラミング言語の習得をより早く進めることができます。

ウラジミールさん、ありがとうございます。

私は理解していない - それは私が騙されたものを削除する方が良いですか?- その彼自身は、どのように学ぶか?

 
SanAlex:

よくわからないのですが、私がしたことは削除したほうがいいのでしょうか?- 自分で勉強できるように?

削除ではなく、 コードに書かれていること、なぜ そうなるのかを説明するのです

敬具 ウラジミール

 
MrBrooklin:

削除ではなく、 コードに書かれていること、なぜ そうなるのかを説明することです

ウラジミールさん、謹んで申し上げます。

私自身は独学で、利用可能なコードから自分でコピーしています、 - 問題は、私はどのように彫刻する方法を説明する方法を知らないことです!?- 自分の中にある何かが、どう彫ればいいのかを教えてくれる。

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

私が成型したものは分かっていますが、そこに足りないのはライン用のスロールです。

 
SanAlex:

私は独学で勉強しています - そして私は利用可能なコードから自分でコピーします、 - 問題は、私はどのように彫刻する方法を説明する方法がわからないということです!?- 自分の中にある何かが、どう彫ればいいのかを教えてくれる。

まさにそれが問題なんです!MQL5言語を勉強し始めた頃、Expert Advisorの作成に関する 記事をたくさん読みました。 STARTING まだ見つかっていないんです。もちろん、Romanへのリンクが貼られた記事もありますが、少なくとも私にとっては物足りないものです。

私自身、例えばEAのコードをたくさん見ていても、なぜこの行が書かれたのか、理解する術がない。これまでは、既成のExpert Advisorを使って自分でコードを書き換えるくらいの頭脳はあった。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

それが問題なんだ!MQL5言語を勉強し始めた頃、EA開発に関する 記事をたくさん読みました。 ビギナーズ まだ見つかっていないんです。もちろん、Romanへのリンクが貼られた記事もありますが、少なくとも私にとっては物足りないものです。

例えば、私自身もExpert Advisorのコードをよく見ますが、なぜこの行、この行が書かれているのか理解できません。これまでは、ある既成のExpert Advisorから自分でコードを書き換えるくらいの頭脳があった。

敬具 ウラジミール

私は自分のタスクのための関数を探しています - 私はそれがどのように動作するかを理解し始めると、関数を分解し、その後、すべてが容易に習得することができます。

 
SanAlex:

私は、自分の仕事に必要な機能を探しています。その機能を分解して、その仕組みを理解し始めると、すべてが簡単に習得できるようになるのです。

ここでは、私が1時間以上悩んだある問題の実例を紹介します。EAの起動時にZigZagColorインジケータを作成してチャートに表示させたいのですが、どうすればいいですか?int OnInitで行われました。

   handle_iCustom=iCustom(m_symbol.Name(),Period(),"Examples\\ZigzagColor",
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd(ChartID(),0,handle_iCustom);

インジケーターが作成され、表示されました。Expert Advisor を削除 した後に、インジケータを削除する必要があります。書いているところです。

void OnDeinit(const int reason)
  {
//---
   IndicatorRelease(handle_iCustom);
   ObjectsDeleteAll(0,"Examples\\ZigzagColor");
  }

しかし、インジケーターが外れることはない。すべて整理しました。ハンドルの清掃と削除機能の適用を行いました。アンインストールできない原因は何なんだろう。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

ここでは、私が1時間以上悩んだある問題の実例を紹介します。EA起動時にZigZagColorインジケータを作成し、チャートに表示させたかった。int OnInitで行われました。

インジケーターが作成され、表示されました。Expert Advisor を削除した後に、インジケータを削除する必要があります。書いているところです。

しかし、インジケーターが外れることはない。すべて整理しました。ハンドルの清掃と削除機能の適用を行いました。アンインストールできない原因は何なんだろう。

ウラジミールさん、ありがとうございます。

を削除するための、より複雑な機能があります。

input string   t12="--- Indicator Delete    -----";              //
input string   Inpshort_name                = "Имя Индикатора";  // Delete Indicator Name
input string   Inpshort_name_1              = "Имя Индикатора";  // Delete Indicator Name
input bool     Inpres                       = false;             // Delete All Indicators
//+------------------------------------------------------------------+
//| ChartIndicatorDelete                                             |
//+------------------------------------------------------------------+
bool IndicatorDelete(void)
  {
     {ActionsOnTheChart(0);}
//---
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ActionsOnTheChart(const long chart_id)
  {
   int sub_windows_total =-1;
   int indicators_total  =0;
//---
   if(!ChartWindowsTotal(chart_id,sub_windows_total))
     {
      return(false);
     }
//---
   for(int i=sub_windows_total-1; i>=0; i--)
     {
      indicators_total=ChartIndicatorsTotal(chart_id,i);
      //---
      if(indicators_total>0)
        {
         ChIndicatorsDelete(chart_id,i,indicators_total);
        }
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ChartWindowsTotal(const long chart_ID,int &sub_windows_total)
  {
   long value=-1;
//---
   if(!ChartGetInteger(chart_ID,CHART_WINDOWS_TOTAL,0,value))
     {Print(__FUNCTION__," Error = ",GetLastError()); return(false);}
//---
   sub_windows_total=(int)value;
//---
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ChIndicatorsDelete(const long  chart_id,
                        const int   sub_window,
                        const int   indicators_total)
  {
   for(int i=indicators_total-1; i>=0; i--)
     {
      string indicator_name=ChartIndicatorName(chart_id,sub_window,i);
      //---
      ChIndicatorDelete(indicator_name,chart_id,sub_window);
      ChartRedraw();
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ChIndicatorDelete(const string shortname,
                       const long   chartid=0,
                       const int    subwindow=0)
  {
   bool res=ChartIndicatorDelete(chartid,subwindow,Inpshort_name);
   bool res2=ChartIndicatorDelete(chartid,subwindow,Inpshort_name_1);
   if(Inpres)
      bool res0=ChartIndicatorDelete(chartid,subwindow,shortname);
//--- проанализируем результат вызова ChartIndicatorDelete()
   if(!res)
     {
      PrintFormat("%s",shortname,subwindow,GetLastError());
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+