初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1380

 

現在のバーが独自の時間を持つインデックスを持っている場合、この組み合わせは決して変更されないと仮定しています。
それとも、ヒストリーページングの結果、このインデックスが過去のバーに割り当てられ、現在のバーがページングされたバーの数だけ大きな新しいインデックスを取得することは可能ですか?

また言い換えると、
、現在のバーが利用可能になるのは、ヒストリーのフルスワップ後のみで、それ以降はそのパラメータは変化しないという理解でよいでしょうか。

 

MySQLテーブルの行数を取得する方法を教えてください。

//--- Выставленные позиции
struct PositionFib
  {
   int               ID;            // Индификатор
   int               ur;            // Уровень
   int               per;           // Период
   int               type;          // Тип ордера
   double            price;         // Цена Открытия
   double            priceTP;       // Цена Профита
   double            priceSL;       // Цена Стопа
   double            lot;           // Лот
   datetime          time;          // Время
   string            key;           // Ключ
  } position_buff[];
//--- заблокируем базу данных перед выполнением транзакций
   DatabaseTransactionBegin(database);
   int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
   DatabaseReadBind(request, person)
   id=person.ID;
  

エラーを返します

最後のIDを取得する

これも試してみましたが、行数を取得できません。

 int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
   id= DatabaseRead(request);
 

どうしたんだ、なぜクエリから値が取れないんだ?

//--- открываем/создаем базу данных в общей папке терминалов
   int database=DatabaseOpen(filename+".sqlite", DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE | DATABASE_OPEN_COMMON);
   if(database==INVALID_HANDLE)
     {
      Print("SaveStats: ", filename, " открываем/создаем базу данных в общей папке терминалов ", GetLastError());
      return;
     }

//--- заблокируем базу данных перед выполнением транзакций
   DatabaseTransactionBegin(database);
   int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
   int id= DatabaseRead(request);

このクエリをデータベースと照合すると、そのまま返されます。



 int id= DatabaseRead(request);

データベースはブール値,id は int です.


クエリーの結果を取り出すにはどうしたらよいですか?


うまくいったので、追加のSQLクラスを作成しました。

//--- заблокируем базу данных перед выполнением транзакций
   DatabaseTransactionBegin(database);
   int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
   DatabaseReadBind(request,sql);
 

インジケータをアンロードしてから DeInitを呼び出すまでに数秒が経過する。

なぜ間が空いてしまうのか、間が空かないようにすることはできるのか。

 
ティック ごとに注文が開始されます。

私はこのブロックを使っています。ドキュメントから引用しました(tpとslの両方)。

//+------------------------------------------------------------------+

void Open_order_BUY()

  {

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

    //--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.1 лот

   request.type     =ORDER_TYPE_BUY;                        // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия

   request.sl       =bid-SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =ask+TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

       PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }

  

//+------------------------------------------------------------------+ 

void Open_order_SELL()

  {

  

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

//--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.2 лот

   request.type     =ORDER_TYPE_SELL;                       // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_BID); // цена для открытия

   request.sl       =ask+SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =bid-TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

      PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }


 
Ivan Butko #:
ティック ごとに注文が開始されます。 私はこのブロックを使っています。ドキュメントから引用しました(tpとslの両方)。

//+------------------------------------------------------------------+

void Open_order_BUY()

  {

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

    //--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.1 лот

   request.type     =ORDER_TYPE_BUY;                        // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия

   request.sl       =bid-SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =ask+TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

       PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }

  

//+------------------------------------------------------------------+ 

void Open_order_SELL()

  {

  

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

//--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.2 лот

   request.type     =ORDER_TYPE_SELL;                       // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_BID); // цена для открытия

   request.sl       =ask+SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =bid-TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

      PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }


解決済み。

 

右側に線を伸ばすには?現在のバーよりさらに上。

時間や 価格の座標軸が あります。価格は明確ですが、時間を設定する方法(iTime(Symbol(), PERIOD_CURRENT, 0)を試しましたが、そのインデックスはゼロです)。

 
Ivan Butko #:

右側に線を伸ばすには?現在のバーよりさらに上。

時間や 価格の座標軸が あります。価格はわかるが、時間をどう設定するか(iTime(Symbol(), PERIOD_CURRENT, 0)を試したが、そのインデックスは0である)。

iTime(Symbol(), PERIOD_CURRENT, 0) + PeriodSeconds()*5 // 5 баров
 

こんにちは。

ここで質問です。

DRAW_FILLINGの描画スタイルでゾーンを描画するインジケータを作成しています。描画されたゾーン以外にも、チャート上にはたくさんのムーウィングなどいくつかの指標があります。ゾーンが描かれると、他のインジケーターのラインもシャープに色が変化します。

質問:MT5でゾーンの色が重ならず、他のインジケーターのラインの色を変えないように描けるか?

追伸:インジケータバッファのプロパティ( PlotIndexSetIntegerなどの メソッド)を全て掘ってみましたが、似たようなものはありません。

P.S2.は、MT5のスクリーンショットです。

ファイル:
u68ufb.PNG  49 kb
 
satorifx #:

こんにちは。

ここで質問です。

DRAW_FILLINGの描画スタイルでゾーンを描画するインジケータを作成しています。描画されたゾーン以外にも、チャート上にはたくさんのムーウィングなどいくつかの指標があります。ゾーンが描かれると、他のインジケーターのラインもシャープに色が変化します。

質問:MT5でゾーンの色が重ならず、他のインジケーターのラインの色を変えないように描けるか?

追伸:インジケータバッファのプロパティ( PlotIndexSetIntegerなどの メソッド)を全て掘ってみましたが、似たようなものはありません。

P.S2.以下は、MT5の画面です。

全ては重なり合う順序に依存し、最後にいる者が上位となる

最初にDRAW_FILLINGで バッファを定義します。

理由: