[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 898

 
Dimka-novitsek:
同じ状況です。
コードを表示する
 
arvis:
MT4で、ある時間から利益をpipsでカウントするインジケータを設定するにはどうすればよいですか?

時間を基準にするならば、価格がクローズした時点でこうなりますし、21:00からポイントをカウントするのであれば、時間を弄るしかなく、複雑なことは何もないのです。

 double Profit; // или double Profit = 0;

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2);
CurrCl = iClose(Symbol(), 0, 1);

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}
 

以下のコードを正しく作成する方法を教えてください。

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

こんな風にできるように。

if (LastOpenOrder - Bid >= 25 * Point) CloseOrder;

それは、この最後のオープンオーダーだけをクローズすることで、他のオーダーには手を出さないことです。

ありがとうございました。

 

EAに正しく書き込んで、インジケータの結果を得るにはどうしたらいいですか?

double ROC = iCustom(NULL,0, "ROC",12,0,0); - データは出力されません。

double ROC = iCustom(NULL,0, "ROC",12,0,0); - データは出力されません。

double ROC = iCustom(NULL,0, "ROC",12,0,0,0); - データは出力されません。

指標: https://www.mql5.com/ru/code/9340

 
DhP:

EAに正しく書き込んで、インジケータの結果を得るにはどうしたらいいですか?

double ROC = iCustom(NULL,0, "ROC",12,0,0); - データは出力されません。

double ROC = iCustom(NULL,0, "ROC",12,0,0); - データは出力されません。

double ROC = iCustom(NULL,0, "ROC",12,0,0,0); - データは出力されません。

指標:https://www.mql5.com/ru/code/9340

正しくは、このようになります。

double ROC = iCustom(NULL,0,"ROC",0,0);

でも、それで何をしようとしているのかがわからない。)

 
belck:

時間を使いたい場合は、価格がクローズしたときにこうなる、21時を使いたい場合は、時間を弄ることになり、複雑なことは何もありません。


belck さん、ありがとうございました。

複数のペアで取引する場合、同じ利益額をpipsで計算する方法を教えてください。それに、クローズドディールも考慮しなければならない。

 
arvis:


belck さん、ありがとうございました。

複数のペアで取引する場合、同じ利益をpipsで計算する方法を教えてください。それに、クローズド・トレードも考慮に入れなければならない。

この質問には、なかなか答えられません。

しかし、ひとつだけ言えるのは、これはすべて呼び出すべきだということです。

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2); // то тут указываете какая валютная пара и по желанию период : PrevCl = iClose("EURUSD", PERIOD_H1, 2);
CurrCl = iClose(Symbol(), 0, 1); // тут так же

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}

というように、最後のオープンオーダーの価格が呼び出されます。

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 
すべてが多かれ少なかれ明確です。 belck さん、どうもありがとうございました。
 
arvis:


belck さん、ありがとうございました。

複数のペアで取引する場合、同じ利益をpipsで計算する方法を教えてください。すでにこの方法でやり始めていますが、どうすればいいのかわかりません。

この方法でやり始めたのですが、混乱してしまったのだと今は理解しています。

double LastOpenPriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

и

double LastClosePriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderClosePrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 

これが、私がこだわっている基準です。

- 複数の注文が決済されていた場合、その合計の利益獲得枚数がカウントされるはずですが、カウントされるべきはピップスです。

このコードでの正しい進め方をアドバイスしてください。

LastBuyPrice = FindLastBuyPrice();     

if (Ask - LastBuyPrice >= 25 * Point) {
      for (int l_pos_16 = OrdersTotal()  - 1; l_pos_16 >= 0; l_pos_16--) {
 OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         CloseThisSymbolAll();
         Print("Closed All due to Stop Out");
         }
       }
     }


double FindLastBuyPrice() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}