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

削除済み  
ANDREY:

皆さん、ごきげんよう。

mql5の勉強を始めました。まず、注文の開け方を研究することから始めました。注文を開くためのコードは、別のインクルードファイルに書かれていることは理解しました。私は今、このコードと取引用の最終的なバリアントをマスターしています。mql 4のオーダーオープンは、 mql5より ずっと簡単でシンプルなことに驚きました。

注文を開くためのコードが書かれたファイルがすでにあり、このコードを書く必要がないのかどうか、お聞きしたいのです。もしそのようなファイルがどこかにあれば、それをEAに接続して、必要な注文パラメータの値を設定するだけでよいのでしょうか?もし、そのようなファイルがあれば、どこで、どのように見つけるのか、また、その名前は何なのか。

ありがとうございます。

もし私が正しく理解していれば、#include <TradeTrade.mqh> となります。

ファイル:
ng4txc.PNG  116 kb
15vegf1.PNG  114 kb
 
SanAlex:

もし私が正しく理解していれば、#include <TradeTrade.mqh> となります。

貴重な情報をありがとうございました。

これらのファイルを探す必要はなく、コードの適切な場所に#include <TradeTrade.mqh> 書くだけで、このファイルが自動的に Expert Advisor に加わり、必要なときにアクセス されるという理解で正しいですか。

削除済み  
ANDREY:

貴重な情報をありがとうございました。

これらのファイルを探す必要はなく、コードの適切な場所に#include <TradeTrade.mqh> 書くだけで、このファイルが自動的にEAに加わり、EAが必要に応じてアクセス するという理解で正しいでしょうか。

そう!探さなくても、もうそこにあるんです。

コードファイル(Moving Averages.mq5またはMACD Sample.mq5)は、ターミナルから見ることができます。

 
SanAlex:

そう!探さなくても、もうそこにあるんです。

貴重な情報をありがとうございました。
私が正しく理解していれば、お送りいただいたファイルは「CLASS このファイルは注文を開始するためのものです」と呼ばれています。CLASSESはたくさんあって、それぞれ注文を閉じる、注文を修正する、何らかの情報を出力する、など目的があると思います。

Q: 全クラスとその詳細な説明の一覧はどこで見ることができますか?
また、お世話になります。

 
ANDREY:

貴重な情報をありがとうございました。
私の理解が正しければ、お送りいただいたファイルは「CLASS This file is for opening order」といいます。CLASSESはたくさんあって、それぞれ注文を閉じる、注文を修正する、何らかの情報を出力する、など特定の目的を持っていると思うのですが。

QUESTION 全クラスとその詳細な説明の一覧はどこにありますか?
また、お世話になります。

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Artyom Trishkin:

貴重な情報をありがとうございました。これから消化、つまり同化を始める......私の精神力の範囲内で。

削除済み  
ANDREY:

皆さん、ごきげんよう。

mql5の勉強を始めました。まず、注文の開け方を研究することから始めました。注文を開くためのコードは、別のインクルードファイルに書かれていることは理解しました。私は今、このコードと取引用の最終的なバリアントをマスターしています。mql 4のオーダーオープンは、 mql5より ずっと簡単でシンプルなことに驚きました。

注文を開くためのコードが書かれたファイルがすでにあり、このコードを書く必要がないのかどうか、お聞きしたいのです。もしそのようなファイルがどこかにあれば、それをEAに接続して、必要な注文パラメータの値を設定するだけでよいのでしょうか?もし、そのようなファイルがあれば、どこで、どのように見つけるか、その名前は何ですか。

ありがとうございます。

私の場合、EAの書き方が違うんです。自分の中で修正すればいいだけです。

-( なぜ、既に作られた車輪を再発明するのか )

----------------------------------------------------------------------

ここで、Indicatorsをピックアップします。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- prepare trade class to control positions if hedging mode is active
   ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
   ExtTrade.SetExpertMagicNumber(MA_MAGIC);
   ExtTrade.SetMarginMode();
   ExtTrade.SetTypeFillingBySymbol(Symbol());
//--- Moving Average indicator
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
   if(ExtHandle==INVALID_HANDLE)
     {
      printf("Error creating MA indicator");
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

を設定し、シグナルに応じてインジケータが正しく開くようにします。

//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 

   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;

     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=ORDER_TYPE_SELL;    // sell conditions
   else
     {
      if(rt[0].open<ma[0] && rt[0].close>ma[0])
         signal=ORDER_TYPE_BUY;  // buy conditions
     }
//--- additional checking
   if(signal!=WRONG_VALUE)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
     }
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

MQL5の 理解を深めるために、以下の簡単なコードをMQL4からMQL5 コードに翻訳していただけるとありがたいです。

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

int s1,SL,a;
double Lou=Bid,Hay,DL=0.0030;
void OnTick()
{
if (Bid < Lou)
{
Lou=Bid;
}
if (Bid > Hay)
Hay=Bid;
if (Bid - Lou > DL&& Lou!=0)
{
Lou=Bid;
Hay=Bid;
s1=1;
}
////=======================
if (Hay-Bid>0.0000)
if (s1==1)
{
for(int c=0; c<=500;c+=20)
{
a++;
{
SL=300+c;
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+SL*Point,Ask-SL/3*Point,"300",100);
Lou=Bid;
Hay=Bid;
}
}
a=0;
s1=0;
}
}
 

numPosOr= 4;

numStepCount= 1;

iK = (numPosOr - numStepCount) / numPosOr;

なぜこの計算ではiK=0になるのでしょうか?

 
Sysmart:

numPosOr= 4;

numStepCount= 1;

iK = (numPosOr - numStepCount) / numPosOr;

なぜこの計算ではiK=0になるのでしょうか?

コード全体を教えてください。