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

 
Alexey Viktorov #:

ヴァレリー、セリフに注目

を使うようになりました。

は陳腐な0を出した。

だから、ゴキブリがどこにいるか考えてみてください...そして、mt4がサポートを拒否しているので、絶対に修正されないと思ってください...。

それ以外はすべてチェックしなければならない。思い出したくもないくらい長い間、気にもしていませんでした。

うーん...。時間がエミュレートされる) 気合いを入れないと)

int sd;
/*******************Expert initialization function*******************/
int OnInit()
 {
  sd = (int)MarketInfo("EURJPY", MODE_DIGITS);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

/************************Expert tick function************************/
void OnTick()
 {
  datetime lt = iTime(_Symbol, PERIOD_M15, 0);
  static datetime ct = 0;
  if(ct != lt)
  {
   ct = lt;
   Print(DoubleToString(iMA("EURJPY", PERIOD_M15, 21, 0, MODE_SMA, PRICE_CLOSE, 0), sd),
    " Time[0] ",TimeToStr( Time[0])," iTime(EURJPY,0,0) ",TimeToStr(iTime("EURJPY",0,0)));
  }

結果

2021.09.21 15:30:48.696 2021.08.13 20:15:00  testMulti EURUSD,M15: 129.482 Time[0] 2021.08.13 20:15 iTime(EURJPY,0,0) 2021.08.13 20:15
2021.09.21 15:30:48.632 2021.08.13 20:00:00  testMulti EURUSD,M15: 129.495 Time[0] 2021.08.13 20:00 iTime(EURJPY,0,0) 2021.08.13 20:00
2021.09.21 15:30:48.568 2021.08.13 19:45:00  testMulti EURUSD,M15: 129.512 Time[0] 2021.08.13 19:45 iTime(EURJPY,0,0) 2021.08.13 19:45
2021.09.21 15:30:48.504 2021.08.13 19:30:00  testMulti EURUSD,M15: 129.527 Time[0] 2021.08.13 19:30 iTime(EURJPY,0,0) 2021.08.13 19:30
2021.09.21 15:30:48.440 2021.08.13 19:15:00  testMulti EURUSD,M15: 129.539 Time[0] 2021.08.13 19:15 iTime(EURJPY,0,0) 2021.08.13 19:15

ZZYは他のキャラクターからバーデータを取得する作業))))しかし、物語は具体的にロードされる必要があり、ロードされていない楽器にそうだけ配列の外に行く、または遠いバーからデータを要求する。

ZS ZS

本当に効果あり!!!私はすべての!!必要な通貨ペアの引用符のアーカイブをアップロードする必要があり、それは古いものと後の開始で、21の6月から分単位で動作します)。

 
giros #:

MQL5を(ロシア語で)学べるところを教えてください。

これです。他は読んでないです。
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 


double FindPenultBuyPrice()
{
   int oldticket;
   double oldopenprice=0;
   ticket=0;
   
   for(int i=OrdersTotal()- 2 ; i>=0; i--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
         {
            oldticket = OrderTicket();
            if (oldticket > ticket)
            {
               ticket = oldticket;
               oldopenprice = OrderOpenPrice();
            }
         }
      }
   }
   return(oldopenprice);
}

こんにちは。ペナルティ注文の始値を求めようとしていますが、売り注文がない場合は正常に動作しています。それもカウントしているのだと思います。MQL4

 
makssub #:


こんにちは。ペナルティ注文の始値を求めようとしていますが、売り注文がない場合は正常に動作しています。それもカウントしているのだと思います。MQL4

double FindPenultBuyPrice()
{
   int oldticket;
   double oldopenprice=0;
   ticket=0;
   
   for(int i=OrdersTotal()- 2 ; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // внимательней к копипасту) цикл по i а перебираешь cnt))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
         {
            oldticket = OrderTicket();
            if (oldticket > ticket)
            {
               ticket = oldticket;
               oldopenprice = OrderOpenPrice();
            }
         }
      }
   }
   return(oldopenprice);
}
 
Valeriy Yastremskiy #:


double FindPenultBuyPrice()
{
   int oldticket;
   double oldopenprice=0;
   ticket=0;
   
   for(int cnt=OrdersTotal()- 2 ; cnt>=0; cnt--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
         {
            oldticket = OrderTicket();
            if (oldticket > ticket)
            {
               ticket = oldticket;
               oldopenprice = OrderOpenPrice();
            }
         }
      }
   }
   return(oldopenprice);
}

ありがとうございます。再確認したところ、やはりSellもカウントされていました(

 
makssub #:


ありがとうございます。再確認したところ、やはりSellもカウントされていました(

おそらく、総受注数から差し引いているからでしょう

OrdersTotal()- 2 

を覗き込むだけです。

OP_BUY
 
makssub #:


ありがとうございます。再確認したところ、やはりSellもカウントされていました(

2つ目のifの前と2つ目のifの中に番号、チケット、オーダータイプをアンプリントする。

double FindPenultBuyPrice()
{
   int oldticket;
   double oldopenprice=0;
   ticket=0;
   
   for(int cnt=OrdersTotal()- 2 ; cnt>=0; cnt--)
   {
    if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
Print("Print 1 "," cnt ",cnt," OrderTicket() ",OrderTicket()," OrderType() ",OrderType());
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
         {
Print("Print 2 "," cnt ",cnt," OrderTicket() ",OrderTicket()," OrderType() ",OrderType());
            oldticket = OrderTicket();
            if (oldticket > ticket)
            {
               ticket = oldticket;
               oldopenprice = OrderOpenPrice();
            }
         }
      }
   }
   return(oldopenprice);
}
 
 private:
   CPoint             *startPoint;
   CPoint             *endPoint;

コンストラクタは2つあります。2番目のコンストラクタから1番目のコンストラクタを呼び出し、上記の変数に値を設定すると、そこから2番目のコンストラクタに戻ると、これらの変数はNULLに なります。
しかし、最初のコンストラクタから2番目のコンストラクタにコードをコピーして呼び出さない場合、すべてがうまくいきます。何が問題なのか?

CWave::CWave(string namePref,
             double startPrice,
             datetime startTime,
             double endPrice,
             datetime endTime)
  {
   prevWave = NULL;
   nextWave = NULL;
   name = namePref+"_"+TimeToString(startTime, TIME_DATE|TIME_MINUTES);
   startPoint = new CPoint(startPrice, startTime);
   endPoint = new CPoint(endPrice, endTime);
   dir = startPrice < endPrice ? true : false;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CWave::CWave(string namePref,
             double startPrice,
             datetime startTime,
             double endPrice,
             datetime endTime,
             CWave *prevWave)
  {
   CWave(namePref, startPrice, startTime, endPrice, endTime);
   this.prevWave = prevWave;
   prevWave.nextWave = &this;
  }
 
Roman Sharanov NULLに なります。
しかし、1番目のコンストラクタのコードを2番目のコンストラクタにコピーして呼び出さないだけで、すべてがうまくいきます。何が問題なのか?


問題はMQLにある。

このような場合、私は初期化を別のメソッドに置き、別のコンストラクタから引っ張ってくるようにしています。

---

また、親コンストラクタを呼び出す際にも問題があります。

 
Valeriy Yastremskiy #:

2番目のifの前と2番目のifの中に、番号、チケット、オーダータイプを印刷します。

ありがとうございます。今日中に確認します。