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

 

私はCtradeを接続するロボットを書いています。まず、1時間の初めに市場価格で買い取引を行い、30分後に新しい市場価格ですべてを売るというロジックを始めたいと思っています。テスターでテストすると、Invalid order typeというエラーが出ます。

楽器はSBER、クライアントはOtkritieです。私の注文は マニュアルモードで、リアル口座でもデモ口座でも私の注文は 通らないのです。

何がエラーになるのでしょうか?株式市場は市場価格で取引してはいけないというのは本当ですか?

 
post_ek:

私はCtradeを接続するロボットを書いています。まず、ロジックを使いたいのですが、それによると、各時間の始めに市場価格で買い取引を行い、30分後に新しい市場価格ですべてを売る(Sell)ことになるのです。テスターでテストすると、Invalid order typeというエラーが出ます。

楽器はSBER、クライアントはOtkritieです。私の注文は マニュアルモードで、リアル口座でもデモ口座でも私の注文は 通らないのです。

何がエラーになるのでしょうか?株式市場は市場価格で取引してはいけないというのは本当ですか?

あなたのコードがないと何を書いたのか、なぜそれがうまくいかないのか理解できないのです。
 
ノートパソコンでEAを動作させ、ハイバネーションモードにした場合、プラグインしたEAは動作するのでしょうか?
 
Movlat Baghiyev:
ノートパソコンでEAを動作させていて、ハイバネーションモードになった場合、接続したEAは動作するのでしょうか?
そして、どんな値でもログにプリンターを含めれば分かるはずです。印刷されない場合は、動作していないことになります。
 
Vitalie Postolache:
そして、どんな値でもログにプリントを含めて、調べることになります。印刷されないと、機能しないのです。
それは明らかです......私は誰かが初心者のために自分の経験を共有することができると思った
 
Movlat Baghiyev:
ノートパソコンでEAを動かしていて、スリープしてしまった場合、プラグインしたEAは動作するのでしょうか?

ハイバネーションモードは、通常、ドライブをシャットダウンするものです。

最近サーバーを設置したのですが、3日目になって初めて、パソコンが眠っている、つまり全てのEAが動いていないことがわかりました。

ハイバネーションモードを無効にしたら、すべてうまくいきました。

 
Movlat Baghiyev:
それは明らかです......私は、誰かが初心者のために自分の経験を共有することができればと思いました。
私の経験では、ハイバネーションモードでは、一部のシステムサービスのみで、あまり動作しません。
 
Movlat Baghiyev:
こんにちは。もしアドバイザーがラップトップで実行されていて、それがハイバネーションモードになっている場合、接続されたアドバイザーはこの場合動作しますか?

いいえ、うまくいきません。電源設定で、電源の設定をします。

スリープモードにNO!

 
Sergey Gritsay:
コードがないと、何を書いたのか、なぜ動かないのかを理解するのが難しいのです。
//+------------------------------------------------------------------+
//|                                                         Gear.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade/Trade.mqh>
CTrade  trade;

bool TimeFlag, FLG;
int TimeScale=50, TimeInMemory, TimeNow;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
  //---Блок получения информации с биржи    
  MqlTick oCurrentTick;
  SymbolInfoTick(Symbol(), oCurrentTick);
//---Блок определения начала нового временного интервала
   TimeFlag=false;
   datetime tm=TimeCurrent();
   MqlDateTime stm;
   TimeToStruct(tm,stm);
   if(MathMod(StringToInteger((string)stm.min),TimeScale)==0)
     {
      TimeNow=StringToInteger((string)stm.min);
     }
   if(TimeNow != TimeInMemory)
     {
      TimeInMemory=TimeNow;
      TimeFlag=true;
      //Print(_Symbol);
     }
    
     if(TimeFlag)
       {
       if(FLG)
         {
   if(!trade.Buy(1,_Symbol))
     {
      //--- сообщим о неудаче
      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }
         FLG=false;
         }
       else
         {
         trade.Sell(1);
         FLG=true;
         }
       }
  }
//+------------------------------------------------------------------+
 
post_ek:

これではいけない。

bool TimeFlag,FLG;
int TimeScale=50,TimeInMemory,TimeNow;

というか、そのような宣言の後、OnInit()で明示的にこれらの変数を初期化(値を代入)する必要があります。

また、Sellメソッドは、以下のようなチェックで囲まれている必要があります。

trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");

朝、取引開始時に、オークションがすぐに始まるわけではありません。