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

 
makssub #:
こんにちは。現在の価格に最も近い注文の開始価格を見つける方法を教えてください。MQL4です。何か例はありますか?

すべてのオープンポジションを調べ、現在の価格から取引開始までのpips数を比較します。

ループの中で注文を検索するというコードがあります。

 
MakarFX #:

OrdersCloseとは何ですか?

こちらを ご覧ください。

了解です、ありがとうございます。

 
PapaYozh #:


空想する必要はありません。何が起こるかの本質は、異なるパラメータのセットを持つコンストラクタである、メソッドを呼び出すことです。この場合、オブジェクトは生成されません。

コンストラクタの呼び出しとメソッド/関数の呼び出しの違いを理解する必要があります。

PapaYozh#:

似たようなコンストラクタの呼び出しで、これも望む結果にはならない。

議論のために、ポインタを参照渡しでメソッド(メソッドのように呼び出されるコンストラクタ ?)のシグネチャに追加します。

 
Taras Slobodyanik #:

すべてのオープンポジションを調べ、現在の価格から取引開始までのpips数を比較します。

ループの中で注文を検索するというコードがあります。

すみません、また正しく書けていません。再チャレンジします)

オープンオーダーのグリッドがあります。現在の価格に最も近い注文の開始価格(OrderOpenPrice)を見つける必要があります。グリッドを構築し続けるためですが、私の注文はほとんど無秩序に構築されています。

オーバーシュートの書き方はわかるのですが、それを言葉で正しく表現できないのです(私は犬のように、何でもわかってしまうのです))。

事例やリンク先があれば、ぜひ投稿してください。MQL4

 
Igor Makanu #:

コンストラクタ呼び出しとメソッド/ファンクション呼び出しの違いを理解する必要がある

議論のために、メソッド(メソッドのように呼び出されるコンストラクタ ?)のシグネチャにポインタを追加して、参照渡しする。

JavaではOKです。

また、子コンストラクタから親コンストラクタを呼び出すこともできます。唯一の条件は、子コンストラクタの最初のコマンドによって親コンストラクタが呼び出されることです。

MQLでは、親に空のコンストラクタがない場合、子作成時に暗黙のうちに親のコンストラクタが呼び出されることが問題です。

--

PS.

また、親がパラメータなしのコンストラクタとパラメータありのコンストラクタを持っている場合、パラメータありの子孫コンストラクタから暗黙的に呼び出されるのはどちらでしょうか。

 
Igor Makanu #:


主題のために - メソッド(メソッドとして呼び出されるコンストラクタ?)の署名で、参照によってポインタを渡す追加


これではまるで松葉杖のようだ。

そうでしょう?

 

皆さん、こんにちは。愚問かもしれませんが、まだ解決策が見つかっていないのです。

インジケータを作成しました。チャート上にボタンが あり、それを押すと線が引かれ、ボタンがアクティブになるのです。

タイムフレームを切り替えても、ボタンの動きや線の位置が変わらないようにするには?

TFを切り替えると、Deinit関数が動作し、全オブジェクトの削除が行われる。チャートからすべてをクリアにすることが、ある意味、前提条件です。

ボタンの状態を変数に格納しようとしましたが、インジケータで気づいたように、TFを切り替えるとゼロになってしまいます。

EAではそのようなことはなく、内部変数の値がそこでゼロになることはありません。インジケータが何らかの値を計算し、内部変数に保存していた場合、TFスイッチでリセットされることが判明しました。その理由と回避方法

 
makssub #:

すみません、また書き間違えてしまいました。もう一回やらせてください)

オープンオーダーのグリッドがあります。現在の価格に最も近い注文の開始価格(OrderOpenPrice)を見つける必要があります。グリッドを構築し続けるためですが、私の注文はほとんど無秩序に構築されています。

オーバーシュートの書き方はわかるのですが、それを言葉で正しく表現できないのです(私は犬のように、何でもわかってしまうのです))。

事例やリンク先があれば、ぜひ投稿してください。MQL4

まず、サイクル前の差は1000に等しい。ループ内では、始値から現在値を引いた値が差分よりモジュロ小さければ、その差分を取得値とし、チケットを変数に格納します。
 
Igor Makanu #:

コンストラクタの呼び出しとメソッド/関数の呼び出しの違いについて知っておく必要があります。


ところで、オブジェクトの生成時に暗黙的に呼び出されることを除けば、どのような違いがあるのでしょうか。

 
void ClosseAll()
{
  for(int i = OrdersTotal()-1; i>=0; i--)
  {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderType() == OP_BUY)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip))
             Print("Не удалось закрыть ордера на покупку!");
         }
       if (OrderType() == OP_SELL)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip))
             Print("Не удалось закрыть ордер на продажу!");
         }
     }
  }
}

Good day !!!

ドローダウンが一定レベルに達したときにグリッドEAで最小と最大の注文を閉じるためのコードを書くのを手伝ってください。

最大注文と最小注文の利益を計算するために2つの関数を書きました。

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder()
{
  int max_ticket = 0;
  double max_ticket_profit = 0 ;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
    if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) 
     {
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
       {
        if(OrderType() == OP_BUY || OrderType() == OP_SELL)
        {
          if(OrderTicket() > max_ticket) max_ticket = ticket;
          {
           max_ticket_profit =  OrderProfit();
          }
        }
       }
     }
    }
  }
  return( max_ticket_profit);
}
//+----------------------------------------------------------------------------+
//| Расчет профита минимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
double GetProfitMinOrder()
{
  int min_ticket=INT_MAX;
  double min_ticket_profit = 0;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
     if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
     {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
        {
          if (OrderType() == OP_BUY || OrderType() == OP_SELL)
           {
            if(OrderTicket() < min_ticket)
              min_ticket = OrderTicket();
              {
               min_ticket_profit = OrderProfit(); 
              }
           }
        }
      }
    }
  }
  return(min_ticket_profit);
}

これらの注文の金額を計算する関数があります。こちらは問題ないようです。

問題は、この2つの注文だけをクローズする方法ですが、ClosseAll()関数を見つけました。

問題は、すべての注文をクローズするOrderTicket()関数をどのように変更するかということです

グリッドの最小オーダーと最大オーダーのみのチケットを決定する変数 max_ticket と min_ticket をアタッチする。

それとも、この質問に対するあなたの答えがあるのでしょうか?