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

 
Alexey Viktorov:

と書いてありますが、大丈夫でしょうか?

MT4用のスレッドだから気にしない

よし、忙しくなるぞ。ここは退屈だ。

 

皆様にご挨拶申し上げます。人生における幸運と仕事における利益をもたらす。

とお願いしているところです(意外とね:)。

Mqlでは、私はzerobom、2日間 "件名に "です。リアルEAで自動売買を強制されると、フラットEAのためにowlを書こうとして(違うところからリアルタイムで収集)、当然ながら疲れてしまう :) 。もう10時間くらい別の問題を解決しようとしているんだけど、まだたどり着けないんだ。どなたかアドバイスや例を挙げてくださる方がいらっしゃいましたら、大変感謝いたします(口頭でも書面でも、そして何よりシャワーを浴びることが重要です)。

一般的には...TCがありますが、これは私が長い間うまく使っていたものです。同一商品の取引条件において、多方向の成行注文が可能です(保留は不可)。下げられた位置に位置が少なくともXピップによって下落していることを提供し、取引信号で満たされるかもしれない、時には起こると充填(同じ条件下(取引信号+ドローダウンサイズ))に追加を行います。現在の)問題は、追加でポジションを建てる際、つまり・・・ロングポジションの損切りの値をどのように確認し、返すかです。https://www.mql5.com/ru/forum/117061 の 例にならって、各ポジションにそれぞれのマジックを割り当てるようにコードをいじりましたが、それだけです。座っているポジションを正確に選択し、その損失値を返すには......。:(.

トレードを開始するための "私の "コード。

//-----------------

if (NumberOfPositions(Symbol(),OP_BUY, Magic)<1)

{

if (私の参加条件)

{

if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;

if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;

ticket=OrderSend(Symbol()、OP_BUY、LOT、NormalizeDouble(Ask、桁数)、5、SL、TP、「BUY」、マジック、0、青)。

if(ticket < 0) { Print("Error while opening BUY order #", GetLastError());}; }.

}}

if(NumberOfPositions(Symbol(),OP_SELL,Magic)<1)の場合。

{

にすると

{

if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;

if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;

ticket=OrderSend(Symbol(,OP_SELL,LOT,NormalizeDouble(Bid,Digits),5,SL,TP, "SELL",Magic,0,Red);

if(ticket < 0) { Print("Error opening SELL order #", GetLastError());}; }.

}}

//---------------

追加注文は、以下のコードで開設する予定です。

//---------------

if (NumberOfPositions(Symbol(),OP_BUY, Magic)==1 && NumberOfPositions(Symbol(),OP_BUY, Magic_2)<1)

{

if (私のエントリー条件 &&GetProfitOpenPosInPoint(Symbol(),OP_BUY,Magic)>= LEVEL_1)

{

ticket=OrderSend(Symbol()、OP_BUY、LOT、NormalizeDouble(Ask、Digits),5,SL,TP、 "Extra Buy",Magic_2,0,Blue) です。

if(ticket < 0) { Print("Error opening BUY order #", GetLastError()); }.

} }

//---------------

そして、そこで行き詰ってしまったのです :) 。GetProfitOpenPosInPoint(Symbol(),OP_BUY,Magic) の代わりに使用するものです。Drawdown_level(Symbol(),OP_BUY,Magic)を使えばいいと思うのですが、どうやって取得するのでしょうか...。

ヘルプPLEASE、友達になる。
Z.U.あなたが助言する場合、私はまだ私にもう少し詳細を送信するためにあまりにも怠惰ではないことをnubyaraしていることを心に留めておいてください、あなたが知っているように、もし。FOREST THEREは、<------ || ------>の方向を指し示すことを忘れないでください。

ご清聴ありがとうございました :)

код----доливаем по тренду
код----доливаем по тренду
  • 2009.05.07
  • www.mql5.com
Я пытался написать советник с открытием дополнительных лотов по тренду. Суть заключается вот в чем...
 
Igor Makanu:

別に、このスレはMT4用だから、気にすることはないでしょう。

よし、忙しくなるぞ。ここは退屈だ。

MT5用の同様のブランチがどこにあるか教えてください、そこで聞いてみます・・・。

 
Alexander Layzerevich:

MT5の同様のスレッドがどこにあるか教えてください、そこで聞きますので・・・。

ここで聞いてください。ここで、両言語の場合。
 
Alexey Viktorov:

を指定しても良いのでしょうか?

強調表示された関数は、関数宣言と何ら変わりはありません。関数の入力パラメータで宣言されていることが判明した。

MT4では、Indicatorからの関数呼び出しは エラーなしで、必要に応じて動作します(int handle=iEnvelopes(Symbol(), tf, period, method, shift, price, Deviation(kanal), buff);)MT5でも同じかもしれないと思いました。

正しい方法を教えてください。

 
Alexander Layzerevich:

MT4では、Indicatorからの関数呼び出しは エラーなしで、必要に応じて動作します(int handle=iEnvelopes(Symbol(), tf, period, method, shift, price, Deviation(kanal), buff);)MT5でも同じかもしれないと思いました。

正しい方法を教えてください。

mql4でEnvelopesのデータを取得することができない
 
Artyom Trishkin:
そのため、mql4でEnvelopesのデータを取得することは不可能です。

以下は、MT4からのコードです。

//-------------------------------------------------------------------
extern string Parametrs_Indicator       = "Настройки Индикатора";// Настройки Индикатора

extern ENUM_TIME_FRAMES   TimeFrames     = 5;                     // Временной период
//-------------------------------------------------------------------
       int                Ma_Period     = 120;                   // Период
       ENUM_MA_METHOD     Ma_Method     = 2;                     // Mетод усреднения
       int                Ma_Shift      = 0;                     // Cдвиг средней
       ENUM_APPLIED_PRICE Applied_Price = 0;                     // Tип цены
//************************************************************************************************/

int OnInit()
{
double Signal_Buy = iEnvelopes(Symbol(), TimeFrames, Ma_Period, Ma_Method, Ma_Shift, Applied_Price, Deviation(TimeFrames, Kanal), 2, 0); // Сигнал на Покупку
}
//+------------------------------------------------------------------+
double Deviation(int Time_Frames, int _Kanal)
{

int Simbol = SymbolMagic();
//-------------------------
if (Time_Frames == 0) Time_Frames = Period();

if (Time_Frames == 1)
   {
   if (_Kanal == 1)
      {
      switch (Simbol)
         {
         ...
         }
      }
   }
}
//+------------------------------------------------------------------+

すべて完璧に動作します。MT5でも同じようにしたい

 
Alexander Layzerevich:

以下は、MT4からのコードです。

すべて完璧に動作します。MT5でも同じようにしたい

そりゃあ、違うコードだから動くだろうけどさ。
 
Artyom Trishkin:
そりゃあ、違うコードだから動くだろうけどさ。

Indicatorにデータを送信するMT5のコードを修正しました。

//-------------------------------------------------------------------
extern string Parametrs_Indicator       = "Настройки Индикатора";// Настройки Индикатора

extern ENUM_TIMEFRAMES    TimeFrames    = PERIOD_M5;             // Временной период
//-------------------------------------------------------------------
       int                Ma_Period     = 120;                   // Период
       ENUM_MA_METHOD     Ma_Method     = MODE_SMMA;             // Mетод усреднения
       int                Ma_Shift      = 0;                     // Cдвиг средней
       ENUM_APPLIED_PRICE Applied_Price = PRICE_CLOSE;           // Tип цены
//************************************************************************************************/
void OnTick()
{
double Signal_Buy = (int)Envelopes(Symbol(), TimeFrames, Ma_Period, Ma_Shift, Ma_Method, Applied_Price, 2,  Deviation(1)); // Сигнал на Покупку
}
//************************************************************************************************/
double Envelopes(string symb, ENUM_TIMEFRAMES tf, int period, int shift, int method, int price, int buff, double Deviation(int kanal))
{
  double buf[1];
  int handle=iEnvelopes(Symbol(), tf, period, shift, method, price, Deviation(kanal));
   if(handle<0)
   {
    Print("Failed to create handle ATR, Error: ",GetLastError());
    return(WRONG_VALUE);
   } else
   {
    if(CopyBuffer(handle,buff,0,1,buf)<0)
    {
     Print("Failed to copy data from the indicator ATR, Error: ",GetLastError());
     return(WRONG_VALUE);
    }
   }
   return(buf[0]);
}
//************************************************************************************************/

しかし、エラーは同じです。

 
Alexander Layzerevich:

以下は、MT4からのコードです。

//-------------------------------------------------------------------
extern string Parametrs_Indicator       = "Настройки Индикатора";// Настройки Индикатора

extern ENUM_TIME_FRAMES   TimeFrames     = 5;                     // Временной период
//-------------------------------------------------------------------
       int                Ma_Period     = 120;                   // Период
       ENUM_MA_METHOD     Ma_Method     = 2;                     // Mетод усреднения
       int                Ma_Shift      = 0;                     // Cдвиг средней
       ENUM_APPLIED_PRICE Applied_Price = 0;                     // Tип цены
//************************************************************************************************/

int OnInit()
{
double Signal_Buy = iEnvelopes(Symbol(), TimeFrames, Ma_Period, Ma_Method, Ma_Shift, Applied_Price, Deviation(TimeFrames, Kanal), 2, 0); // Сигнал на Покупку
}
//+------------------------------------------------------------------+
double Deviation(int Time_Frames, int _Kanal)
{

int Simbol = SymbolMagic();
//-------------------------
if (Time_Frames == 0) Time_Frames = Period();

if (Time_Frames == 1)
   {
   if (_Kanal == 1)
      {
      switch (Simbol)
         {
         ...
         }
      }
   }
}
//+------------------------------------------------------------------+

すべて完璧に動作します。MT5でも同じようにしたい

手元を見る。

前回の投稿では、あなたのコードでこれが強調されています。

double Deviation(int Time_Frames, int _Kanal)

で、これのコードで、引用されたメッセージは関数宣言です。も強調されています。

そして、この

Deviation(TimeFrames, Kanal)

存在するユーザー関数を呼び出す。このプログラミング方法は、私にとっては受け入れがたいものですが、それでも理解することはできます。しかし、そのコードのエラーをどう表現すればいいのか、途方に暮れています。