初めての方からの基本的な質問

 

みなさん、こんにちは。

すぐに指摘しておきますが、私はこれらの質問をここの 関連スレッドでしようとしたのですが、どういうわけか質問が注目されませんでした。とはいえ、一度は触れた話題は、多くの人の心に触れる/浮かび上がるような気がします。FAQからの質問のようなものです(間違っているかもしれませんが)。質問そのものを直接ここに重複して書いておきます。

1.Mql4とMql 5の違い(サイトとプログラミング言語)ですが、Mql4でメタトレーダー4、Mql5でメタトレーダー5が存在します。また、対応するウェブサイトも2種類あります。同時に、私がMT4で調べたExpert Advisorは、すべてそのサイトに通じています。どちらが関連性が高いのでしょうか?どのフォーラムが「活気がある」のか?質問を投稿する場所はどこが良いですか?MTとMqlの異なるバージョン間の後方互換性はありますか?私自身は、現在、MT4のExpert AdvisorをそれぞれMql4で書いているところです。これは、私がデモのテストに使っているブローカーがMT4を使っていることに起因しています。Expert Advisor が記述されている言語を確認するにはどうすればよいですか?拡張子のみ(.mq4と.mq5)でという意味です。ファイル名を変更したら、コンパイルできるのか(これも互換性について)?

2.Dynamic External Expert Advisor パラメーター。E xpert Advisorの調整可能なパラメータを動的に変更することは可能ですか?説明しますと...例えば、外部パラメータ extern bool a がある。真である場合、追加パラメータ extern int b を設定する。a=false の場合、パラメータ b は不要である。セレクテッド(selected)の現在値によって表示/非表示を切り替える方法はありますか?外部パラメータ変更ハンドラが見つからなかったことと、#if ... がないことを考慮に入れて。#endif、できないのでは...。もしそうならですが、このような場合、外部パラメータを設定するプロセスに負荷をかけないよう、最適な方法をご教示いただけないでしょうか。例えば、a=falseにして、パラメータbが使われていないことを忘れても、最適化に含めることができます(ただし、意味はなく、余計な時間を浪費するだけです)。そして、そのようなパラメータbが1つしかない場合は、1つである。しかし、例えば、enumの外部パラメータを作り、TCのドロップダウンのバリエーションがいくつかある場合。これらは共通の部分を持ちますが(したがって、いくつも書くよりも一つのEAに実装するのが論理的です)、多くの異なるパラメータを持つ別のものもあります。そうすると、どのパラメーターが選択したTSに関係するのか、非常に混乱しやすくなります。

Expert Advisorの自動最適化。I MHOは、とても便利で重宝しています。実際の取引における取引ロボットの自動最適化に関する記事を見つけました。 しかし、私が理解する限り、外部から最適化のために実行される(MTの実行中のインスタンスから)2番目のインスタンスが使用され、最適化の結果はhtmlの形でレポートから読み取られます。これでは、とても便利とは言えず、曲者です。論理的には、私は独自の最適化関数/DLLを作成し、Expert Advisorから直接それを実行する必要があります。そこで質問です。私が理解した限りでは、遺伝的最適化アルゴリズムがストラテジーテスターにプログラムされていました。これらのアルゴリズムについては、ごく簡単に知っています。しかし、それらは長い間知られていたことであり、それゆえに「なぜ車輪を再発明するのか」という疑問があるのです)。MTで直接使用する既成のアルゴリズムはありますか?もしかしたら、端末自体のライブラリのどこかに既に存在しているのかもしれませんが...。もしかしたら、別のソースコードやレディDLLがあるのかもしれません。一般的に、この件に関するあなたの経験を教えてください。

これらの質問の少なくとも一部について、ご回答をよろしくお願いします。

 
gammaray:

みなさん、こんにちは。

すぐに指摘しておきますが、これらの質問はこちらの 関連スレッドで行おうとしたのですが、どういうわけか質問が注目されなかったのです。とはいえ、一度は触れた話題は、多くの人の心に触れる/浮かび上がるような気がします。FAQからの質問のようなものです(間違っているかもしれませんが)。質問そのものを直接ここに重複して書いておきます。

1.Mql4とMql 5の違い(サイトとプログラミング言語)ですが、Mql4でメタトレーダー4、Mql5でメタトレーダー5が存在します。また、対応するウェブサイトも2種類あります。同時に、私がMT4で調べたExpert Advisorは、すべてそのサイトに通じています。どちらが関連性が高いのでしょうか?どのフォーラムが「活気がある」のか?質問を投稿する場所はどこが良いですか?MTとMqlの異なるバージョン間の後方互換性はありますか?私自身は、現在、MT4のExpert AdvisorをそれぞれMql4で書いているところです。これは、私がデモのテストに使っているブローカーがMT4を使っているためです ...

...

私のMQL4関連の質問は「4つ目」のフォーラムに入れるのが筋でしょう。MQL5とMQL4の差はあまり大きくはありませんが。MQL4から移行 しました。したがって、このフォーラムで「4」に関する質問をしたい場合は、スレッドタイトルにMT4に関するものであることを明記したほうがよいでしょう。そのほうがクリアになる。


... Expert Advisorが記述されている言語はどのように決定するのですか?つまり、拡張子(.mq4と.mq5)のみで。また、ファイル名を変更した場合、コンパイルは可能でしょうか(これも互換性について)。

...

延長については。ファイル名を変更すると、MT4とMT5の両方でうまくコンパイルして動作するファイルがあります - ここに一般的なレシピはありません。
 
Karputov Vladimir:

MQL4の質問を「4つ目」のフォーラムに宛てて行うのは理にかなっています。MQL5とMQL4の差は大きくないが。MQL4からの移行 です。したがって、このフォーラムで「4」について質問したい場合は、トピックの見出しにMT4に関するものであることを明記したほうがよいでしょう。そのほうがクリアになる。


延長について。MT4またはMT5ファイルを持つMT4またはMT5口座をお持ちでない場合は、取引ロボットの前提条件として使用することができ、取引ロボットやMT4ファイルを作成する必要はありません。
mql4に関する質問は最初だけで、あとはmql4とmql5で共通だと思います。最初の質問に答えていただき、ありがとうございました;)何より2つ目の質問に興味があります。そして、3つ目の質問は、すべてのEA開発者にとって興味深いものでしょう。)
 
2つ目の質問については、input, sinput, ParametrGetRange(...), ParametrSetRange(...) をご覧ください。
 
Vladimir Kazakov:
2つ目の質問については、input, sinput, ParametrGetRange(...), ParametrSetRange(...) をご覧ください。

Expert Advisor の外部パラメータの設定方法は聞いていません。昔、習ったことがある(input, extern)。設定に表示されるパラメータのセットを動的に変更する方法と可能性について質問しました。 mqlではParametrGetRangeとParametrSetRangeは見つかりません。これらは、ビルトイン機能ではないのですか?どこを探せばいいのか?

追伸:sinputの使用は、他のパラメータと束縛されることなく、そのパラメータ単体で最適化できないことを示すヒントとしてのみ使用することができます。しかし、最適化で取得するパラメータ(選択されたパラメータから重要なパラメータは何か)を提案するために、既に選択したパラメータに応じてinputをsinputに動的に変更することもできないので、現在意味のないパラメータを実行して時間を浪費する必要はないのです

 

パラメータ」タブでは、プログラムによる変更は一切できません。OnInit()からINIT_PARAMETERS_INCORRECTを 返すことで、無効化されたパラメータセットをスキップすることができます。

スタート、ステップ、ストップ、最適化許可をプログラムで変更することができます。https://www.mql5.com/ru/docs/optimization_frames

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Kazakov:

parameters タブでは、プログラムによる変更は一切できません。無効化されたパラメータセットは、スキップすることができません。

スタート、ステップ、ストップ、最適化解像度をプログラムで変更することができます。https://www.mql5.com/ru/docs/optimization_frames

これらの関数は、mql4のヘルプに見当たらないので、どうやらmql5で登場したようです。それから、相性の問題もあります。Metatrader5で作成したEAをMetatrader4で使用できますか?ありそうでなかった。特にmql5で導入された新機能を利用する場合。mql5には最適化を実行する機能はあるのでしょうか(あくまで質問3の件です)。
 

初心者からの基本的な質問」というトピックで、初心者の私には何もわかりません。さて、ここで私の初歩的な疑問の答えが出る(というか、期待)。Expert Advisorを書くために、ステップバイステップのガイドに 従おうとしました。MKL5で建てたポジションを(SLやTPを待たずに)、2つのMAの交点やボリンジャーラインの狭まりなど、ある指標のシグナルが出たときに強制的に決済する方法という面で行き詰まってしまったのですが?ClosePos()のような関数があるはずですが、どこにあって、どうすれば手に入るのでしょうか?私はまだMKL5の赤ちゃんなので、ニュアンスを理解することができないので、詳細なコードの一部をお願いします。

 
doublezero:

初心者からの基本的な質問」というトピックで、初心者の私には何もわかりません。さて、ここで私の初歩的な疑問の答えが出る(というか、期待)。Expert Advisorを書くために、ステップバイステップのガイドに 従おうとしました。MKL5で建てたポジションを(SLやTPを待たずに)、2つのMAの交点やボリンジャーラインの狭まりなど、ある指標のシグナルが出たときに強制的に決済する方法という面で行き詰まってしまったのですが?ClosePos()のような関数があるはずですが、どこにあって、どうすれば手に入るのでしょうか?私自身はニュアンスを理解していないので、コードの詳細なスニペットを要求します - MKL5でまだ赤ちゃんです。

私自身、1ヶ月を切ってから対処しています。問題は、自分でやるか、フォーラムで聞くかです。それは非常によくないので、簡単な質問は、通常求めない(あなたがヘルプで見ることができ、インターネット上で準備ができて答えを探す)。だから、この1ヶ月の間に出てきた、かなり広範囲な質問をしたんです。ご質問の件ですが...OrderClose関数が呼び出される。その使用例はたくさんあります。内蔵のMACDサンプルにあります。MACDシグナルによる注文の決済に使用するコードです(Trailing Stopを実装するためのコードサンプルはこちら)。


//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {
            //--- should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            //--- should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }


また、一般的には、「インデックス」に「オーダー」と入力すれば、オーダー管理に関するすべての機能が表示されます
 
gammaray:

私自身は、1カ月弱の間、これを続けています。問題は、自分でやるか、それともフォーラムで質問するかということです。簡単な質問は、あまり適切ではないので、普段はしません(ヘルプデスクで調べたり、インターネットで検索すると答えが見つかります)。だから、この1ヶ月の間に出てきた、かなり広範囲な質問をしたんです。ご質問の件ですが...OrderClose関数が呼び出される。その使用例はたくさんあります。内蔵のMACDサンプルにあります。MACDシグナルによる注文の決済に使用するコードです(Trailing Stopの仕組みを実装するサンプルコードです)。



こんなに早い返信をありがとうございますおそらく、このようなことに長く向き合ってきた人が贈るのだろうと思ったからです。

ただし、OrderCloseはMKL4にはあるが、MKL5にはない。標準ライブラリの CTradeクラスにはPositionClose 関数しかありません。 そして、そこからどうやって取り出すのかが全くわからないのです。そのためには、コードからライブラリへ、そしてクラスCTradeへ、何らかの方法で呼び出す必要があると思うのですが......。全体として、私にとっては暗い森です。私はMKL5を勉強するつもりはなく、(私にとって)かなり成功した戦略を自動化しようと思い、ステップバイステップの指示に従うようになっただけなのです。そして今、私は行き詰っている...。

 
doublezero:

こんなに早く返信してくれてありがとうございます多分、初めての人から来ると思っていたんです。

ただし、OrderCloseはMKL4にはあるが、MKL5にはない。標準ライブラリの CTradeクラスにはPositionClose 関数しかありません。 そして、そこからどうやって取り出すのかが全く不明です。そのためには、コードからライブラリへ、そしてクラスCTradeへ、何らかの方法で呼び出す必要があると思うのですが......。全体として、私にとっては暗い森です。私はMKL5を勉強するつもりはなく、(私にとって)かなり成功した戦略を自動化しようと思い、ステップバイステップの指示に従うようになっただけなのです。そして今、私は行き詰っている...。

私は mql 5で何かを台無しにしていました、私はOrderSendを使いたくありません、すべてはそこで行われます(閉じることを含む)。繰り返しになりますが、MT5にも同じMACD Sampleがあります。でも、10倍以上の回線が必要で...。
Ошибка закрытия ордера
Ошибка закрытия ордера
  • www.mql5.com
Скажите а есть отдельная команда по закрытию позиции или только встречная позиция? - - Категория: эксперты форекс, торговые роботы и советники
理由: