エラー、バグ、質問 - ページ 347

 
つまり、端末のバグか、サーバーの履歴のバグか、どちらかです。しかし、より可能性が高いのは、サーバーの履歴からレポートが回収された端末です。
 

Urain:
Так что это или баг терминала, или серверной истории. Но скорее терминала, тк отчёты на чемпе скорее с серверной истории восстанавливались.

それは面白いですね。注意力がなかったんです。わかりやすく解説しています。
 
Yedelkin:
それは面白いですね。注意力がなかったんです。わかりやすく解説しています。
以上、誰が楽しくて誰が2週間も虫に刺されてるんだ :o)
 
見つけたのですが、デフォルトでは時間でソートされているので、トランザクション番号でソートする必要があります。それなら大丈夫です。
 
Urain:
見つけたのですが、デフォルトでは時間でソートされているので、トランザクション番号でソートする必要があります。そうすれば、すべてが正しくなります。

つまり、エラーはないのですか? 要は、時間ではなくチケット番号でトレードをカウント/ソートすることです。

私は表面的に報告書を確認しただけで、ポジションの状態を計算したわけではありません。

 
Renat:

つまり、バグはないのですか? 要は、時間ではなくチケットでトランザクションをカウント/ソートすることです。

私は表面的に報告書を確認しただけで、ポジションの状態を計算したわけではありません。

その通りです。ただ、レポートを保存する際、このプロセスの自動化は行われておらず、注意深く監視する必要があります。すべてのユーザーがこの点に注意を払うとは思えませんし、その結果、レポートを解析する際にバグが発生することになります。

ZS レポートを解析した後にソートを追加しました。結果的に、私はすべてうまくいきましたが、この機能で苦労するプログラマーは複数いると予測されます。

 

最適化中は、 最適化 グラフの右 上に 最適化パラメータ 名が表示されます。


最適化を観察していると、新しい最大値が常に この碑文の後ろに隠されているため、この碑文は煩わしい。

レナート 左上に移動しよう! もしくは右下に。あるいは左下...どこでもいいから、頼むから右上に出してくれ! :)

// せめて淡い色にして 、情報が見えなくならないように背景に置いてほしい。

削除済み  
MetaDriver:

最適化中は、 最適化 グラフの右 上に 最適化パラメータ 名が表示されます。

最適化を観察していると、新しい最大値が常に この碑文の後ろに隠されているため、この碑文は煩わしい。

レナート、左上に移動しよう! もしくは右下に。あるいは左下...どこでもいいから、頼むから右上に出してくれ! :)

// せめて淡い色にして 、情報が見えなくならないように背景に置いてほしい。

左下、そして背景として。
 

どこで間違ったのか、教えてください。私は、現在の金融商品のポジションと保留中の注文を削除する簡単なスクリプトを書こうとしています。これです。

//+------------------------------------------------------------------+
//|                                                        clean.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlTick current_tick;
   MqlTradeRequest close_request;
   MqlTradeResult  close_result;
   SymbolInfoTick(_Symbol,current_tick);
   int counter01;
   while(check_position()==true);
     {
      PositionSelect(_Symbol);
      close_request.action=TRADE_ACTION_DEAL; close_request.symbol=_Symbol; close_request.volume=PositionGetDouble(POSITION_VOLUME); close_request.type_filling=ORDER_FILLING_AON;
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         close_request.price=current_tick.bid; close_request.type=ORDER_TYPE_SELL;
        }
      else
        {
         close_request.price=current_tick.ask; close_request.type=ORDER_TYPE_BUY;
        }
      OrderSend(close_request,close_result);
     }
   do
     {
      for(counter01=1; counter01<=OrdersTotal(); counter01++)
        {
         close_request.order=OrderGetTicket(counter01-1);
         if(OrderGetString(ORDER_SYMBOL)==_Symbol)
           {
            close_request.action=TRADE_ACTION_REMOVE;
            OrderSend(close_request,close_result);
           }
        }
     }
   while(check_order()==true);
   if(GetLastError()!=0)
      Print("ошибка код ",GetLastError()," функция ",__FUNCTION__," строка ",__LINE__);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_position() // функция проверяет наличие позиции
  {
   int counter01;
   bool position_exsist=false;
   for(counter01=0; counter01<PositionsTotal(); counter01++)
     {
      if(PositionGetSymbol(counter01)==_Symbol)
        {
         position_exsist=true;
         break;
        }
     }
   return(position_exsist);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_order() // функция проверяет наличие ордеров
  {
   int counter01;
   bool order_exsist=false;
   for(counter01=0; counter01<OrdersTotal(); counter01++)
     {
      OrderGetTicket(counter01);
      if(OrderGetString(ORDER_SYMBOL)==_Symbol)
        {
         order_exsist=true;
         break;
        }
     }
   return(order_exsist);
  }
//+------------------------------------------------------------------+
ポジションがあるとスクリプトがハングアップする。デバッグしてみると、位置を確認するときにフリーズしてしまうことがわかりました。ループ条件 while(check_position()==true) のチェックが開始されると check_position() に制御が移り、初めて正常に実行されると true を返します。しかし、その後、ループ本体は実行されず、再び条件のチェックを開始し、check_position()に制御が行き、return(order_exsist)演算 子の後にループの条件に戻らず、check_position()関数の最初に行く。どこが間違いなのか教えてください。
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Основы языка / Операторы / Оператор возврата return - Документация по MQL5
 
molotkovsm:

どこで間違ったのか、教えてください。私は、現在の金融商品のポジションと保留中の注文を削除する簡単なスクリプトを書こうとしています。これです。

ポジションがあるとスクリプトがハングアップする。デバッグしてみると、位置を確認するときにフリーズしてしまうことがわかりました。ループ条件 while(check_position()==true) でチェックが開始されると check_position() 関数に制御が渡され、関数が正常に実行されると一度だけ true を返します。しかし、その後、ループ本体は実行されず、再び条件のチェックを開始し、check_position()に制御が行き、return(order_exsist)演算 子の後にループの条件に戻らず、check_position()関数の最初に行きます。どこを勘違いしているのか、教えてください。

位置がある場合、無限ループになるのは

while(check_order()==true);

イコール

while(check_order()==true)
{
 //  пустой оператор
}
演算子本体に区切りがないため、コード内でループから抜け出すことはできません。