inputstring Symbol_Main="GBPUSDrfd"; //Валютная пара, на которую ставим советник//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
/* Определим график валютной пары, на который будем устанавливать советник*/string currency_chart=SymbolInfoString(Symbol(),SYMBOL_DESCRIPTION);
if(currency_chart==Symbol_Main) //если график валютной пары совпадает со входным параметром
{
/* выводим окно сообщений на торговом терминале и продолжаем работу советника */MessageBox("Работа советника на данной валютной паре разрешена!");
return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
}
else//в противном случае, если график валютной пары не совпадает со входным параметром
{
/* выводим окно сообщений на торговом терминале и закрываем советник */MessageBox("Работа советника на данной валютной паре запрещена! Выходим!");
return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
}
}
皆さん、ご機嫌いかがでしょうか?
プログラミング言語「MQL5」の勉強を続けています。私はVasiliy Sokolovのコードに 小さな変更を加え、Expert Advisorのアルゴリズムで元々意図されていたように、1日1ポジションのみ オープンするようにしました。変更箇所は黄色で表示されます。
ウラジミールさん、よろしくお願いします。
OnInitブロックも考えすぎで、まだかなり正しく書けていません。まず、数字ではなく、識別子を書くようにすることです。1の代わりにINIT_SUCCEEDEDEDを返す。第二に、ここではswitchが過剰である。このコードには、ifかswitchのどちらかが含まれている必要があります。まず片方を書いてから、もう片方を書く--まさにオイル。
第三に、すべてのアカウントの種類を監視する必要があります。Demoがあり、Realがある。そして、「コンテスト」です。しかし、たとえ第3のアカウントがなかったとしても、他のすべてのバリエーションを キャッチするスタブがあるはずです。
おそらく、例外がどのように機能するかを説明する方が合理的でしょう。そうでなければ、なぜ知らないものに対して全く制御ができないのか、理解できないでしょう。
大げさに言えば、次のようになるはずだ。
1. 実行するプログラムの起動
2.アルゴリズムを通しての作業と、アルゴリズムからの出口の2方向から。
a) 正解 - アルゴリズムは正しく動作した
b) 誤り - アルゴリズムは機能していない
同時に、a)で解決するということは、プログラマーが実装したいオプションがすべて満たされ、b)ではそれ以外のものがすべて満たされ、それが必要であるかどうかは問題ではない、ということでもある。つまり、プログラマーは自分が欲しい機能だけを実装し、それ以外のものは排除すべきなのです。
例外の仕組みを説明する方が意味があるのでしょうが、そうでなければ、なぜ知らないものまで制御しなければならないのか、理解が得られません。
最も大げさに言えば、次のようになるはずだ。
1. 実行するプログラムの起動
2.アルゴリズムを通しての作業と、アルゴリズムからの出口の2方向から。
a) 正解 - アルゴリズムは正しく動作した
b) 誤り - アルゴリズムが失敗した
同時に、a)で解決するということは、プログラマーが実装したいオプションがすべて満たされ、b)ではそれ以外のものがすべて満たされ、それが必要であるかどうかは問題ではない、ということです。つまり、プログラマは自分が挿入した機能だけを実装し、それ以外は例外として投げ出すべきなのです。
Konstantinさん、こんにちは!分かりやすい説明ありがとうございます。
このスレッドに参加された皆様へ改 めて、MQL5プログラミング 言語を習得する上で、建設的な提案やアドバイスをいただいた皆様に感謝いたします。
今のところ、本業の関係で独学に多くの時間と注意を割くことができないため、一時中断していますが、とりあえずプログラミングの基本を理解し、サードパーティのコードを読み、自分で関数を書くという主な結果は得られています。
Trailing_Stop (v.1).mq5 Expert Advisor のバージョンには、各コード行に詳細なコメントを付けて、先に約束したように、プログラミングスクールの1年生がアクセスできる形で、もう少し後に公開する予定です。
ウラジミールさん、ありがとうございます。
皆さん、ご機嫌いかがでしょうか?
プログラミング言語「MQL5」の勉強を続けています。ようやく、プログラミングスクールの1年生が理解できるような形で、各コード行に詳細なコメントをつけたExpert Advisorのバージョンを書くだけの時間ができました。Expert Advisorのコードはかなりかさばるので、Trailing_Stop_gv.22.mq5という ファイルとして公開しています。
コードを公開する前に、ストラテジーテスターでExpert Advisorをチェックしました。問題は見つかりませんでした。Expert Advisor では、ポジション会計のネッティング方式が採用されています。この会計制度は、口座上のある時点で、1つの同じシンボル(証券)に対して1つのオープンポジションしか存在し得ないことを意味します。
現時点では、Expert Advisorに機能が実装されています。
このバージョンのExpert Advisorは、Vasily Sokolovが以前に提案したヒントの大部分を実装して います。
警告!!!
このExpert Advisorは、デモ口座の自習プランに従って開発されたもので、トレーニングのみを目的としたものです実際の口座で取引し、利益を 上げるためのものではありません。
敬具 ウラジミール
皆さん、ご機嫌いかがでしょうか?
プログラミング言語「MQL5」の勉強を続けています。ようやく、プログラミングスクールの1年生が理解できるような形で、各コード行に詳細なコメントをつけたExpert Advisorのバージョンを書くだけの時間ができました。Expert Advisor のコードはかなり面倒なので、Trailing_Stop (v.2).mq5 というファイルとして公開しています。
コードを公開する前に、ストラテジーテスターでExpert Advisorをチェックしました。問題は見つかりませんでした。Expert Advisor では、ポジション会計のネッティング方式が採用されています。この会計制度は、口座上のある時点で、同じシンボル(金融商品)のオープンポジションが1つしか存在できないことを意味します。
現時点では、Expert Advisorに機能が実装されています。
このバージョンのExpert Advisorは、Vasily Sokolovが以前に提案したヒントの大部分を実装して います。
警告!!!
このExpert Advisorは、デモ口座の自習プランに従って開発されたもので、トレーニングのみを目的としたものです実際の口座で取引し、利益を 上げるためのものではありません。
敬具 ウラジミール
こんにちは! - コンパイルできません。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Trailing_Stop(v.2) Expert Advisorを作成するための括弧を除いた名前です。
こんにちは - コンパイルできません。
こんにちは!ちょうどウェブサイトからファイルをダウンロードし、私のMetaEditorでチェックし、すべてが正常にコンパイルされます。
ウラジミールさん、ありがとうございます。
こんにちは!ちょうどウェブサイトからファイルをダウンロードし、私のMetaEditorでチェックし、すべてが正常にコンパイルされます。
ウラジミールさん、ありがとうございます。
Expert Advisorを作成するときに、名前を正しく入力していなかったのですが、すべてうまくいきました。
エキスパート作成時に名前を正しく入力していなかったのですが、すべてうまくいきました。
どういたしまして。
ウラジミールさん、ありがとうございます。
このスレッドに参加された皆様へ
改めて、MQL5プログラミング 言語の基本を学ぶ上で、建設的な提案、ヒント、アドバイスをいただいた皆様に感謝いたします。Vasily Sokolov 氏に感謝します。皆さんに神の祝福がありますように。
ウラジミール、みんなに大いなる敬意を表して。
皆さん、ご機嫌いかがでしょうか?
プログラミング言語「MQL5」の勉強を続けています。現在、新しいEAのコードを書いているところです。1点だけ、解決方法がよくわからない点があります。EAの入力パラメータに設定されている通貨ペアのチャート上でExpert Advisorを動作させたいのですが、簡単そうに見えます。他の通貨ペアのチャートにインストールしようとした場合(例えば、間違って)、Expert Advisorは作業を継続できない旨の警告を表示する必要があります。
以下は、プログラムコードの概要です。
コンパイラはエラーを表示しない。動作しないコードは黄色でハイライトされています。それは、 SYMBOL_DESCRIPTION 識別子 ( 文字列の説明)の意味がよくわからないからかもしれません。他の識別子も使ってみましたが、結果は同じです。も しかして、 SymbolInfoString() 関数は、 ここでは全く必要ないのでしょうか?通貨ペアの名前をGBPUSDrfdと 書いたのは、Alpha-ForexのExpert Advisorを使う予定だからで、このブローカーのシンボルはすべてrfdという 語尾になっています。
Expert Advisorの皆様、どのような方向で考えればよいのか、アドバイスをお願いします
ウラジミールさん、ありがとうございます。