エラー、バグ、質問 - ページ 2100

 
Slava:

同期コマンドと非同期コマンドの違いを感じ取っていただけたでしょうか。

非同期機能の一覧を提供していただけませんか。

私の理解が正しければ、ObjectとChartの機能(他は?)はすべて非同期です。では、なぜ ChartGet が ChartXY よりも高速に動作するのかがよくわからないのですが?

 
Slava:

同期コマンドと非同期コマンドの違いを感じ取っていただけたでしょうか。

ああ...
しかし、観察によると、これらの機能は非同期性がかなり高いことが分かっています。:)
では、開発者向けに質問を変えます。これらの非同期関数を同期関数に変更する機会(または希望)はありますか?
 
fxsaber:

非同期機能の一覧を提供していただけませんか。

私の理解が正しければ、ObjectとChartの関数(他は?)はすべて非同期です。では、なぜ ChartGet が ChartXY よりも高速に動作するのか、その理由はよくわかりません。

私の「高速」アルゴリズムのポイントは、チャート関数を呼び出さない機会を計算し、それを使わずに済ませることです。そして、この例でチャートを「掴んで」左右に動かし始めると、イベントの発生によりチャート機能が適用され始めるため、すべての速度が失われます。
CHARTEVENT_CHART_CHANGE
 

こんにちは、https://www.mql5.com/ru/articles/100 から MQL5 の勉強を始めました。コードを起動したところ、エラー4756が発生しました。 ドキュメントを見ても、エラーは改善されませんでした。まずは、簡単な機能(Alert/Print...)から始めてみようと思います。最も重要な機能のひとつがOrderSendです。OrderSendの使い方について、フォーラム/ドキュメントを検索し始めました。この記事https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions、 買いポジションを開くためのコードが見つかりました。エラー4756とretcode10030が出ました。10030 - それはOrderSendプロパティであることは理解しましたが、このプロパティがどのように使用されるべきか(他の人のコードを見ました)、そして主に何のために使用されるのかが理解できていません。その後、https://www.mql5.com/ru/docs/trading/ordersend を開き、 コードをコピーして起動したところ、すべて問題なく、動作しました。
しかし、なぜエラー4756が出るのか、どうすれば10030と同じように解消できるのか、まだ理解できていません。

の間のコードを見てみました。

void OnTick(){
      //--- объявление и инициализация запроса и результата
      MqlTradeRequest request={0};
      MqlTradeResult  result={0};
      //--- параметры запроса
      request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции
      request.symbol   =Symbol();                              // символ
      request.volume   =0.1;                                   // объем в 0.1 лот
      request.type     =ORDER_TYPE_BUY;                        // тип ордера
      request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
      request.deviation=5;                                     // допустимое отклонение от цены
      request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера
      //--- отправка запроса
      if(!OrderSend(request,result))
         PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки
         Alert(GetLastError());
      //--- информация об операции
      PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
   }

とこちらも

uint SendRandomPendingOrder(long const magic_number) 
  { 
//--- готовим запрос 
   MqlTradeRequest request={0}; 
   request.action=TRADE_ACTION_PENDING;         // установка отложенного ордера 
   request.magic=magic_number;                  // ORDER_MAGIC 
   request.symbol=_Symbol;                      // инструмент 
   request.volume=0.1;                          // объем в 0.1 лот 
   request.sl=0;                                // Stop Loss не указан 
   request.tp=0;                                // Take Profit не указан    
//--- сформируем тип ордера 
   request.type=GetRandomType();                // тип ордера 
//---сформируем цену для отложенного ордера 
   request.price=GetRandomPrice(request.type);  // цена для открытия 
//--- отправим торговый приказ 
   MqlTradeResult result={0}; 
   OrderSend(request,result); 
//--- выведем в лог ответ сервера   
   Print(__FUNCTION__,":",result.comment); 
   if(result.retcode==10016) Print(result.bid,result.ask,result.price); 
//--- вернем код ответа торгового сервера 
   return result.retcode; 
  } 

私にはほとんど同じに見えますが、これらのエラーはどこに出ているのでしょうか(4756と10030)。指をさして説明してください。

 
damirqa:

こんにちは!https://www.mql5.com/ru/articles/100 からMQL5の勉強を始めました。コードを起動したところ、エラー4756が発生しました。そこで、一番簡単なもの(Alert/Print...)から始めてみようと思いました。最も重要な機能のひとつがOrderSendです。OrderSendの使い方について、フォーラム/ドキュメントを検索し始めました。この記事https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions、 買いポジションを開くためのコードが見つかりました。エラー4756とretcode10030が出ました。10030 - それはOrderSendプロパティであることは理解しましたが、このプロパティがどのように使用されるべきか(他の人のコードを見ました)、そして主に何のために使用されるのかが理解できていません。その後、https://www.mql5.com/ru/docs/trading/ordersend を開き、 コードをコピーして起動したところ、すべて問題なく、動作しました。
しかし、なぜエラー4756が出るのか、どうすれば10030と同じように解消できるのか、まだ理解できていません。

の間のコードを見てみました。

とこちらも

私にはほとんど同じに見えますが、これらのエラーはどこに出ているのでしょうか(4756と10030)。指をさして説明してください


CTradeのトレードクラスを使用することで、エラーを可能な限り少なくすることができます。

買いを開くための取引注文を送信する例。

//+------------------------------------------------------------------+
//|                                                     Open Buy.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   m_trade.Buy(1.0); // open Buy position, volume 1.0 lot
  }
//+------------------------------------------------------------------+
ファイル:
Open_Buy.mq5  2 kb
 
Vladimir Karputov:

CTradeのトレードクラスを使って、できるだけミスをしないようにしましょう。

買い注文を送信する例。


CTrade- それは普遍的なクラスですか?つまり、他のどんなコードも置き換えることができるのですか?

 
damirqa:

CTrade - それは普遍的なクラスですか?では、他のコードに置き換えることは可能なのでしょうか?


CTradeは標準ライブラリトレードクラスCTradeで 端末に付属しています。

 
damirqa:

私にはほとんど同じに見えますが、これらのエラーはどこに出ているのでしょうか(4756と10030)。指をさして説明してください

https://www.mql5.com/ru/search#!keyword=Unsupported%20filling%20mode

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

kodobaseの例


MEにコードを取り込むにはいくつかの方法があります。

  1. MEから直接読み込む。これは人によっては便利かもしれませんね。でも、私にとっては、まったく違う。
  2. ファイルをディスクにダウンロードし、MQL5フォルダにコピーしてMEで開いてください。私がよく使うのは、この不便な方法です。
  3. 表示」ボタンを押し、コードをコピー(コピー - CTRL+A、CTRL+C)し、MEにペースト(CTRL+V)します。最も速く、最も便利な方法です。
スクリーンショットのように「コピー」ボタンを作るのは合理的でしょうか?

 

MT5テスターで、「入力フィールド」オブジェクトのOBJ_EDITで値の編集が できない。そのように設計されているのか、それともバグなのか?

ターミナルとMT4テスターでは編集可能ですが、MT5テスターでは編集できず、オブジェクト作成 時にプログラムで入力した値が消えてしまいます。