MQL5言語をゼロから独学で学ぶ - ページ 70

 
MrBrooklin:

私たちは物事を正式名称で呼ぶべきです。今のところ、私はプログラミングにおいてコルク栓のように頭が悪い のです初歩的なことがわからない。名前で呼ばないと......今のところ、私はプログラミングがおぼつかないので、基本的なことがわからないんです。先週末、マルチメーターと祖父の虫眼鏡を使って、微小な寸法のSMDコンデンサの不具合を見つけました。故障、ショートサーキット、あるいはショートサーキットの略語から「コザ」と呼ばれていた、つまり短絡を示したのだ。ここでは、あまりにも微細な素子であるため、スマートフォンで4倍に拡大して「穴あき」SMDコンデンサを撮影し、その後Paintで 加工しています。


ちょっと脱線して、せめて何かアピールしてみようと思い立ちました

そして、言語を学びたいという気持ちと、プログラミングの基礎を身につけたいという希望があります。

ウラジミールさん、よろしくお願いします。


カッコイイ!ところで、これらのことは、お互いに近いところにある。
私が学生だった90年代には、これらの部門は同じ情報工学科の中にありました。
 
Roman Shiredchenko:

ここで- 反対意見を言わせてもらうと、コーディングはできるし、すべきなのだが、それを妨げるものは...。を理解すること、などなど...。また、IMHOは、記事があり、kodobaseのロボットがあります - 読んで、すでに準備ができてコードを解析する - すぐに文章のスタイルを学びます。なぜ車輪の再発明をしたいのですか?リテラシーの高いコードから直に学ぶ。

ここにV.Karputovによるトロールがあります- それはROBOTSにあります、見て - あなたのニーズ(用語とあなたの空想)にそれを調整します。

追伸:あなたのおかげで、このブランチの主題は、私はコード、その機能を理解し始めた...、記事を勉強し、自分のために基本的なことを繰り返す...。

ご指摘ありがとうございます。:-)(冗談抜きで)

ローマンさん、こんにちは。作成した題材が、今でも自分以外の誰かの役に立っていることを読むと、ありがたく思います。ありがとうございました。

ウラジーミル・カルプトフが書いた暗号については、私には今のところ手が届きません。一般的に、含まれるファイルやクラスが含まれるコードが理解できない。なぜ、あるファイルが別のEAに含まれているのか、大きな謎です

私は主に、付属のファイルやクラスを使わずに書かれたコードを探し、研究しています。Vladimir Khlystov氏によって書かれたExpert Advisorsは、独習に非常に適しています。あ りがとうございました。MQL5ではExpert Advisorが少なすぎるのが残念です。

では、なぜ既成のコードを使わないでほしいとお願いしているのか、その理由を説明したいと思います。理由は、レディコードにヒントを得て、その言語を勉強する気がなくなってしまうことがあるからです。Expert Advisorに既成のコードを貼り付けるだけで、それが機能するのですから、どんなメリットがあるのでしょうか?また逆に、例えば今のループ演算子の誤解の ように、すぐに理解して書けないときは、とても爽快で、やる気が出ますね

MQL5を学ぶことは何も問題ないと思います。ちょうど、電子工学を学んでいて、ある元素のベースの研究から別の元素の研究へと、ほぼ同じ段階を体験しているところです。ただ、今と違って、若いうちは何でもかんでも感知して同化しやすいということです。それはもう、経験済みです。

応援の言葉や建設的な提案を下さったALLさん、ありがとうございましたMQL5の勉強を続けています半日ほど、モスクワの端のほうに仕事で行くので、「いなくなる」のですが、その後、続きをやります。

敬具 ウラジミール

 
Aleksey Masterov:

カッコイイ!ちなみにこれらはすべて近くにあるのですが...。
私が学んだ大学では、90年代には、これらの部門が同じIT部門に属していました。

90年代には、卒業証書を買っていました。

- このように、各部門の責任者が、すべてのオフィスに座っているのが見えないでしょうか。

 
SanAlex:

90年代には、卒業証書を買っていました。

- 今、すべてのオフィスに部長が座っているのが見えないのでしょうか?

当時は卒業証書を買う可能性すらありませんでした。事実、過去30年の間に技術は大きく進歩し、知識は非常に不足しています。例えば、当時は単に存在しなかったオートキャドを学び、非常に基本的なC++も作らなければなりませんでした。ですから、すべてにおいて、常にもっと学び、改善し、時代に追いつく必要があります。)

 
VVT:

当時、学位が買えたかどうかも問題ではありません。事実、過去30年の間に技術は非常に進歩し、知識はすでに非常に不足しています。例えば、当時は単に存在しなかったオートキャドを学び終えなければなりませんでしたし、非常に基本的なC++もやりました。ですから、すべてにおいて、常に学び、改善し、時代について行く必要があります)

この30年で技術は 大きく進歩しましたが、まだ60年代に開発されたものが使われています。

 

皆さん、こんにちは。

面白いことを付け加えるとすれば、「MQL5を ゼロから独学で」というのは、ちょっと違うんじゃないかと思います。 プログラミングが0の人は、まずプログラミングを学ばないといけないですからね。MQLで ゼロからプログラミングを学ぶことを目的とする場合、人はまずCでプログラミング する方法を、少なくとも非常に基本的なことから学ばなければなりません。ロシア語を知らずにラテン語を学ぼうとするようなものだ...。

もうひとつは、C言語がプログラミングを学ぶのにあまり適していないということです。C言語はシンプルですが、簡潔すぎるため、アルゴリズム、データ型、ブール代数の基本的な理解がないと、初心者がコードを読んで理解するのは困難です。 C言語で3文字並んでいても、他の言語では複数の文字列を意味することもあるのです。

ゼロから単にプログラミングを学ぶために、ベースのために、1つの(関係ない)言語でコンピュータに話をすることを学ぶために、私はパスカル、それからC(勤勉とパスカル最大週の後にそこに、構文をマスターする最も簡単な本で始まることをお勧めします、私は基本的な言語スキルを意味します!)。)、そしてMQLのような専門的な言語を取り上げる。MQLはC言語であり、単一のタスクのために設計され、コンパイラは当たり前のことを知っているので、少しひねって単純化したものだからだ。そして、CはRAR圧縮されたPascalのようなものですが、Pascalはほとんど英語です =)。

さて、ループについてです。

プログラミングを学んでいたとき、代数学の和のアナロジーが役に立ちました。nの初期値、nの最終値、このnを使った計算式を指定して計算するのですが、この計算式は、nの初期値、nの最終値、このnを使った計算式です。

 
VVT:

当時、卒業証書を買うことができたかどうかということではなく、過去30年の間に技術が進歩し、その知識が非常に不足しているということです。例えば、私は当時存在しなかったオートキャドを学ばなければなりませんでしたし、非常に基本的なC++もやりました。ですから、すべてにおいて、常にもっと学び、改善し、時代についていく必要があります)



autocadはありましたね。それをもとに回路や層の配置を学ぶ授業があったのですが...回路基板
 
Aleksey Masterov:
:-) autocadでした。それをベースに回路やプリント基板の層...
のレイアウトを学ぶ授業がありました。

パソコンは22台しかなく、授業の最後にしか読み込まない)先生は日中もつけているだけで、仕事どころではなく、カドの話もせず...。

 
MrBrooklin:

ローマンさん、こんにちは。このトピックが自分以外の誰かの役に立っていることを読んで、嬉しくなりました。ありがとうございました。

ウラジーミル・カルプトフが書いた暗号については、私にはまだ到達できないレベルです。一般的に、インクルードファイルやクラスをインクルードするコードが理解できない。なぜ、あるファイルが別のEAに含まれているのか、大きな謎です

私は主に、付属のファイルやクラスを使わずに書かれたコードを探し、研究しています。Vladimir Khlystov氏によって書かれたExpert Advisorsは、独習に非常に適しています。あ りがとうございました。MQL5ではExpert Advisorが少なすぎるのが残念です。

では、なぜ既成のコードを提案しないでほしいとお願いしているのか、その理由を説明したいと思います。理由は、レディコードにヒントを得て、その言語を勉強する気がなくなってしまうことがあるからです。さて、あなたは既製のコードをExpert Advisorに挿入し、それが有効になったので、それは何の役に立つのでしょうか?そして逆に、例えば今のループ演算子に対する誤解の ように、すぐに理解して書けないことがあると、信じられないくらい拍車がかかり、やる気が出てくるのです

MQL5を学ぶことは何も問題ないと思います。ちょうど、電子工学を学んでいて、ある元素のベースの研究から別の元素の研究へと、ほぼ同じ段階を体験しているところです。ただ、今と違って、若いうちは何でもかんでも感知して同化しやすいということです。それはもう、経験済みです。

応援の言葉や建設的な提案を下さったALLさん、ありがとうございましたMQL5の勉強を続けています半日ほど、モスクワの端のほうに仕事で行くので、「いなくなる」のですが、その後、続きをやります。

敬具 ウラジミール

そうですね、彼のコードも良いですよ 何でもないことに熱くなるな。慌てずに静かにコードを整理する、それだけです。ここでは、すべての小学校だ- 選択とトロール:(どのくらい簡単 - 選択のちょうどあなたのトピック 必要な位置...:-))

//--- при таком методе мы будет сюда попадать на каждом тике.
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Bid()-ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }

            if(m_position.PositionType()==POSITION_TYPE_SELL)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Ask()+ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }
           }
  }

それ以外に、インクルードファイル - それは、関数としてもコード内に持っていることを意味し、それだけで十分です。

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

ここで別の記事 - トロール2010 - トロールは、標準的なMACDの配信から顧問にあります。



ここにも ポジション計算のボリュームに関する素晴らしい咀嚼が あります!!!自分も深入りしてしまった...。:-)

シンボルの総ポジション量を決定するもう一つの方法は、ループ内のすべてのポジションを通過することで、ポジションの数はPositionsTotal() 関数によって決定されます。PositionGetSymbol() 関数で確認し、必要なシンボルを見つけ、位置ボリュームと方向(PositionGetDouble()POSITION_VOLUME 識別子、PositionGetInteger()POSITION_TYPE 識別)を決定する。

この場合、完全な関数は次のようになります。

double fSymbolLots(string aSymbol)
  {
   double TmpLots=0;
   for(int i=0;i<PositionsTotal();i++) // Перебор всех позиций
     {
      if(PositionGetSymbol(i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots=PositionGetDouble(POSITION_VOLUME);
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            TmpLots*=-1; // В зависимости от направления позиции устанавливаем знак числа
           }
         break;
        }
     }
   TmpLots=NormalizeDouble(TmpLots,2);
   return(TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...