2017.01.1312:51:14.3722017.01.0516:30:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02 2017.01.1312:51:14.3722017.01.0516:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01 2017.01.1312:51:14.3722017.01.0516:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02 2017.01.1312:51:14.3712017.01.0516:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01 2017.01.1312:51:14.3712017.01.0516:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02 2017.01.1312:51:14.3712017.01.0516:15:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.1312:51:14.3722017.01.0516:30:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02 2017.01.1312:51:14.3722017.01.0516:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01 2017.01.1312:51:14.3722017.01.0516:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02 2017.01.1312:51:14.3712017.01.0516:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01 2017.01.1312:51:14.3712017.01.0516:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02 2017.01.1312:51:14.3712017.01.0516:15:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
そのままでは無次元ですが、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
今回の例では、限界を超えないように、任意のロットで無限に注文 できるようにしたい。
もちろん、限界はわかっているのですが、こうしたい
括弧で要素を指定すると、それが最後の要素になることから進めています
だから、こんなくだりがあったんだ。順番に期待していたのですが・・・。ロットではなく、結果(ロット)を注文に加えたい。
そして、そこからデータを取り出すという問題
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が必要ですよね?必要なものを説明していただけますか?
全部を配列にしてみよう、ではどうするか?
アレイを回転させて、必要な位置を探します、何?
トレード」タブを見ると、6個必要なのは分かっているんですよね?OnTick()
ポジションを開く条件が整っていれば
{開位置}。
ポジションオープン条件が正しければ
{同じ量を塗る}
最後のロットがポジション2であれば、ロット*1.5を追加し(関数find the lastは2番目を返します)、これが3番目になります。
これが4次であれば
トップアップ{ロットゼロ+ロットワン}
5次となる場合は
fill {lot 1 position +lot 3}。
現在、リストの最後の位置の定義がある
配列に書き込んで、正しいものを一度に取り出す必要があります。今のところ、他の実装方法が見当たらないので、注文と ポジションの数は理論上、無限になるはずです
関数で行ったことをお見せしましたが、それが正しいかどうかはわかりません。
データを引き出して、自分のアカウントでどの注文が開かれるかを事前に知る必要がある
システムをふりまわさず、実装が重要である
こんにちは。EAをテストする必要があり、ビットやcsvファイルの書き込みや読み出しのコマンドを使用する場合、ファイル操作を使用するとテストモードでエラーが発生することが分かっているので、アドバイスをお願いできますでしょうか?
エラーは発生しない。フラグを使用しない場合のみ、別のフォルダに書き込みを行う
ファイル_COMMON
4096
全クライアント端末の共有フォルダー 内のファイルの場所。このフラグは、ファイルを開くとき (FileOpen()) 、ファイルをコピーするとき (FileCopy(), FileMove()) およびファイルの存在を確認するとき (FileIsExist()) に使用されます。
エラーは発生しません。フラグを使用しない場合のみ、別のフォルダに書き込みを行う
ファイル_COMMON
4096
全クライアント端末の共有フォルダー 内のファイルの場所。このフラグは、ファイルを開くとき (FileOpen()) 、ファイルをコピーするとき (FileCopy(), FileMove()) およびファイルの存在を確認するとき (FileIsExist()) に使用されます。
さて、私はFileOpen()を使っています。
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;
C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files
5004:ERR_FILE_CANNOT_OPEN = オープンファイルエラー
さて、私はFileOpen()を使っています。
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 です。
別フォルダーに書き込まない場合は、パスに空文字列で指定する必要はありません。不要なものは黄色で表示されます。
FileOpen()はフラグではありません...。フラグは FILE_COMMON です。
別フォルダーに書き込まない場合は、パスに空文字列で指定する必要はありません。不要なものは黄色で表示されます。
厳格なプロパティ(#property strict property)について、どこで読めるか教えてください。
こんにちは。
厳密なプロパティである#propertyについて、どこで読めるか教えてください。