MQL5言語をゼロから独学で学ぶ - ページ 14 1...789101112131415161718192021...84 新しいコメント Реter Konow 2020.10.05 16:28 #131 MrBrooklin:今後、自習計画に従って、段階的に スクリプトを修正していくことが課題となる、すなわち。 ストップロスとテイクプロフィットを追加する。 は、末尾を追加します。 最大限のリスクを追加する。 保留中の注文の 範囲を拡大する。 Sincerely, Vladimir.. もちろん、チュートリアルのアドバイスに従わなかったのは残念なことです。ラインや注文の入れ方などは学べますが、理論的なベースがないため、とにかくストラテジーが書けなくなります。このようなラインやスクリプトばかりでは、基本的なプログラミングの内容を理解することはできませんし、それなしには遠くへ行くことはできません。最初の4ヶ月は、何も書こうとせず、ただ勉強することに費やしました。もちろん、あなたのように図々しくしてもいいのですが、そうした知識の質は低く、基本に隙間が多いので、これから埋めていかなければならない......。 MrBrooklin 2020.10.05 16:34 #132 Реter Konow: もちろん、チュートリアルのアドバイスに従うべきではありませんでした。ラインやオーダーの設定方法などの知識は得られても、理論的なベースがないため、とにかく戦略を練ることができないのです。このようなラインやスクリプトばかりでは、基本的なプログラミングの内容を理解することはできませんし、それなしには遠くへ行くことはできません。最初の4ヶ月は、何も書こうとせず、ただ勉強することに費やしました。もちろん、あなたのように図々しくてもいいのですが、そういう知識の質は低いですから。基本には常に隙間があり、それを将来的に埋めていかなければならない...。 ピーターさん、こんにちは。教科書は必要に応じて、つまり自分の知識にギャップがあるときに勉強しています。今、少し間を置いて、教科書をもっとよく勉強しなければならないと感じています。フォーラム参加者からの推奨はすべて考慮に入れており、それを守るようにしています。そして今、このように短期間にMQL5 Reference bookだけを使って 何かを書くことができたことに驚きを感じています。 ウラジミールさん、ありがとうございます。 Vasiliy Sokolov 2020.10.05 16:35 #133 MrBrooklin:皆さん、こんばんは!ご機嫌いかがでしょうか?新しいスクリプトNew6.mq5を貼り付けます。このスクリプトは、現在のチャート上の現在の価格から一定の距離に、固定ロットサイズのSellStopとBuyStopの保留注文を一つずつ配置するのに役立ちます。このスクリプトでは、先ほど約束したように、小学1年生のプログラマーにもわかりやすいように、すべてを記述するように心がけました。 MQL5 Referenceから 引用した情報は、スクリプトを書くときだけ使用しましたウラジミールさん、よろしくお願いします。 これは良い例です。そのきっかけとして使うことをお勧めします。基本中の基本。 MrBrooklin: 今後、自習計画に従って、段階的に スクリプトを修正することが課題となる、すなわち ストップロスとテイクプロフィットを追加する。 は、末尾を追加します。 最大限のリスクを追加する。 保留中の注文の 選択を拡大する。 Sincerely, Vladimir.. いいえ、違います。新機能はまだ接続しないでください。今度は既存のロジックを改良する。同時に、スクリプト実装の問題点を解消してください(すでに出ています)。何を書き換えたらいいのか知りたいなら、教えてあげよう。 MrBrooklin 2020.10.05 16:38 #134 Vasiliy Sokolov:お手本になりますね。そのきっかけとして使うことをお勧めします。ベースラインいいえ、違います。まだ新しい機能を差し込まないでください。今度は既存のロジックを改良する。同時に、スクリプト実装の問題(すでに出ています)も解消してください。具体的に何を書き換える必要があるのか、もしご興味があれば、お教えしますよ。 Vasilyさん、こんにちは。もちろん、書き直した方がいいところを教えてください!面白いですよ。 ウラジミールさん、ありがとうございます。 Vasiliy Sokolov 2020.10.05 16:51 #135 MrBrooklin:Vasilyさん、こんにちは。もちろん、何を書き換える必要があるのか教えてください!とても興味があります。敬具 ウラジミール プログラマは、コンパイラが出すエラーと、アーキテクチャの問題という2つの問題を抱えています。初心者のうちはコンパイラとの戦いに集中し、最終目標は正しく動作するプログラムです。しかし、初心者のプログラムはあっという間に、作者自身がすぐに理解できない、いわゆるスパゲッティコードになってしまう。ですから、コンパイラや最終的なスクリプトの正しさではなく、アーキテクチャの問題に注目することをお勧めします。ピアノを習うように、まずは正しい指の持ち方と楽器の座り方を覚える。初心者にバッハの演奏を求める人はいない。 //+------------------------------------------------------------------+ //| New6.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 //--- #define orderType1 "BUY_STOP" //Тип ордера UP #define orderType2 "SELL_STOP" //Тип ордера DOWN input int Distance=100; //Отступ отложенного ордера от текущей цены input double Lots=0.01; //Фиксированный размер лота input long Pending_magic=86513; //Магический номер ордера //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { MqlTradeRequest request={0}; MqlTradeResult result={0}; request.action=TRADE_ACTION_PENDING; request.symbol=Symbol(); request.volume=Lots; request.deviation=2; request.magic=Pending_magic; double price; double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT); int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); if(orderType1=="BUY_STOP") { request.type=ORDER_TYPE_BUY_STOP; price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+Distance*point; request.price=NormalizeDouble(price,digits); } if(!OrderSend(request,result)) PrintFormat("OrderSend error %d",GetLastError()); if(orderType2=="SELL_STOP") { request.type=ORDER_TYPE_SELL_STOP; price=SymbolInfoDouble(Symbol(),SYMBOL_BID)-Distance*point; request.price=NormalizeDouble(price,digits); } if(!OrderSend(request,result)) PrintFormat("OrderSend error %d",GetLastError()); PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } スクリプトの動作を決定するパラメータは2種類あり、1つ目はマクロとして静的に設定します。2つ目は、チャート上にスクリプトをロードする際に ユーザーが設定するものです。このため、このスクリプトを再コンパイルしないと、ユーザーは発注する注文の種類を選択することができません。これはまずい。したがって、これらのマクロを捨てて、追加パラメータを使用する方がよいでしょう。 enum ENUM_ORDER_TYPE_FLAGS { BuyStop = 1, // Только BuyStop SellStop = 2, // Только SellStop BuyStopAndSellStop = 4 // BuyStop и SellStop }; input ENUM_ORDER_TYPE_FLAGS TypeSendOrders = BuyStop; // Тип Выставляемого ордера(ов) そこで、新たに列挙型を定義し、それをユーザーの選択パラメータとして実装しました。 MrBrooklin 2020.10.05 17:00 #136 Vasiliy Sokolov:プログラマは、コンパイラのエラーとアーキテクチャの問題という2つの問題を抱えています。初心者のうちは、コンパイラと戦うことに集中し、最終的な目標は正しく動作するプログラムです。しかし、初心者のプログラムはあっという間に、作者自身がすぐに理解できない、いわゆるスパゲッティコードになってしまう。ですから、コンパイラや最終的なスクリプトの正しさではなく、アーキテクチャの問題に注目することをお勧めします。ピアノを習うように、まずは正しい指の持ち方と楽器の座り方を覚える。初心者にバッハの演奏を求める人はいない。スクリプトの動作を決定するパラメータは2種類あり、1つ目はマクロとして静的に設定します。2つ目は、チャート上にスクリプトをロードする際に ユーザーが設定するものです。このため、このスクリプトを再コンパイルしないと、ユーザーは注文の種類を選択することができません。これはまずい。したがって、これらのマクロを捨てて、パラメータを追加する方がよいでしょう。そこで、新たに列挙型を定義し、それをユーザーの選択パラメータとして実装しました。 素晴らしい、実際、スクリプトのステップバイステップの改造のステップ 4に書かれていること、すなわち、保留中の注文の 選択を拡大することを促してくれたのです。 ありがとうございました。 ウラジミールさん、ありがとうございます。 Vasiliy Sokolov 2020.10.05 17:02 #137 あなたのコードの次の問題は、それが長い手続き的なシートに広がっていることです。初心者はみんなこう書くんです。そして、これは何年も残る問題なのです。このスクリプトのように基本的なところから、アルゴリズムをパーツに分解することを学びます。その方法には、関数とクラスの2つがあります。最初はクラスの概念が難しすぎるので、関数を扱うことに重点を置くといいと思います。機能の重要性を考える。 MQLで書かれたすべてのコード(例えばCodeBaseのすべてのスクリプト、インジケーター、Expert Advisorなど)は、システム関数内かユーザー関数内のどちらかです。 どんなMQLコードでも、何十ものビルトインMQL関数を呼び出すことができます。MetaTraderとその取引環境とのすべての相互作用は、システム関数の呼び出しを通じて実行されます。 外部パラメータに依存しない関数は、常に同じ結果を返します。このような機能は、あるスクリプト/インジケータ/アドバイザから別のスクリプトにコピーするだけで、正しく動作します。一方、手続き的なコードの任意の部分をコピーすることは、うまくいかない可能性が高いです。 便利な仕事をするカスタム関数は、自由に書くことができます。そうすることで、MQLの標準的な機能を必要な形で拡張することができるのです。例えば、「MQLにこんな機能があったらかっこいいな......」と思うことがあると思います。- でも、なぜ自分で書かないのか? MrBrooklin 2020.10.05 17:05 #138 Vasiliy Sokolov:あなたのコードの次の問題は、それが長い手続き的なシートに広がっていることです。初心者はみんなこう書くんです。そして、これは何年も残る問題なのです。このスクリプトのように基本的なところから、アルゴリズムをパーツに分解することを学びます。その方法には、関数とクラスの2つがあります。最初はクラスの概念が難しすぎるので、関数を扱うことに重点を置くといいと思います。機能の重要性を考える。 MQLで書かれたすべてのコード(例えばCodeBaseのすべてのスクリプト、インジケーター、Expert Advisorなど)は、システム関数内かユーザー関数内のどちらかです。 どんなMQLコードでも、何十ものビルトインMQL関数を呼び出すことができます。MetaTraderとその取引環境とのすべての相互作用は、このまたはそのシステム関数の呼び出しを通じて実行されます。 外部パラメータに依存しない関数は、常に同じ結果を返します。このような機能は、あるスクリプト/インジケータ/アドバイザから別のスクリプトにコピーするだけで、正しく動作します。一方、手続き的なコードの任意の部分をコピーすることは、うまくいかない可能性が高いです。 便利な仕事をするカスタム関数は、自由に書くことができます。そうすることで、MQLの標準的な機能を必要な形で拡張することができるのです。例えば、「MQLにこんな機能があったらかっこいいな......」と思うことがあると思います。- でも、なぜ自分で書かないのか? Vasilyさん、このような包括的なアドバイスをありがとうございました。必ずやそれを踏まえて、ベストを尽くしたいと思います。 ウラジミールさん、ありがとうございます。 Реter Konow 2020.10.05 17:06 #139 Vasiliy Sokolov:あなたのコードの次の問題は、それが長い手続き的なシートに広がっていることです。初心者はみんなこう書くんです。そして、これは何年も残る問題なのです。このスクリプトのように基本的なところから、アルゴリズムをパーツに分解することを学びます。その方法には、関数とクラスの2つがあります。最初はクラスの概念が難しすぎるので、関数を扱うことに重点を置くといいと思います。機能の重要性を考える。 MQLで書かれたすべてのコード(例えばCodeBaseのすべてのスクリプト、インジケーター、Expert Advisorなど)は、システム関数内かユーザー関数内のどちらかです。 どんなMQLコードでも、何十ものビルトインMQL関数を呼び出すことができます。MetaTraderとその取引環境とのすべての相互作用は、システム関数の呼び出しを通じて実行されます。 外部パラメータに依存しない関数は、常に同じ結果を返します。このような機能は、あるスクリプト/インジケータ/アドバイザから別のスクリプトにコピーするだけで、正しく動作する。一方、手続き的なコードの任意の部分をコピーすることは、うまくいかない可能性が高い。 便利な仕事をするカスタム関数は、自由に書くことができます。そうすることで、MQLの標準的な機能を必要な形で拡張することができるのです。例えば、「MQLにこんな機能があったらかっこいいな......」と思うことがあると思います。- でも、なぜ自分で書かないのか? ワシリー、この人はまだアレイを使いこなせていないんだ。そのような講義を聞くにはまだ早すぎる)。 MrBrooklin 2020.10.05 17:08 #140 Реter Konow: ワシリー、この人はまだアレイを使いこなせていないんだ。そのような講義を聞くにはまだ早すぎる)。 ピーターさん、あなたからのアドバイスも含め、建設的なものはすべて私にとって重要です。 ウラジミールさん、ありがとうございます。 1...789101112131415161718192021...84 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
今後、自習計画に従って、段階的に スクリプトを修正していくことが課題となる、すなわち。
.
もちろん、チュートリアルのアドバイスに従うべきではありませんでした。ラインやオーダーの設定方法などの知識は得られても、理論的なベースがないため、とにかく戦略を練ることができないのです。このようなラインやスクリプトばかりでは、基本的なプログラミングの内容を理解することはできませんし、それなしには遠くへ行くことはできません。最初の4ヶ月は、何も書こうとせず、ただ勉強することに費やしました。もちろん、あなたのように図々しくてもいいのですが、そういう知識の質は低いですから。基本には常に隙間があり、それを将来的に埋めていかなければならない...。
ピーターさん、こんにちは。教科書は必要に応じて、つまり自分の知識にギャップがあるときに勉強しています。今、少し間を置いて、教科書をもっとよく勉強しなければならないと感じています。フォーラム参加者からの推奨はすべて考慮に入れており、それを守るようにしています。そして今、このように短期間にMQL5 Reference bookだけを使って 何かを書くことができたことに驚きを感じています。
ウラジミールさん、ありがとうございます。
皆さん、こんばんは!ご機嫌いかがでしょうか?
新しいスクリプトNew6.mq5を貼り付けます。このスクリプトは、現在のチャート上の現在の価格から一定の距離に、固定ロットサイズのSellStopとBuyStopの保留注文を一つずつ配置するのに役立ちます。このスクリプトでは、先ほど約束したように、小学1年生のプログラマーにもわかりやすいように、すべてを記述するように心がけました。
MQL5 Referenceから 引用した情報は、スクリプトを書くときだけ使用しました
ウラジミールさん、よろしくお願いします。
これは良い例です。そのきっかけとして使うことをお勧めします。基本中の基本。
今後、自習計画に従って、段階的に スクリプトを修正することが課題となる、すなわち
.
いいえ、違います。新機能はまだ接続しないでください。今度は既存のロジックを改良する。同時に、スクリプト実装の問題点を解消してください(すでに出ています)。何を書き換えたらいいのか知りたいなら、教えてあげよう。
お手本になりますね。そのきっかけとして使うことをお勧めします。ベースライン
いいえ、違います。まだ新しい機能を差し込まないでください。今度は既存のロジックを改良する。同時に、スクリプト実装の問題(すでに出ています)も解消してください。具体的に何を書き換える必要があるのか、もしご興味があれば、お教えしますよ。
Vasilyさん、こんにちは。もちろん、書き直した方がいいところを教えてください!面白いですよ。
ウラジミールさん、ありがとうございます。
Vasilyさん、こんにちは。もちろん、何を書き換える必要があるのか教えてください!とても興味があります。
敬具 ウラジミール
プログラマは、コンパイラが出すエラーと、アーキテクチャの問題という2つの問題を抱えています。初心者のうちはコンパイラとの戦いに集中し、最終目標は正しく動作するプログラムです。しかし、初心者のプログラムはあっという間に、作者自身がすぐに理解できない、いわゆるスパゲッティコードになってしまう。ですから、コンパイラや最終的なスクリプトの正しさではなく、アーキテクチャの問題に注目することをお勧めします。ピアノを習うように、まずは正しい指の持ち方と楽器の座り方を覚える。初心者にバッハの演奏を求める人はいない。
スクリプトの動作を決定するパラメータは2種類あり、1つ目はマクロとして静的に設定します。2つ目は、チャート上にスクリプトをロードする際に ユーザーが設定するものです。このため、このスクリプトを再コンパイルしないと、ユーザーは発注する注文の種類を選択することができません。これはまずい。したがって、これらのマクロを捨てて、追加パラメータを使用する方がよいでしょう。
そこで、新たに列挙型を定義し、それをユーザーの選択パラメータとして実装しました。
プログラマは、コンパイラのエラーとアーキテクチャの問題という2つの問題を抱えています。初心者のうちは、コンパイラと戦うことに集中し、最終的な目標は正しく動作するプログラムです。しかし、初心者のプログラムはあっという間に、作者自身がすぐに理解できない、いわゆるスパゲッティコードになってしまう。ですから、コンパイラや最終的なスクリプトの正しさではなく、アーキテクチャの問題に注目することをお勧めします。ピアノを習うように、まずは正しい指の持ち方と楽器の座り方を覚える。初心者にバッハの演奏を求める人はいない。
スクリプトの動作を決定するパラメータは2種類あり、1つ目はマクロとして静的に設定します。2つ目は、チャート上にスクリプトをロードする際に ユーザーが設定するものです。このため、このスクリプトを再コンパイルしないと、ユーザーは注文の種類を選択することができません。これはまずい。したがって、これらのマクロを捨てて、パラメータを追加する方がよいでしょう。
そこで、新たに列挙型を定義し、それをユーザーの選択パラメータとして実装しました。
素晴らしい、実際、スクリプトのステップバイステップの改造のステップ 4に書かれていること、すなわち、保留中の注文の 選択を拡大することを促してくれたのです。
ありがとうございました。
ウラジミールさん、ありがとうございます。
あなたのコードの次の問題は、それが長い手続き的なシートに広がっていることです。初心者はみんなこう書くんです。そして、これは何年も残る問題なのです。このスクリプトのように基本的なところから、アルゴリズムをパーツに分解することを学びます。その方法には、関数とクラスの2つがあります。最初はクラスの概念が難しすぎるので、関数を扱うことに重点を置くといいと思います。機能の重要性を考える。
あなたのコードの次の問題は、それが長い手続き的なシートに広がっていることです。初心者はみんなこう書くんです。そして、これは何年も残る問題なのです。このスクリプトのように基本的なところから、アルゴリズムをパーツに分解することを学びます。その方法には、関数とクラスの2つがあります。最初はクラスの概念が難しすぎるので、関数を扱うことに重点を置くといいと思います。機能の重要性を考える。
Vasilyさん、このような包括的なアドバイスをありがとうございました。必ずやそれを踏まえて、ベストを尽くしたいと思います。
ウラジミールさん、ありがとうございます。
あなたのコードの次の問題は、それが長い手続き的なシートに広がっていることです。初心者はみんなこう書くんです。そして、これは何年も残る問題なのです。このスクリプトのように基本的なところから、アルゴリズムをパーツに分解することを学びます。その方法には、関数とクラスの2つがあります。最初はクラスの概念が難しすぎるので、関数を扱うことに重点を置くといいと思います。機能の重要性を考える。
ワシリー、この人はまだアレイを使いこなせていないんだ。そのような講義を聞くにはまだ早すぎる)。
ピーターさん、あなたからのアドバイスも含め、建設的なものはすべて私にとって重要です。
ウラジミールさん、ありがとうございます。