新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 836

 
Alexey Viktorov:

它说:"所有的权利,它说

没什么,这个主题是针对MT4的,所以你不要关注它。

好了,去忙吧,这里很无聊。

 

向大家问好。生活中的好运和工作中的利润。

我正在寻求帮助(出乎意料,嗯? :) )。

在Mql,我是一个Zerobom,2天 "在主题"。如果真正的EA迫使我使用自动交易,我正试图为我的平面EA编写(从不同部分实时收集)猫头鹰,当然我已经厌倦了它:)。我为了解决另一个问题已经努力了大约10个小时,但我还是没能解决这个问题。如果有人能提供建议或例子,我们将非常感激(口头和书面,最重要的是在洗澡时)。

一般来说...有一个TC,被我成功地使用了很长一段时间。在同一工具的交易条件下,可以多方向的市场订单(无挂单)。对降低的头寸可以在交易信号下进行补仓,前提是该头寸至少下降了X个点,有时会发生,并对补仓进行补充(在相同条件下(交易信号+缩减规模))。(目前)的问题是在建立额外的头寸,即......如何检查和返回多头头寸的损失值。按照https://www.mql5.com/ru/forum/117061 的 例子 我调整了代码,为每个位置分配了自己的Magik,但也仅此而已。如何准确选择一个已经坐下的位置并返回其损失值....:(.

"我的 "开仓交易代码。

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

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

{

如果(我的参赛条件)

{

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,Digits),5,SL,TP, "BUY",Magic,0,Blue);

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 (my entry conditions &&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),但如何获得它...。

请帮助我们,成为朋友。
Z.U.如果你建议,请记住,我仍然nubyara,不要太懒,给我一点更详细的,你知道,像如果。FOREST THERE,不要忘记指出方向<------ ||------>。

谢谢你的关注 :)。

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

没什么,这个主题是针对MT4的,所以你不要关注它。

好了,去忙吧,这里很无聊。

告诉我MT5的类似分支在哪里,我会在那里问...

 
Alexander Layzerevich:

告诉我MT5的类似主题在哪里,我在那里问...

问在这里。这里有两种语言。
 
Alexey Viktorov:

是否可以指定

突出显示的函数与函数声明没有区别。所以,在函数的输入参数中声明了该函数。

在MT4中,指标的函数调用 没有错误,并按需要工作(int handle=iEnvelopes(Symbol(), tf, period, method, shift, price, Deviation(kanal), buff);)我想在MT5中也可能是这样。

请告知如何正确操作?

 
Alexander Layzerevich:

在MT4中,指标的函数调用 没有错误,并按需要工作(int handle=iEnvelopes(Symbol(), tf, period, method, shift, price, Deviation(kanal), buff);)我想在MT5中也可能是这样。

你能告诉我如何正确操作吗?

在mql4中不可能获得信封数据
 
Artyom Trishkin:
所以不可能在mql4中获得信封数据

以下是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:
那是因为它是一个不同的代码,它将工作。

纠正了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)

调用一个存在的用户函数。虽然这种编程方法让我无法接受,但还是可以理解的。但如何描述那段代码中的错误,我就不知道了。