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

 
Anatoliy Markov #:

ご参加ありがとうございました。ミッション・ステートメントが明確になっている実装に行き詰ってしまった...。

コメントで試した。第2グループまでは正しく番号付けされています。3回目には、1回目のグループがまだ市場に残っているにもかかわらず、コメントに対して1つ返されます。数を増やすのではなく、空いた分を取るという発想です。わかりやすく説明できたでしょうか)。

明確ではありませんが、それでもコードを挿入するためのボタンを使用します


またはALT+sキーを押す

 
void OnTick()
{
  //---
    
    for(int a=1; a<10; a++)
     {
       comment="";
       for(int i=0; i<OrdersTotal(); i++)
         {
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
               {    
                  if (OrderComment()==IntegerToString(a)) continue; 
                  else
                  {
                   comment=IntegerToString(a);
                   break;                  
                  } 
               }
            } 
         } 
        if(comment!="") break; 
     }
    if (CountOfBuy(magic)<1 && CountOfSell(magic)<1) comment="1";
  //---
}
Да, так более информативно. Т.е. этот незамысловатый модуль должен давать коммент для 
последующего присвоения ордеру. Когда открыта группа с комментом 1, он дает коммент 2 (это правильно). 
Когда открыта 2-я группа, опять дает 1. Не могу понять.
 

みなさん、こんばんは。

保留中の注文が すでに設定 されているかどうかを判断する関数を書いたのですが、なぜかうまくいきません。エラーの発生箇所を教えてください。敬具 ウラジミール

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике уже установлен отложенный    |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции с типом данных bool, чтобы хранить          |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return false; // поэтому возвращаем ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чья-то чужая позиция, поэтому возвращаем ложь
  }
 
MrBrooklin 保留中の注文が すでに設定 されているかどうかを判断する関数を書いたのですが、なぜか関数が動作しません。エラーの発生箇所を教えてください。敬具 ウラジミール

私は自分でエラーを発見しました!!!

以下は正常に動作するコードです。誰かの役に立つかもしれない。ウラジミールさん、ありがとうございます。

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике не установлен отложенный     |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return true; // поэтому возвращаем значение истина
      else // в противном случае
         return false; // возвращаем значение ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь
 

どのように整理したらよいか、あるいはどのように見たらよいか、アドバイスをお願いします。

ここで、棒グラフの計算を行わないようにするために、バッファが発明された。新しいティックごとに、最後のバーだけがチェックされます(私の理解では)。

バッファのおかげで、線は履歴全体に対して再描画されませんが、最後のエッジに追加のセグメントが追加されます。バッファは全部で8つあります。

ある計算を100回(1つの変数だけを変えて線を引くのを100回とする)行い、その中で最も良い結果を描く必要がある場合はどうすればよいのでしょうか。そして、新しいティックまたはタイマーで、既存の結果(図面)の「履歴」を使って同じことを行います。この情報をどこに、どのように保存すれば、全履歴を再計算する必要がないのでしょうか?

もっと簡単に言うと、インジケーターのバッファの数を増やすにはどうしたらいいのか?おそらく、ファイルに別々に書き込むのでは?何が良いのか
 
Ivan Butko #:

どのように整理したらよいか、あるいはどのように見たらよいか、アドバイスをお願いします。

ここで、棒グラフの計算を行わないようにするために、バッファが発明された。新しいティックごとに、最後のバーだけがチェックされます(私の理解では)。

バッファのおかげで、線は履歴全体に対して再描画されませんが、最後のエッジに追加のセグメントが追加されます。バッファは全部で8つあります。

ある計算を100回(1つの変数だけを変えて線を引くのを100回とする)行い、その中で最も良い結果を出す必要がある場合はどうすればよいのでしょうか。そして、新しいティックまたはタイマーで、既存の結果(図面)の「履歴」を使って同じことを行います。この情報をどこに、どのように保存すれば、全履歴にわたってこれらの計算を行う必要がないのでしょうか。

もっと簡単に言うと、インジケーターのバッファの数を増やすにはどうしたらいいのか?ファイルに分けて書き込むとか?にはどのようなものがあるのでしょうか。

インジケーターのバッファは512個です。

 
Artyom Trishkin #:

インジケーターのバッファは512個です。

おお、すごい。ありがとうございます。探す場所を間違えていたようです。これからも頑張ります。

削除済み  
MrBrooklin #:

error found by myself!!!

以下は正常に動作するコードです。誰かの役に立つかもしれない。ウラジミールさん、ありがとうございます。

誰の役にも立たないでしょう。あなたのコードには重大な誤りがあります。そして、それを修正することに意味はありません。

わざわざ言語の基礎を学んで何かを書こうとはしないんですね。

真剣に取り組むか、あきらめるか、どちらかです。

 
Koldun Zloy #:

誰も使うことができない。あなたのコードには重大な誤りがあります。そして、それらを修正することに意味はありません。

わざわざ言語の基礎を学ぼうとせず、何かを書こうとする。

本気を出すか、諦めるか、どちらかです。

おはようございます! はい、まったくその通りです。に行くという無意味な商売はあきらめるべきだ。

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

で、ここで助けを待つ。

ウラジミールさん、ありがとうございます。

削除済み  
MrBrooklin #:
おはようございます! はい、まったくその通りです。に応募する、という無意味な商売は辞めた方がいい。

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

で、ここで助けを待つ。

ウラジミールさん、ありがとうございます。

その通り、諦めてください。

私がロシア語で書いたものを、あなたは理解できなかったのです。

なぜプログラミングをやりたいのですか?