問題タブ [mql4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
326 参照

mql4 - MQL4: シグナル/イベントごとの単一取引のグローバル トレンド/変数またはテキスト ファイル

新しいバー/ティックごとに、変数が再初期化され、シグナルごとに 1 回トレードを実行しようとしています。問題は、TP が達成されると、同じトレンドが続く場合、別のトレードをトリガーすることです。変数をテキストファイルに格納しようと考えています。だから、そのような変数を処理する最良の方法は何だろうと思っています。申し訳ありませんが、コードがありません。

0 投票する
1 に答える
366 参照

quantitative-finance - MQL4 の反復内でブール演算を使用して配列にアクセスする方法は?

Shift 1 から Shift n (n = バーの数) までの移動平均の値を取得でき、5 分バーごとに Alert でその値を表示しますが、「if (Direction == "Up") を追加すると、 ' など、コードは最後のシフト値のみを表示し、' break' をヒットします。最も重要なのは、それらをブール演算に使用できないことです。

Alert()の値がEMA整然と上昇しているとき、およびその逆 ( の場合)をコードに表示する必要があります"Trend Down"。それらの値の 1 つが変化する (1 つまたは複数のバーの値が他のバーよりも高いまたは低い) 場合はいつでも、それは です。"No trend"

TrendBaramount ofが 5 バーを超えているとしましょう。[] 配列はバーシフトです。

のアルゴリズム"Trend Up"は次のとおりです。

if Slow[n] <= Slow[...] <= Slow[3] <= Slow[2] <= Slow[1] then true

そうでなければ偽

コードを実行すると、 のみが表示されますAlert( "Trend Up bias" )breakこれは、繰り返しの開始時にコードが常に ' ' にヒットすることを意味します。トレンドが実際に上昇傾向にある (Slow[]配列内のすべての MA 値が順調に上昇している) かどうかは関係ありません。

Q1: コードを機能させるにはどうすればよいですか?

Q2: 反復内でブール演算を使用して配列にアクセスするための正しいコードを記述する方法は?

Q3: 解決策を教えてください。

0 投票する
1 に答える
1003 参照

mql4 - エキスパートアドバイザーコードを使用して、ワンクリック取引ウィンドウでロットサイズフィールド入力の値を変更することは可能ですか?

タイトルに記載されているように、Expert Advisor を介してワンクリック取引ウィンドウでロットサイズを変更することは可能ですか?

よろしく、 AK

0 投票する
2 に答える
823 参照

arrays - MQL4 で Web リクエストを介して多次元配列を送信する方法はありますか?

私はすでにネイティブWebRequest()関数をPOSTデータに使用しました。

通常、以下の行を使用してデータを投稿します

そしてそれはうまく動作します...

しかし、これはこのような配列を送信したいと思います。

MQL4経由で送信する方法はありWebRequest()ますか?

前もって感謝します。

0 投票する
1 に答える
939 参照

c++ - MT4 から C++ へのライブ FX 相場のインポート

外部 C++ プログラムにライブ データ引用符をインポートする方法はありますか?MetaTrader Terminal MT4

または、通信をC++介してExcel セルを読み取る可能性はありますか?DDE

前もって感謝します

0 投票する
3 に答える
1308 参照

low-latency - MQL4、大きな EA のコード レイアウト

これは主に理論的な質問です (ただし、サンプル コードは常に歓迎されます)。

本当の問題は、複数のカスタム インジケーターから複数のシナリオをテストする EA の「フレーム」を正しくコーディングする方法です。

私が (忙しい) EA を構築する方法は、1 つの戦略にあまり焦点を当てていませんが、複数の戦略を「テスト」し、最も適切なものを「選択」しようとしています。

そのため、すべて「ステータス データ」の配列を返すいくつかのカスタム インジケーターを作成しました。

たとえば、次の指標があります。

  • クロス移動平均インジケータ, 平均がクロスされたときにシグナルを発し、現在の位置が MA から移動したパーセンテージで示されます.
  • ボリンジャー バンド インジケーター。バンド間の「余裕」を返し、バンドが「圧迫」を開始したときにシグナルを出します。
  • 複数の時間枠の「方向/トレンド」インジケーター(上昇または下降に向かって移動する特定の時間枠です)。これは現在の方向を返し、時間枠の方向が変化した場合にシグナルを発します。
  • 「小規模な」動きをチェックし、最良の売買ポイントを選択するためのADX インジケーター。

巨大なシナリオを 1 つ書くこともできますが、もっとうまくできると思います。たとえば、すべての時間枠が下降している場合 (下降トレンド)、多くの下降の動きを処理するための特別なシナリオを用意できます。しかし、現在の傾向がない場合は、別のシナリオが最適です。

なので、複数のシナリオを作るのがベストだと思います (まだ 1 EA です)。最初にすべてのカスタム指標データが収集され、次に各シナリオがそのデータを使用して計算を行います。次に、「スコア」を返し、最高のスコアが選択されます。

しかし、コードを最適な「概要」の方法でレイアウトするにはどうすればよいでしょうか?

シナリオごとにクラスを作成し、データを使用して手動で「チェック」する必要がありますか? そして、それらを複数のファイルに分割するだけ#includeですか?

それともイベント駆動型ですか?リスナーを特定の指標イベントに対して実行、計算、および設定し続け、独自の方法でそこに移動するクラスを作成しました (それは素晴らしいことです)。

どんな考えでも大歓迎です!


アップデート2016-01-11,12:00

今は UML を作成する時間がありません..しかし、私は今のところ次のことを行います ->

  • Order(Orderシングルトンで、注文リクエストを実行するだけです)
  • Indicator(各指標が拡張する基本クラス)
  • Strategy(各戦略が拡張する基底クラス)

  • IndicatorFetcher(すべてのインジケーターを保持し、各ティックで実行されます)

  • StrategyRunner(すべての戦略を保持し、各ティックで実行されます。IndicatorFetcher)

StrategyインスタンスはIndicatorFetcher(すべてのインジケーターのデータを含む概要を保持し、Orderシングルトンを使用して取引を実行する) へのアクセスを取得します。

0 投票する
2 に答える
395 参照

mql4 - MQL4 (.mq4) で現在のクラスからファイル名を取得する方法は?

定型コードを防ぐために、クラスが実行されているファイルのファイル名を読みたいと思います。

利用可能なデフォルトのMQL4関数はありませんが、ネイティブの Windows 関数 ( a GetModuleFileName()from kernel32.dll)で使用できるはずです。

ソース - https://msdn.microsoft.com/nl-nl/library/windows/desktop/ms683197(v=vs.85).aspx

について読んで#importKernel32.dllそこからいくつかの機能を盗みましたが、うまくいかないようです。

次のエラーが表示されます->

2015.01.05 00:15 Cannot find 'GetModuleFileName' in 'kernel32.dll'

それはそれ自体を説明します、それgetModuleFileNameはありませんkernel32.dll

現在のファイル名を取得する方法を知っている人はいますか?

0 投票する
1 に答える
186 参照

mql4 - MQL4: 初回実行時にエキスパート取引を無効にする方法

ExpertAdvisor価格が過去 1 日の値よりも高くなったり低くなったりした場合に注文を開始するを作成しました。

バックテストは問題ありませんでしたが、問題は、このエキスパートをMT4.Graph(ライブの通貨ペア) に配置すると、すぐに注文が開かれることです。これは、エキスパートを開始したときの価格の現在の値が、過去の最大値よりも大きいまたは小さいためです。日。

条件が必要です: 価格が過去 1 日のいずれかの極値よりも高いか低い場合、および現在の通貨ペアで実行されている最初のエキスパートである場合は、取引を開始しないでください。

0 投票する
2 に答える
1502 参照

arrays - MQL4 配列を区別する方法は?

MagicNumbers を配列に選択してから、配列を個別にする必要があります (複数の注文グループがあり、それぞれに固有の MagicNumbers があります)。しかし問題あり。私のコードは次のとおりです。

配列に個別の MagicNumbers を選択する方法は?

0 投票する
1 に答える
2260 参照

trading - MQL4 価格がオブジェクトに当たるかどうかを取得する方法は?

価格がオブジェクトに当たったかどうかを取得する方法は? オブジェクトが手動で描かれたピッチフォークまたはトレンドラインであるとしましょう。次のように開始する必要があると思います。

if(Bid==?)