[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 182

 
hoz:

簡単なインジケータを書きました。以下はそのコードです。

バッファは1つしか入っていない。指標となる値はdouble 型である。

Expert Advisorでは、インジケーターの値を取得し、フィルターとしてトレードに適用することにしました。

ここでは、最後に形成されたバーで、このインジケータのバッファの簡単な関数コールを書きました。

テスターでは、スロープの 値が間違って返される。

なぜ?タイプは正しいです。通話も正しい。インジケーターは全く正常に動作しています。テスターでのログ記録と、実際の現在の市場からのログをご紹介します。

なぜ、2147483647という 数字が常に返されるのですか?

2147483647という 空の値(EMPTY_VALUE)が返されます。Ctrl+Dを押して、インジケータ自体のデータを調べた方がいいのでは?
 
hoz:

簡単なインジケータを書きました。以下はそのコードです。

バッファは1つだけです。指標となる値はdouble 型である。

Expert Advisorでは、インジケータの値を取得して、フィルタとしてトレードに適用することにしました。

ここでは、最後に形成されたバーで、このインジケータのバッファの簡単な関数コールを書きました。

テスターのスロープ 値が正しくない。

なぜ?タイプは正しいです。通話も正しい。インジケーターは全く正常に動作しています。テスターでのログ記録と、実際の現在の市場からのログをご紹介します。

なぜ、2147483647という 数字が常に返されるのですか?


インジケーターをリファイン

2013.02.26 21:22:39     2011.12.30 23:59  D_Aleks_first_pattern EURUSD,H1: slope = -0.0003
2013.02.26 21:22:39     2011.12.30 23:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0003
2013.02.26 21:22:39     2011.12.30 22:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0006
2013.02.26 21:22:39     2011.12.30 21:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0009
2013.02.26 21:22:39     2011.12.30 20:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0011
2013.02.26 21:22:39     2011.12.30 19:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 18:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 17:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0014
2013.02.26 21:22:39     2011.12.30 16:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 15:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 14:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 13:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 12:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 11:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 10:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.30 09:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 08:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 07:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 06:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 05:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0011
2013.02.26 21:22:39     2011.12.30 04:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 03:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 02:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 01:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.30 00:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 23:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 22:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0014
2013.02.26 21:22:39     2011.12.29 21:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0015
2013.02.26 21:22:39     2011.12.29 20:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0017
2013.02.26 21:22:39     2011.12.29 19:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0018
2013.02.26 21:22:39     2011.12.29 18:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0018
2013.02.26 21:22:39     2011.12.29 17:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0017
2013.02.26 21:22:39     2011.12.29 16:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0016
2013.02.26 21:22:39     2011.12.29 15:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0015
2013.02.26 21:22:39     2011.12.29 14:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0015
2013.02.26 21:22:39     2011.12.29 13:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0014
2013.02.26 21:22:39     2011.12.29 12:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0014
2013.02.26 21:22:39     2011.12.29 11:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0014
2013.02.26 21:22:39     2011.12.29 10:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 09:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 08:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 07:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 06:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 05:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 04:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 03:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 02:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 01:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.29 00:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0013
2013.02.26 21:22:39     2011.12.28 23:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0012
2013.02.26 21:22:39     2011.12.28 22:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.001
2013.02.26 21:22:39     2011.12.28 21:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0007
2013.02.26 21:22:39     2011.12.28 20:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0004
2013.02.26 21:22:39     2011.12.28 19:00  D_Aleks_first_pattern EURUSD,H1: slope = -0.0002
2013.02.26 21:22:39     2011.12.28 18:00  D_Aleks_first_pattern EURUSD,H1: slope = 0
2013.02.26 21:22:39     2011.12.28 17:00  D_Aleks_first_pattern EURUSD,H1: slope = 0
2013.02.26 21:22:39     2011.12.28 16:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02.26 21:22:39     2011.12.28 15:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02.26 21:22:39     2011.12.28 14:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02.26 21:22:39     2011.12.28 13:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02.26 21:22:39     2011.12.28 12:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02.26 21:22:39     2011.12.28 11:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0002
2013.02.26 21:22:39     2011.12.28 10:00  D_Aleks_first_pattern EURUSD,H1: slope = 0.0002
ファイル:
 
Vinin:


問題はインジケーターにあるようです。


その通りだ...でも、再計算が必要なのはバーの数 だけなんですよね...。この場合、なぜ正しい値を取得する方法がないのか不思議です。

この行をコメントアウトすると、すべて正常に動作し、0本目のバーから計算が修正されます。

int start()
  {
    int i, countedBars = IndicatorCounted();
    int limit = Bars - countedBars - 1;
    //if (limit > 400) limit = 400;
        
    for(i = limit;i > 0;i--)
    {

しかし 前回のバリエーションでは、プライミング時に、適切な値を出力していました。しかし、フクロウは十分な価値を得られなかった。なぜ?

 
hoz:


その通りだ...ただ、再計算されるのはバーの数だけですが...。なぜこの場合、正しい値を得る方法がないのか不思議です。

この行をコメントアウトすると、すべてが正常に動作し、バー0からの計算が修正されます。

しかし 以前のバリエーションでは、適切な値を出力していました。しかし、フクロウの撮影は十分ではありません。なぜ?


ビジュアライゼーション・モードで確認しているようですが
 
Vinin:

ビジュアライゼーション・モードで確認しているようですが

ええ、だから何?
 

バグを見つけるのを手伝ってくれ、アクションもエラーもない。もしかして、ライブラリが足りない?

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#import "kernel32.dll"
   int _lopen  (string path, int of);
   int _lcreat (string path, int attrib);
   int _llseek (int handle, int offset, int origin);
   int _lread  (int handle, string buffer, int bytes);
   int _lwrite (int handle, string buffer, int bytes);
   int _lclose (int handle);
#import


int start()
 {
 string text ="222222";//текст который собираемся записать или перезаписать в файл
 string pach ="D:\FILE.txt";//путь куда записываем файл или перезаписываем
 WriteFile("D:\FILE.txt", text);//выполнение 
 }
//+------------------------------------------------------------------+
//|  записать содержимое буфера по указанному пути                   |
//+------------------------------------------------------------------+
void WriteFile (string path, string buffer) 
 {
  int count=StringLen(buffer); //Возвращает число символов в строке. 
  int result;
  int handle=_lopen (path,1);
  if(handle<0) //если файл еще не создан то создаем
  {
  handle=_lcreat (path,0);
  result=_lclose (handle);
  }
  handle=_lopen (path,1);     //открываем          
  result=_llseek (handle,0,0);    //ставим указатель      
  result=_lwrite (handle,buffer,count); //записываем
  result=_lclose (handle);       //закрываем файл       
 }
//+------------------------------------------------------------------+  

私のシステム:MT4、Build 451。

Windows 7 Home Baseです。

 
merkulov.artem:

エラーを見つけるのに役立つ、アクションもエラーもない。もしかして、ライブラリが足りない?

私のシステム:MT4、Build 451。

Windows 7 Home Baseです。

各操作後にハンドルと結果をアンプリントすることで、何がうまくいっていないのかがわかります。
 
FileXXXXXの標準機能で何が問題なのでしょうか?
 
すべてのオープントレードの中から最小ロットを選ぶには?
 
pasha5282:
すべてのオープントレードの中から最小ロットを選ぶには?


int i, ot = OrdersTotal();
double min=0;
int min_ticket=0;
for(i=0;i<ot;i++)
{
   if(!OrderSelect(i,SELECT_BY_POS)) continue;
   if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;
   if(i==0||min> OrderLots()) {min = OrderLots(); min_ticket=OrderTicket();}
}