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

 
Vitaly Muzichenko:

そのままでは無次元ですが、2次元であり、2次元に無次元の数の要素を入れることができるのです。

とにかく何をやっているのか、自分のやった仕事の結果がどうあるべきか、考えているのか。それとも、自分で論理を組み立てているのでしょうか?

今回の例では、指定した上限を超えないように、任意のロットで無限に注文を 出せるようにしたい。

もちろん、限界はわかっているのですが、そういう風にやっていきたいですね。

括弧で要素を指定すると、それが最後の要素になることから進めています

だから、こんなくだりがあったんだ。順番に期待していたのですが・・・。ロットではなく、結果(ロット)を注文に加えたい。

と、そこからのデータ取得の問題

私が見たところ、次のような結果を得たいのです。

MyArray[0][0.01]です。

MyArray[1][0.01]です。

MyArray[2][0.02]です。

など...


void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01

 
trader781:

今回の例では、限界を超えないように、任意のロットで無限に注文 できるようにしたい。

もちろん、限界はわかっているのですが、こうしたい

括弧で要素を指定すると、それが最後の要素になることから進めています

だから、こんなくだりがあったんだ。順番に期待していたのですが・・・。ロットではなく、結果(ロット)を注文に加えたい。

そして、そこからデータを取り出すという問題



void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01


必要なものを説明する。

すべてを配列に格納しよう、ではどうするか?

そして、配列を回転させて必要な位置を探します、何?

どの位置をロットするのか、定義があるのか、目で見て、Tradeというタブを見ると、はい、6が必要ですよね?
 
Alekseu Fedotov:

必要なものを説明していただけますか?

全部を配列にしてみよう、ではどうするか?

アレイを回転させて、必要な位置を探します、何?

トレード」タブを見ると、6個必要なのは分かっているんですよね?

OnTick()

ポジションを開く条件が整っていれば

{開位置}。

ポジションオープン条件が正しければ

{同じ量を塗る}

最後のロットがポジション2であれば、ロット*1.5を追加し(関数find the lastは2番目を返します)、これが3番目になります。

これが4次であれば

トップアップ{ロットゼロ+ロットワン}

5次となる場合は

fill {lot 1 position +lot 3}。

現在、リストの最後の位置の定義がある

配列に書き込んで、正しいものを一度に取り出す必要があります。今のところ、他の実装方法が見当たらないので、注文と ポジションの数は理論上、無限になるはずです

関数で行ったことをお見せしましたが、それが正しいかどうかはわかりません。

データを引き出して、自分のアカウントでどの注文が開かれるかを事前に知る必要がある

システムをふりまわさず、実装が重要である

 
良い時間です。あなたがEAをテストしたい場合、それは我々がこれらのファイルでの操作を使用するテストモードでエラーがあることを知っているように、ビットとcsvファイルを読み書きするコマンドを使用してアドバイスすることができます
 
Top2n:
こんにちは。EAをテストする必要があり、ビットやcsvファイルの書き込みや読み出しのコマンドを使用する場合、ファイル操作を使用するとテストモードでエラーが発生することが分かっているので、アドバイスをお願いできますでしょうか?

エラーは発生しない。フラグを使用しない場合のみ、別のフォルダに書き込みを行う

ファイル_COMMON

4096

全クライアント端末の共有フォルダー 内のファイルの場所。このフラグは、ファイルを開くとき (FileOpen()) 、ファイルをコピーするとき (FileCopy(), FileMove()) およびファイルの存在を確認するとき (FileIsExist()) に使用されます。

 
Alexey Viktorov:

エラーは発生しません。フラグを使用しない場合のみ、別のフォルダに書き込みを行う

ファイル_COMMON

4096

全クライアント端末の共有フォルダー 内のファイルの場所。このフラグは、ファイルを開くとき (FileOpen()) 、ファイルをコピーするとき (FileCopy(), FileMove()) およびファイルの存在を確認するとき (FileIsExist()) に使用されます。

さて、私はFileOpen()を使っています。

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = オープンファイルエラー

 
Top2n:

さて、私はFileOpen()を使っています。

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+ InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = ファイルオープンエラー

FileOpen()はフラグではありません...。フラグは FILE_COMMON です。

別フォルダーに書き込まない場合は、パスに空文字列で指定する必要はありません。不要なものは黄色で表示されます。


 
Alexey Viktorov:

FileOpen()はフラグではありません...。フラグは FILE_COMMON です。

別フォルダーに書き込まない場合は、パスに空文字列で指定する必要はありません。不要なものは黄色で表示されます。


連絡先があります ありがとうございました
 
こんにちは。
厳格なプロパティ(#property strict property)について、どこで読めるか教えてください。
 
Leo59:
こんにちは。
厳密なプロパティである#propertyについて、どこで読めるか教えてください。
例えばこちら https://docs.mql4.com/ru/basis/preprosessor/compilation
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4