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

 

こんにちは。

私は、2つの終値を比較し、それに基づいて買いまたは売り注文を出す非常にシンプルなEAを作ろうとしています。

最初の注文はうまくいくのですが、条件が売りから買いに切り替わった途端、一度に複数の注文を出してしまいます。

m_tradeはCtradeオブジェクト です。

// Current position information

bool Buy_openend = false;
bool Sell_openend = false;

double currentVolume = 0;

if(PositionSelect(_Symbol) == true)
  {
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      Buy_openend = true;
     }
      if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
     {
      Sell_openend = true;
      }   
        currentVolume = PositionGetDouble(POSITION_VOLUME);   
  } 

// Check for trade conditions

bool SellCondition = close <= closeprev && bar[1].time == startTime;
bool BuyCondition = close >= closeprev && bar[1].time == startTime;


// Entering trade

if(SellCondition)
  {
   if(Sell_openend)
   {
   Print("We already have a sell open");
   return;
   }
   m_trade.Sell(TradeVolume+currentVolume,_Symbol,m_symbol.Ask(),NULL,NULL,NULL);
  }
if(BuyCondition)
  {
   if(Buy_openend)
     {
      Print("We already have a buy open");
   return;
     }
     m_trade.Buy(TradeVolume+currentVolume,_Symbol,m_symbol.Bid(),NULL,NULL,NULL);
  }
 
Divania111 Ctradeオブジェクト です。

startTime'時間をリセットする必要があることを忘れています。

 
Vladimir Karputov #:

startTime'の時間をリセットする必要があることを忘れています。

Vladimirさん、ありがとうございます!ヒントを元に修正してみます。

それでも、まだ驚いています。なぜなら、取引に入るためのif文の中で、同じ種類の既存の注文の発注をチェックしているからです。もし、これが真であれば、注文は出さないはずです。そこで、このステートメントでは、同時に発注できるのは1種類だけだと思ったのです。

この考えは間違っているのでしょうか?

 
Divania111 # :

ウラジミールさん、ありがとうございます!ヒントを元に修正してみます。

それでも、まだ驚いています。なぜなら、取引に入るためのif文の中で、同じ種類の既存の発注があるかどうかをチェックしています。もし、これが真であれば、注文は出さないはずです。そこで、このステートメントでは、同時に発注できるのは1種類だけだと思ったのです。

この考えは間違っているのでしょうか?

ORDERSを制御するのではなく、コード内のPOSITIONの番号と種類をチェックするのです。その上、あなたはポジションの扱いが間違っています(口座の種類がヘッジングの場合、'PositionSelect(_Symbol)'を使うのは間違いです)。あなたのアルゴリズムには重大な設計ミスがあります。

あなたがすべきこと

1.新しいバーの誕生時に排他的に動作します。新しいバーがない場合は、何もせず、不必要な動きをしないこと。

2.この項目は、項目1が完了した後に開示されます。

 
こんにちは。void OnTick()のCommentが EAを遅くしているのかどうか教えてください。int OnInit()に入れると、より高速に動作します。
 
Marco Nicholas コメントが EAを遅くしているのかどうか教えてください。int OnInit()に入れると、より高速に動作します。

はい、MT5では、かなり動作が遅くなります。

OnInitでは、初期化時に一度だけ動作し、それ以上は動作しない。

 
Marco Nicholas Commentが EAを遅くしているのかどうか教えてください。int OnInit()に入れると、ずっと速く動作します。

Comment() 関数のことでしょうか?

もしそうなら、それは明らかです。OnInit() では、コメントは一度だけ更新されますが、OnTick() では、コメントはすべてのティックで更新されることになるかもしれません。

解決策は、必要なときだけコメントを更新することです。静的なコメントであれば、OnInit() で更新し、OnDeinit() でクリアします。動的なコメントであれば、OnTick() で、変更する必要があるときだけコメントを更新します。

EDIT: この投稿は元々英語のフォーラムで行われました。

 
先生方、こんにちは。クライアント側の SocketConnect() 数を 使用する際、 ユーザーの指示通りにパラメータを正しく埋めてもサーバーとの接続が確立できませんが、テストすると普通にサーバーが 使用できるようになります。
 

皆さん、ごきげんよう。

質問があります

チケットから行を選択するためのSQLiteへの クエリを作成する方法。

データベースの構造は以下の通りである。

シンボルテキスト

チケット - テキスト

ピース・リアル

s_l - 実数

t_p - 実数

チケットの文字列全体を構造体に取り込む必要があります。

 
こんにちは、switch()で同じPrintの代わりにComment() を使うことはできますか?
理由: