[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 607

 
rustein:
はい、わかりました、ありがとうございます。

そう言ってしまえば、他に方法がないのですが......(笑)。

それで...

double BullSumm()
{
  double MySummBull=0;
  for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
  { 
    if(!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES))continue; // если нет продолжим цикл
    if(OrderType()==OP_BUY)
    {
      MySummBull+=OrderOpenPrice()*OrderLots();
    }
  }
  if(MySummBull==0)return(380/*v*/);
  return(MySummBull);
}
 
griha:
EAの動作をファイルに記録したい
MQLエディターのマニュアルから例を引用し、私自身のニーズに合わせて少し作り直しました。


その結果、注文は開かれているものの、ファイル OrdersReport.csv は空になっています。


同じ問題に遭遇しました。読み込み用にファイルを開き、そこに書き込もうとすると、ファイルが作成されないか、何も書き込まれないのです。

Servicedeckアプリケーション:

FILE_READ|FILE_WRITE キーで登録解除されたテキストファイルに、FileSeek() で明示的にファイルポインタを設定せずに追加しようとすると、書き込みが全く行われない。

以前のバージョンの端末では、FileReadString()関数でテキストファイルを先読みする場合、自動的にファイルポインタが設定されました。

以下、開発者からの回答です。

ファイル機能の最後の変更は、2008年半ばにさかのぼります。

ファイルポインタを末尾に設定することなく、ファイルへの追記が可能になったことは、これまでにないことです。

余分な情報についての再質問です。これは、ファイルの末尾に追加することと関係があるのでしょうか?

ファイルの読み書き操作は、自動的にファイルポインタを移動させます。これは昔から変わらないことです。ただし、csvファイルとしてオープンした場合は、中間データのバッファリングが可能です。その場合、ファイルポインタは期待する場所にない可能性があります。繰り返しになりますが、これは前バージョンでもプレリリースでも、正式リリース当初から常にそうでした。

デフォルトの原則が極めて有害であることは、何度も繰り返し述べています。ファイルポインタ用も含む。連続読み書きをしない限り、ファイルポインタを明示的に処理すること(特にエキゾチックな混合読み書きの場合)。

結論:FileSeekを 使う

 
khorosh:
チェックする。
ありがとうございます。
 
Roll:

Expert Advisorは30分足のADXシグナルで取引されます。エキスパートアドバイザーが1分間のADXシグナルで取引する場合、そのようなシグナルは、最初のバリエーションよりも頻繁になります。スクリーンショットは、BUYポジションオープン時のみ撮影されます。
スクリーンショット(テストモード)のチャートからインジケータがないことに興味をお持ちのようです。デモモードのスクリーンショットでインジケーターの有無を確認していただきました。該当する機能を持つスクリプトが追加されたので、何時間も待たされることなく、すぐに質問を確認・理解できるようになりました。1日以上経過した。知りたいのは、その結果です。

忙しいけど、明日もチェックするよ。
 

関数内で名前を定義する場合と、変数に名前を付けてからその変数を関数に渡す場合の違いを教えてください。

//-------------- первый вариант (рабочий)

string up_line = "upline_", down_line = "downline_";
 
     flatlineup(up_line+TimeToStr(Time[i]), y2,x2,y22,x2,Red,1);     Имя присваиваю в теле функции
     flatlinedown(down_line+TimeToStr(Time[i]), y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);

TimeToStr(Time[i]) указывал в имени тренд лайн в теле функции
//--------------- второй вариант (нерабочий)

string up_line = "upline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()        ИМЯ ПРИСВАИВАЮ В ПЕРЕМЕННОЙ
string down_line = "downline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2,Red,1);                 ПЕРЕДАЮ ПЕРЕМЕННУЮ В ФУНКЦИЮ
     flatlinedown(down_line, y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);
 
rustein:
EAでゼロ除算 エラーが出るのを解消してください。

よろしくお願いします。

この方法でできます、私には有効です

ダブルブルプライス(BullPrice)

{

double BullAveragePrice=0;

doubleSummBullLots=0とする。

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol()) continue;

if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)

{

BullAveragePrice+=OrderOpenPrice()*OrderLots()です。

MySummBullLots+=OrderLots()です。

}

}

if (MySummBullLots>0) BullAveragePrice =NormalizeDouble(BullAveragePrice / MySummBullLots, Digits);

return(BullAveragePrice);

}

 
Zhunko:

MT4フォルダには、MQL4で全てのケースに対応したC++のサンプルコードがあります。そのコードをコンパイルして、自分のコードを貼り付けてください。自分のとお手本との違いがすぐにわかります。

私のMTにはありません。MQLで書かれたライブラリは1つだけです(stdlib.mq4)。ここで例を挙げていただけますか?
 
Fox_RM:

関数内で名前を定義する場合と、変数に名前を付けてからその変数を関数に渡す場合の違いを教えてください。

この例では、関数へのパラメータの渡し 方が違うだけです
dellline(...)
 
costy_:

そうでなければ...

ありがとうございました。
 

私はこのようなcsvファイルを読んで、このような状況であることを助言してください。

void ReadDate(){
   while(!IsStopped()){
      string dTime = FileReadString(ExtCsvHandle); // читаем строчку 1
      string sValue = FileReadString(ExtCsvHandle); // читаем строчку 2
      Print("Date=",StrToTime(dTime), "Value=",sValue);   
      
   }
}

が、csvファイルにはヘッダがあり、最初の余分な行は

Time,Value
15.02.2012 00:00:00;Значение1
15.02.2012 00:01:07;Значение2
15.02.2012 00:02:26;Значение3
15.02.2012 00:00:00;Значение1
15.02.2012 00:01:07;Значение2
15.02.2012 00:02:26;Значение3

最初の行をプログラムでスキップする方法、または値を保存するときに一般的にプログラムで削除すると、すべてが台無しになります。

ありがとうございました。