MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1266

 
Alexey Viktorov:

覚えていない、確認しなければならないが、確認したくない。おそらく、mql4では既存のオブジェクトの名前でオブジェクトを作成しようとするとエラーが返され、mql5ではエラーではなく、座標が異なる場合はパラメータを修正 するのだと思います。

Artemが言ったように、オブジェクトの存在を確認することです。

はい、その通りです。

 
Maxim Kuznetsov:

が突然、(いつものように)ObjectGetInteger(0,objectName,OBJPROP_TYPE)が速く動作するようになりました。

ObjectFind は同期コマンドです。つまり、チャート・オブジェクトの完全な更新(および利用可能性)を待ちます。

オブジェクトがどのウィンドウで作成されたか、オブジェクトが存在する可能性が高いこと、そしてそれが正しいタイプであることをすでに知っているのです。
最悪の事態は、ユーザーがオブジェクトを削除したり、プロパティを変更したりすることです。

ありがとうございます。それは面白いですね。

 

皆さん、ごきげんよう。
Kovalev氏の本には、配列のインデックスを 定数、変数、式として整数値に設定することができると書かれている。
mql4のインデックスを 変数として 設定すると、コンパイラは1つだけエラーを出します。

このようにインデックスを設定します
intW=1000;

double T_P[W]={0}とする。

void OnTick()

{

コード

}
何が間違っているのか教えてください。
ありがとうございます。

 
ANDREY:

皆さん、ごきげんよう。
Kovalev氏の本には、配列のインデックスを 定数、変数、式として整数値に設定することができると書かれている。
mql4のインデックスを 変数として 設定すると、コンパイラは1つだけエラーを出します。

このようにインデックスを設定します
intW=1000;

double T_P[W]={0}とする。

void OnTick()

{

コード

}
何が間違っているのか教えてください。
ありがとうございます。

配列のインデックスは、配列のサイズではありません。
 
Alexey Viktorov:
配列のインデックスは、配列のサイズではありません。

了解です、ありがとうございます。配列のサイズを 変数で設定する方法は ありますか?

 
ANDREY:

了解です、ありがとうございます。配列のサイズを変数で設定する方法は ありますか?

配列の1次元目に新しいサイズを設定します。

intArrayResize(
void&array[],// 参照で渡される配列
intnew_size,// 新しい配列のサイズ
intreserve_size=0// reserve_size の値(冗長)
)

 
Aleksey Vyazmikin:

配列の1次元目に新しいサイズを設定する

intArrayResize(
void&array[],// 参照で渡される配列
intnew_size,// 新しい配列のサイズ
intreserve_size=0// reserve_size の値(冗長)
);

貴重な情報をありがとうございました。

 

こんにちは!簡単なコードですが、よろしくお願いします。

現在、注文の開閉機構を扱っていますが、オープンポジションのクローズで問題にぶつかりました。

コードは簡単です。このアルゴリズムの考え方は、チャート上に周期100のMA(移動平均線)を描くというものです。前のローソク足[1]MAより上で 始まり MAより下で 閉じたら、次のローソク足[0]で売りの 注文を出す。

//(購入条件が異なるため、記載は省略します)

注文を閉じるには、次の条件があります。現在の価格が、注文の開始時の価格から設定したポイント数(例:40ポイント)を経過していること。

例:Bid=1.20045でロットを建てた場合、Ask=1.20005でクローズする必要があります。

オープニングとクロージングのコードは、CheckForOpen()とCheckForClose()という2つの対応する関数にまとめられており、順番にOnTick()関数で呼び出されるようになっています。実際、価格がある値のポイントを通過しても(クローズレベルを超えても)、注文はクローズされません。

何が問題なのかがわからない。

p/s// スクリーンショットとコードを添付します。

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
4elovechishe:

こんにちは!簡単なコードですが、よろしくお願いします。

現在、注文の開閉機構を扱っていますが、オープンポジションのクローズで問題にぶつかりました。

コードは簡単です。このアルゴリズムの考え方は、チャート上に周期100のMA(移動平均線)を描くというものです。前のローソク足[1]MAより上で 始まり MAより下で 閉じたら、次のローソク足[0]で売りの 注文を出す。

//(購入条件が異なるため、記載は省略します)

注文を閉じるには、次の条件があります。現在の価格が、注文の開始時の価格から設定したポイント数(例:40ポイント)を経過していること。

例:Bid=1.20045でロットを建てた場合、Ask=1.20005でクローズする必要があります。

オープニングとクロージングのコードは、CheckForOpen()とCheckForClose()という2つの対応する関数にまとめられており、順番にOnTick()関数で呼び出されるようになっています。実際、価格がある値のポイントを通過しても(クローズレベルを超えても)、注文はクローズされません。

何が問題なのかがわからない。

p/s// スクリーンショットとコードを添付します。

CheckForOpen()はOnTickの中で直接呼ばれるのではなく、自分で書いたOnBar(OnTickの中で呼ばれるべき)の中で、つまりバーが開くときに呼ばれるべきものです。しかし、これは些細なことです。

、Open[1], Close[1] (前のローソクがMA100を突破した)の代わりに、Open[1], Open[0] (前のローソクがMAの片側から、今回のローソクが反対側から開いた)を見るべきでしょう。そうでなければ、ローソク足とローソク足の間に浅い隙間が見られ、ロジックが許されてしまうでしょう。

MedianのSMAは0本目から変化する、つまり一定ではない。比べることができない。アルゴリズムを修正する。

 
Aleksey Vyazmikin:

配列の1次元目に新しいサイズを設定する

intArrayResize(
void&array[],// 参照で渡される配列
intnew_size,// 新しい配列のサイズ
intreserve_size=0// reserve_size の値(冗長)
);

ヒントをありがとうございました。また、私のコードは動的配列ではなく、通常の配列です。

普通の配列の1次元目のサイズを変更する方法を教えて(というか、見せて)いただけるとありがたいです。
また、お世話になります。