コーディングのヘルプ - ページ 371

 

2014.10.15 12:36:23.875 Tester:Cannot load ExpertsFisher Auto EA v1 m11

 

2014.10.15 12:36:23.875 Cannotopen file'C:\Program Files, Forex Broker Inc MT4 Client Terminal

 
grego:
2014.10.15 12:36:23.875 Cannot open file 'C:\Program Files MT4 Client Terminal ◇Fisher Auto EA v1 m11.ex4' [2]

もしあなたのEAがコンパイルされていて、ライブチャートにもロードできるのであれば、その原因は新しいメタトレーダー4とそのバックテスターのバグだけです。しかし、EAが正しくコンパイルされているかどうかを確認 します。

 

LeftNum1'の宣言は、20行目のグローバル宣言を隠す fisher m111.mq4 119 8

エキスパートとインジケータの間の問題かな?

 
grego:
2014.10.15 12:36:23.875 Cannot open file 'C:\Program Files, Forex Broker Inc MT4 Client Terminal ◇Fisher Auto EA v1 m11.ex4' [2].

そのEAのクイックビジュアルバックテスト

動作しており、注文をオープン(およびクローズ)しています。デフォルトのパラメータを 使用

ファイル:
backtest.gif  66 kb
 

こんにちは、皆さん...またまた小さなお願いです。

文字列配列から重複する値を削除 する方法を教えてください。

お願いします。

ありがとうございます。

 
AtApi:
またまたこんにちは...またまた小さなお願いです。

文字列配列から重複する値を削除する方法を教えてください。

お願い

ありがとうございます。

配列の 最後の要素でない限り、その要素を削除することはできません。99.999%はそうではないので、新しい空の配列を作成し、既存の配列のユニークな要素のみを新しく作成された配列に追加する必要があります。

 

mladenさん、ご返答ありがとうございます。では、このようにすればいいのでしょうか?

int numDups = 0, prevIndex = 0;

string tempArray[];

for (int x = 0; x < ArraySize(myArray); x++)

{

bool foundDup = false;

for (int j = 0; j < x; j++)

{

if (myArray[x] == myArray[j])

{

foundDup = true;

numDups++; // Increment means Count for Duplicate found in array.

continue;

}

}

if (foundDup == false)

{

tempArray[prevIndex] = myArray[x]; prevIndex++;

}

}

 
AtApi:
mladenさん、ご回答ありがとうございます。

int numDups = 0, prevIndex = 0;

string tempArray[];

for (int x = 0; x < ArraySize(myArray); x++)

{

bool foundDup = false;

for (int j = 0; j < x; j++)

{

if (myArray[x] == myArray[j])

{

foundDup = true;

numDups++; // Increment means Count for Duplicate found in array.

continue;

}

}

if (foundDup == false)

{

tempArray[prevIndex] = myArray[x]; prevIndex++;

}

}

[/CODE]

次のような方法を試してみてください。

[CODE] string tempArray[];

for (int i = 0; i < ArraySize(myArray); i++)

for (int j = i+1; j < ArraySize(myArray); j++)

if (myArray == myArray[j]) myArray[j]="remove";

for (i = 0; i < ArraySize(myArray); i++)

if (myArray != "remove") { ArrayResize(tempArray, ArraySize(tempArray)+1); tempArray[ArraySize(tempArray)-1]=myArray; }.

 
mladen:
次のようなことを試してみてください。
string tempArray[];

for (int i = 0; i < ArraySize(myArray); i++)

for (int j = i+1; j < ArraySize(myArray); j++)

if (myArray == myArray[j]) myArray[j]="remove";

for (i = 0; i < ArraySize(myArray); i++)

if (myArray != "remove") { ArrayResize(tempArray, ArraySize(tempArray)+1); tempArray[ArraySize(tempArray)-1]=myArray; }

mladenさん、ありがとうございます。

この方法の問題点は、配列から文字列を削除 するのではなく、元の値と重複する値の両方で文字列の値を "remove" に変更することです...したがって、後でそれらをフィルタリングする場合は、元の値も削除することになります...私が明確であることを願っています。