記事"MQL4からMQL5への移植"についてのディスカッション - ページ 8

 

以下の形式のMQL4文字列はどのように聞こえるでしょうか?

spread_ =MarketInfo(Symbol(), MODE_SPREAD)*Point;

MQL5ではどうなりますか?

よろしくお願いします!

 
piv_:

以下の形式のMQL4文字列はどのように聞こえるでしょうか?

spread_ =MarketInfo(Symbol(), MODE_SPREAD)*Point;

MQL5ではどうなりますか?

よろしくお願いします!

大体こんな感じです:

spread=SymbolInfoInteger(symbol,SYMBOL_SPREAD)*Point();
 
iStdOnArray()がない :)MT5は、基本的な統計を持たない最初の自動取引プラットフォームであるようだ :)数日前からMQL5で何かをしようとしているが、今までは金融工学倉庫全体を作成するような様々な問題しかなかった。
 
High、Low、Ask、Cose、Open...のような定義済みの変数を 置き換える方法がまだ理解できない。Low、Ask、Cose、Open...。どの特殊関数で宣言すればいいのでしょうか?
削除済み  
buh400:
High、Low、Ask、Cose、Open...のような定義済みの変数を 置き換える方法がまだ理解できない。Low、Ask、Cose、Open...。どの特殊関数で宣言すればいいのでしょうか?
High、Low、Open、Close - CopyHigh()、CopyLow()など。ビッドとアスク - SymbolInfoDouble() を通して。- これはデータ検索である。そして、データを受け取る配列(Copy...関数用)と、ビッド値とアスク値の変数を宣言する必要があります。これらは、データを取得したい関数内で宣言してください(グローバル・レベルで宣言すべきではありません。)例えば、ティックごとにデータを受け取りたい場合は、OnTick()関数で宣言します。初期化時ならOnInit()など。ドキュメントを読んでください。
 
私はそれを読んで、mcl5を学ぶ熱意はありません!ブローカーはMT4を手放さないと思います!はい、そして私の生涯のために、それは十分でしょう!ただ、mcl4を複雑にしないでください!お願いします!
 
セクション17のコードをコンパイルするとき、つまり定数を宣言するところで、「'MODE_MAIN' - 列挙子識別子はすでに定義されています」というエラーが発生します。

 
buh400:
セクション17のコードをコンパイルするときに
オンライン版ヘルプ -https://docs.mql4.com/ru からリンクを張ってください。
Справочник MQL4 - Документация на MQL4
  • docs.mql4.com
Справочник MQL4 - Документация на MQL4
 
Rashid Umarov:
オンライン版のヘルプからリンクを貼ってください -https://docs.mql4.com/ru

このコードはMQL4からMQL5への移行という記事からのものです。

17. Технические индикаторы
Получение значений технических индикаторов в своих экспертах очень подробно рассмотрено в одноимённой статье. В этом справочнике представлен краткий способ обращения к стандартным индикаторам, которого вполне достаточно для получения результата расчёта в одной точке. Для реализации такого механизма, нам потребуется вспомогательная функция:

double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
и объявим следующие константы:
ENUM_MA_METHOD MethodMigrate(int method)
  {
   switch(method)
     {
      case 0: return(MODE_SMA);
      case 1: return(MODE_EMA);
      case 2: return(MODE_SMMA);
      case 3: return(MODE_LWMA);
      default: return(MODE_SMA);
     }
  }
ENUM_APPLIED_PRICE PriceMigrate(int price)
  {
   switch(price)
     {
      case 1: return(PRICE_CLOSE);
      case 2: return(PRICE_OPEN);
      case 3: return(PRICE_HIGH);
      case 4: return(PRICE_LOW);
      case 5: return(PRICE_MEDIAN);
      case 6: return(PRICE_TYPICAL);
      case 7: return(PRICE_WEIGHTED);
      default: return(PRICE_CLOSE);
     }
  }
ENUM_STO_PRICE StoFieldMigrate(int field)
  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }
//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
 
この問題はすでに提起されていることに気づいたので、別の記事を読む必要がある:)私の投稿は削除できます