ブログタイトルを「FX自動売買システム開発部」から「autoFX」に変更しました!
CATEGORY

MQL4プログラミングの基礎

  • 2019年10月22日
  • 2019年10月22日

MT4で分割決済できないというのは間違いでした

OrderClose関数に標準装備されていました 分割決済の方法の中でMT4には分割決済の仕組みがないと書きましたが、普通にありました…。 ごめんなさい。私が完全に間違っておりました。 なぜこんな盛大な誤解をしていたかはもはや思い出せません。 Ord […]

  • 2019年10月1日
  • 2019年10月30日

do whileとbreakで特定の後続処理をスキップさせる小技

1回は必ず処理が実行される特徴を使う プログラミングしていると、ある処理の後は特定の後続処理は行わせたくない時があります。 その時は処理をスキップさせる仕組みを考えるわけですが、スキップさせる方法としてはif文やreturnが一般的かと思います。 し […]

  • 2019年10月1日
  • 2019年10月30日

MT4のフォント名の全角・半角は正確に

MS系フォントの英字は全角、スペースは半角が正解 MT4では、ラベルやテキストをチャートにペタペタ貼り付けることができます。 その際、フォントを指定するのですが、1つ罠にハマったので、備忘録がてら共有します。 結論から言うと、「MS P明朝」や「MS […]

  • 2019年3月31日
  • 2019年10月4日

EAやインジケーターのパラメーターはエクスポート/インポートできる

パラメーターを毎回手動で変更する手間から解放される 「パラメーターの入力」タブに記載されている各パラメーターはファイルに保存し、読み込むことができます(保存することをエクスポート、読み込むことをインポートとも言います)。 この機能は同じEAやインジケ […]

  • 2018年11月24日
  • 2019年10月4日

TimeGMTOffsetはGMTとサーバの時差ではない

TimeGMTOffsetはGMTとローカルPCの時差 MT4の標準関数にTimeDaylightSavings、TimeGMTOffsetという2つの関数が存在します。 関数名だけで内容を判断すると、サーバとローカルPCの時差を簡単に計算できるのか […]

  • 2018年8月15日
  • 2019年10月4日

double型には計算誤差が常につきまとう

NormalizeDouble関数を活用すべし double型の計算誤差のお話です。 2/3を計算すると0.666…となりますが、どこかで見切りをつけなければなりません。無限には持てませんから。 その見切りが計算誤差となります。 double型の場合 […]

  • 2018年5月17日
  • 2019年10月4日

グローバル変数の初期化に注意せよ

通貨ペアや時間足の変更でOnInit関数は都度呼び出される 仕掛け時間帯指定機能と仕掛け時間帯指定機能に指定時刻での強制決済機能を足してみたに不具合があることに今更気づきました。 結論から言えば、gEntryTimeFlgTrueCntというグローバ […]

  • 2018年5月6日
  • 2019年10月4日

バックテストではTimeLocalとTimeCurrentは同じ値を返す

どちらもバックテストで設定した期間の日時を返す タイトルと見出しで言いたいことは言い尽くしてしまっていますが、意外と気づいていない方もいるかなと思い、記事にしてみました。 TimeLocal関数はローカルPCの日時(通常は現在の日本時間)を返し、Ti […]

  • 2018年4月21日
  • 2019年10月10日

OnDeinit関数が呼ばれる時

OnDeinit関数はEAを削除した時だけに呼ばれるもの? 未だに凡ミスする1つにOnDeinit関数の呼び出しタイミングがあります。 OnDeinit関数はEAを削除した時に呼ばれるものだ!って、ついつい思ってしまうんですね。 でも違います。 On […]

  • 2017年10月9日
  • 2019年10月4日

オブジェクト名の長さは63文字まで

64文字以上だと認識しない ObjectCreate関数でオブジェクトを作成したのにオブジェクトが表示されない事象に遭遇しました。 「文法は間違ってないのに何でだろう?」と頭を悩ませていたのですが、オーダーコメントに長さ制限があったことを思い出し、「 […]

  • 2017年8月22日
  • 2019年10月10日

OnInit/OnDeinit関数とグローバル変数の関係

パラメーターや時間足を変更してもグローバル変数は初期化されない パラメーターや時間足を変更すると、その都度、OnDeinit関数とOnInit関数がこの順で再実行されます。 この時、グローバル変数はどうなるかと言いますと、特に影響を受けません。データ […]

  • 2017年8月6日
  • 2019年10月4日

オーダーコメントの長さは31文字まで

32文字以上だと消えてしまう OrderSend関数のパラメータの1つにオーダーコメントがあります。 オーダーコメントはその名の通り、各オーダーに対してコメントを付与できる機能です。 コメント以外の用途にも使えて結構便利なのですが、このオーダーコメン […]

  • 2017年7月9日
  • 2019年10月4日

自動売買ボタンをOFFにしてもプログラムは動いている

自動売買ボタンはオーダー操作を制御するだけ お恥ずかしい話ですが、自動売買ボタンって、全EAの動作を停止するものだと思っていました。 「え?違うの?!」 違うんですね。 確かに、自動売買ボタンをOFFにすれば、EAによるエントリーやエグジット等のオー […]

  • 2017年5月25日
  • 2019年10月4日

iCustom関数を使ったMTFの注意事項

引数のtimeframeとshiftの意味は? iCustom関数は、独自インジケーターをEA等に組み込むためのMT4標準関数です。 iCustom関数は動作が遅いのであまり好きではないのですが、EAの製作を依頼される時に、「このインジケーターを使っ […]

  • 2017年2月18日
  • 2019年10月4日

インジケーターのライン描画順はインデックスの値順

ラインを上書きするインジケーターを作成する場合は要注意 お恥ずかしながら最近まで知りませんでした。 SetIndexBuffer関数のインデックスが0のラインが最初にチャートに描画され、インデックスの値が大きくなるほど上に描画(上書き)されるというこ […]

  • 2017年2月13日
  • 2019年10月10日

1つの関数で複数の値を返すには?

引数を参照渡しで渡せばよい 関数では戻り値を使って、呼び出し元に何らかの計算結果を返すことができます。 しかし、戻り値で返すことのできる値は1つだけです。 では、関数で2つ以上の値を返したい場合はどうすれば良いでしょうか? 主な方法は2つ。 1つ目は […]

  • 2016年12月25日
  • 2019年10月10日

if文と論理演算の密接な関係~ド・モルガンの法則~

取っ付きにくくても避けては通れない道 MACDがシグナル線を上抜いたら、終値が直近30本の高値を上抜いたら、陰線が3本連続で続いたら、RSIが70%以上ならば…。 これらをプログラムで実現するには条件分岐のif文を使います。 if文の中には条件式を記 […]

  • 2016年12月17日
  • 2019年10月10日

マジックナンバーとチケット番号の違い

識別する対象が違う EAを自作する際にはマジックナンバーとチケット番号の2つの番号を使いこなさなければなりません。どちらも自作する上で必須の概念なので、確実に理解しておきましょう。 ここの理解を適当にしちゃうと、自作も改造もうまくいきません。 マジッ […]

  • 2016年11月12日
  • 2019年10月10日

デバッグを効率化してくれる便利な定義済みマクロ

build600の追加機能で、デバッグの心強い味方 定義済みマクロという機能がメタエディターのbuild600で実装されました。 定義済みマクロとは、MQL4プログラムに関する情報を取得して、デバッグを支援するための定数のことです。 “マ […]

  • 2016年10月29日
  • 2019年10月20日

#property strictを途中で追加した時に苦労する3つのこと

いずれも地道に修正すれば済む話、あとはやる気の問題 また、#property strict関連の投稿です。しつこくてすみません。個人的にホットな話題なので、もう少しお付き合い頂ければ幸いです。 #property strictを追加するとハッピーにな […]

  • 2016年10月24日
  • 2019年10月10日

ENUM(列挙型)を利用したEAパラメータ設定方法

ENUMはEAパラメータとの相性抜群 #property strictとコメント文の意外な関係で触れましたが、#property strictを使うと、パラメータ名の箇所に変数名ではなくコメント文を表示できるようになります。 これには続きがありまして […]

  • 2016年10月16日
  • 2019年10月10日

#property strictとコメント文の意外な関係

パラメータ名の箇所に変数名ではなくコメント文が表示される 答え言っちゃいました。 そうなんです。#property strictをコードに記載すると、パラメータ名の箇所に変数名ではなくコメント文が表示されるようになります。 どれのことかって?これのこ […]

  • 2016年8月23日
  • 2019年10月10日

OnTick()とOnTimer()の違い

OnTimer()は便利そうなのにバックテストで使えない欠点が OnTick()はティックごとに動作する関数で、EAの売買ロジック等、根幹部分をここに記述します。 他方、OnTimer()は指定時間間隔ごとに動作する関数で、OnTick()と同様に、 […]

  • 2016年6月12日
  • 2019年10月20日

変数のスコープ(グローバル変数とローカル変数)

変数には有効範囲がある 変数のスコープ(scope)とは、変数の有効範囲のことです。変数が利用可能な範囲とでも言いましょうか。その有効範囲はどこかと言うと、OnTick等の関数の{ }で囲まれた部分になります。ちなみに、{ }を”ブロック […]

  • 2015年8月22日
  • 2019年10月4日

OnCalculate()の引数の配列にご注意を

混乱を招く仕様 インジケーターの作成を頼まれて、せっかくだからOnCalculate()を使おうとした時の話です。 自分としては、完璧に作ったはずなのに、テストすると全然意図した通りに動かない。「なぜだろう…」とPrint()で色々とログを取得して数 […]

  • 2015年5月23日
  • 2019年10月4日

StopLevelとFreezeLevelによる制限

分かりにくい2つの制限 MQL4で長らく曖昧に理解していたStopLevelとFreezeLevel。ようやく正しい仕様を理解できました。というか、ちゃんとMQL4のサイトに定義がありましたorz Requirements and Limitatio […]

  • 2015年5月1日
  • 2019年10月10日

DoubleToStr()関数で小数点以下を全て表示する

レートの小数点を3/5桁でログ出力する方法 Print()関数を使うことで、任意の情報をログファイルに出力できます。デバッグ目的で使うことが多いと思います。 if文等の条件判断が正しく行われているかを確認する際に、特に力を発揮してくれます。 先日、あ […]

>完全放ったらかしEA 「AutoEndlessCatchRange」

完全放ったらかしEA 「AutoEndlessCatchRange」

「本業が忙しい!」「でも資産運用したい!」そんなあなたに最適なEAです。兼業トレーダーの方はチャートを毎日みて分析してトレードする時間はなかなか確保できないものです。トレードは本EAに任せて、本業やプライベートの時間をもっと増やしませんか?元々は自分自身のために開発したEAですので、手抜き無しのガチものです。

CTR IMG