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

 
引用ではなく、変数です。文字列変数にカウントがあり、double が指定された精度で文字列変数に変換される。これはもちろん強いです。
 
ちなみに、これは5桁で見積もったものが、小数点以下5桁以上で入ってくるというテーマで。自動チェックをしたかったのですが、この言語ではそう簡単ではないことがわかりました。とりあえず、プリンターで手動で確認しました。小数点以下が5桁もない、そんなことはよくあることなのでしょうか?もしかして、第4ターミナルにあったのかな?
 
OK、メッセージの組織的な無視がある。またスレッドを立ち上げるべき
 
pribludilsa #:
なるほど、組織的なメッセージの無視があるんですね。またスレッドを立ち上げるべき

は、すでにこのテーマに関するトピックがあります。を文字列に変換し、文字列の数を数える。本当は小数点の前の桁数をまず数えなければならないのですが。整数に変換することができます。しかも、文字列がぎこちない))))

 
Alexey Viktorov #:

mt4テスターでは、他のペアで注文を出すことはできませんが、それ以外は問題なく使用できます。

ありがとうございます。確かに、テスターで他の機器からインジケーターの値を取得することは可能です。
Alexander #:

AUDUSDのクォートの可用性を、正しいTFで確認する。

まさにそれが問題だったのです。問題は、休日(日曜日)にテストをしていて、必要なシンボル(AUDUSD)の相場アーカイブを「ダウンロード」したのですが、その休日にFXディーラーのサーバーが利用できないため、ダウンロードされていないだけだということが判明しました。そして本日月曜日、見積書アーカイブのダウンロードとテストが成功しました。
MakarFX#:
すみません、間違えました、自分でも知りませんでした。
大丈夫、プライベートメッセージでの返信の方がよっぽど貴重なんです。

ここで回答してくれる人たちがいて、助け合えるのは本当にありがたいことです。すべての回答がドキュメントに記載されているわけではありません)
 
Valeriy Yastremskiy #:

は、すでにこのテーマに関するトピックがあります。を文字列に変換し、文字列の数を数える。本当は小数点の前の桁数をまず数えなければならないのですが。整数に変換することができます。あと、文字列に)))を持ってくるのもちょっとやっかいですね。

はい、私もそうしたかったのですが、doubleからstringへの変換だけは、精度を指定して行い、精度を指定しない場合は、デフォルトで8桁にします。

 
Valeriy Yastremskiy #:

は、すでにこのテーマに関するトピックがあります。を文字列に変換し、文字列の数を数える。本当は小数点の前の桁数をまず数えなければならないのですが。整数に変換することができます。しかも、文字列がぎこちない))))

整数変換は、そうですね、それしかないでしょう。私も思いついたのですが、掛け算の循環とか、10で割るとか、面倒くさそうなんですよね。まだよく考えていないんです。
 
MakarFX #:
//+----------------------------------------------------------------------------+
//| Модификация ордеров                           |
//+----------------------------------------------------------------------------+
void ModifyOrders(int otype)
{
 double
   BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0, 
   SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;

   int
   BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;

   double
   op = 0, lt = 0, order_lots = 0;

   int
   tk = 0, b = 0, s = 0;
   price = 0;tp = 0;

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == Magic)
            if(OrderSymbol() == Symbol() &&  OrderType() == otype)
              {
               op = NormalizeDouble(OrderOpenPrice(), Digits());
               lt = NormalizeDouble(OrderLots(), 2);
               tk = OrderTicket();
               if(otype == OP_BUY)
                 {
                  b++;
                  if(op > BuyPriceMax || BuyPriceMax == 0)
                    {
                     BuyPriceMax    = op;
                     BuyPriceMaxLot = lt;
                     BuyPriceMaxTic = tk;
                    }
                  if(op < BuyPriceMin || BuyPriceMin == 0)
                    {
                     BuyPriceMin    = op;
                     BuyPriceMinLot = lt;
                     BuyPriceMinTic = tk;
                    }
                 }
               
               if(otype == OP_SELL)
                 {
                  s++;
                  if(op > SelPriceMax || SelPriceMax == 0)
                    {
                     SelPriceMax    = op;
                     SelPriceMaxLot = lt;
                     SelPriceMaxTic = tk;
                    }
                  if(op < SelPriceMin || SelPriceMin == 0)
                    {
                     SelPriceMin    = op;
                     SelPriceMinLot = lt;
                     SelPriceMinTic = tk;
                    }
                 }
               if (otype == OP_BUY || otype == OP_SELL) 
                  {
                   price += OrderOpenPrice() * OrderLots();
                   order_lots += OrderLots();
                  }
              }
//*************************************************************//
double   AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;
      if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
         AwerageBuyPrice = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/
         (BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits());
      if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
         AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/ 
         (SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());
      if (Drawdown < DrawdownClosingMinMaxOrder) 
         avg_price = NormalizeDouble(price / order_lots, Digits);
//*************************************************************//
   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == Magic)
            if(OrderSymbol() == Symbol())
              {
               op  = NormalizeDouble(OrderOpenPrice(), Digits());
               tp = NormalizeDouble(OrderTakeProfit(), Digits());
               lt  = NormalizeDouble(OrderLots(), 2);
               tk  = OrderTicket();

                  if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
                    {
                     if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)
                        if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)
                           if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))
                              Print("OrderModify error #", GetLastError());

                     if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)
                        if(!OrderModify(tk, op, 0, 0, 0, clrRed))
                           Print("OrderModify error #", GetLastError());
                    }
                  if(otype == OP_SELL && s >= 2  && Drawdown >= DrawdownClosingMinMaxOrder)
                    {
                     if(tk == SelPriceMaxTic || tk == SelPriceMinTic)
                        if(Ask > AwerageSelPrice && tp != AwerageSelPrice)
                           if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))
                              Print("OrderModify error #", GetLastError());

                     if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)
                        if(!OrderModify(tk, op, 0, 0, 0, clrRed))
                           Print("OrderModify error #", GetLastError());
                    }
                 if (Drawdown < DrawdownClosingMinMaxOrder)    
                 if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);
                 if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits); 
                    {
                    if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
                      Print("Ордера успешно модифицированы!");
                      else Print("Ошибка модификации ордеров!");
                    } 
             } 
}
 
Valeriy Yastremskiy #:

私が知らないことがあるのでしょうか?また、他の測定器からテスターの時刻でバーデータを取得することはできず、現在の時刻で受信することになります。だから、4kaでは計算部分だけでも多通貨のテストができないんです。

いつも思うのですが、MT4のテスターは1つの楽器の環境を完全にエミュレートし、MT5は利用可能な環境を全てエミュレートしています。

それとも、そうではないのでしょうか?

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

  sd = (int)MarketInfo("EURJPY", MODE_DIGITS);

は、私のコードに含まれています...私は長い間、hex関数を使ってきましたが、以下は似たような関数です。

SymbolInfoInteger("EURJPY", SYMBOL_DIGITS);

はスタッキー0を出した。

だから、どこにバグがあるか考えてみてください...そして、mt4がサポートを拒否している以上、絶対に修正されないと思ってください...。

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

 

Alexey Viktorov #:

フライデー機能をずっと使っています

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