任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 747

 
TarasBY:

2) 在同一时间内,不能有上分形和下分形出现在同一个柱子上,请分别检查

属于程序员的白痴范畴。

所以这些名言只适用于白痴。


 
TarasBY:

2) 在同一时间内,不能有上分形和下分形出现在同一个柱子上,请分别检查

属于程序员白痴的范畴。


两个分形都可以在同一个条形上
 
Vinin:
两个分形都可以在同一个条形上
他的意思是几分钟,但忘记了几个月
 
你好

在代码中,有以下一行

 if (G_time_344 == Time[0]) return (0);
据我所知,它负责的是EA推迟重新计算,直到出现一个新的柱子。直到零条开放时间 改变,重新计算就会停止。

相应地,如果我在分钟上打开一个EA,它将随着每一个新的分钟被重新计算。而如果我在H4上打开它,它将每4小时重新计算一次。

如何正确地写这一行,使EA不采用当前条形的开盘时间,即终端打开的条形,而是采用我将在设置中指定的条形?也就是说,我把EA放在H4上,比如说,它将每5分钟重新计算一次,因为我已经这样设置了。或每分钟。


 
_new-rena:
他的意思是几分钟,但忘记了几个月

分和月之间有什么区别?


 
evillive:
它在修改日志中抱怨的是什么?"愚蠢地打开新的挂单",因为没有限制,但有一个OrderSend。
没有错误,只有黄色的三角形。
 
AlexeyVik:

分和月之间有什么区别?

我同意,在M1上也有不错的时刻。但在月球上,每个酒吧都是这样的。
 
没有进一步的问题,我自己已经解决了。
 
TarasBY:

1)任何策略都必须由同时开仓的订单数量来定义。因此,在打开下一个订单之前,我们应该检查有多少个已经打开。

2)在一个柱子上,不能同时出现上分形和下分形,分别将该检查列为

属于程序员的白痴范畴。

3)在编写返回缓冲区指标值的条件之前,你需要确切地知道哪个值是它的 "空"?你检查过它是0吗?

4)结构。

虽然它能起作用(在大多数情况下),但却是不自然的,因为它是开发商的 "自由意志 "想法,对交易者来说是没有信息的。一个替代方案--对一个新酒吧的追踪。

5)你必须从基础做起,因为这。

表明你根本不明白你在写什么。

了解的最好方法是研究其他人的代码是如何工作的,并为你自己的目的修改它们。好运。

他是按照写好的内容逐点显示的。 他没有修改它们,这一点你没有说过一个字。 这里是完整的代码。
//+------------------------------------------------------------------+
//|                                                   Strategy 3.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright ""
#property link      ""
#include <Library1.mqh>
extern int Magic=111;
extern int TP=20;
extern int SL=30;
extern int Trall_dist=10;
extern int Shag=10;
extern bool Isp_shag=false;
extern bool Isp_bezubitok=false;
extern double Lot=0.1;
double SS=0,BS=0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double tp,sl;
  if(Digits==3||Digits==5) {tp=TP*10*Point;sl=SL*10*Point;} // условие для пятизнака
  else if(Digits==2||Digits==4) {tp=TP*Point;sl=SL*Point;} // условие для четырехзнака
  double Up=iFractals(Symbol(),0,MODE_UPPER,3);       //верхний фрактал,формируется на третьей свече
  double Down=iFractals(Symbol(),0,MODE_LOWER,3);     //нижний фрактал,формируется на третьей свече                                                   
//----
  if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        {
        for (int pos=0;pos==OrdersTotal();pos++)
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        }
     
       }   
   else if(Up==0&&Down>0&&Volume[0]<2)
    {
    if((Bid-Low[3]-5*Point)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL))
    OrderSend(Symbol(),OP_SELLSTOP,Lot,Low[3]-5*Point,20,Low[3]+sl,Low[3]-tp,NULL,Magic,0,Red);
    else {SS=Low[3]-5*Point; Print("Виртуальный SS:",SS);}
         {
         for (pos=1;pos==OrdersTotal();pos++)
             {
             OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
             if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_SELLSTOP)
               {
               OrderModify(OrderTicket(),Down-5*Point,Low[3]+sl,Low[3]-tp,0,CLR_NONE);
               } 
             }
         }
    
            
    if(OrdersTotal()>0)
    Trailing_stop(Magic,Symbol(),Trall_dist,Shag,Isp_shag,Isp_bezubitok);
    return(0);
  }}
//+------------------------------------------------------------------+
我试图按照我的阅读、观察和理解来写。 你的批评让我想起了MQL4手册--只有当有人向我解释时才能理解。
 
if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        { // К чему относится эта скобка???
        for (int pos=0;pos==OrdersTotal();pos++)
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
       } // это пара к той...
      }
     


而这个代码

if(Digits==3||Digits==5) {tp=TP*10*Point;sl=SL*10*Point;} // условие для пятизнака
  else if(Digits==2||Digits==4) {tp=TP*Point;sl=SL*Point;} // условие для четырехзнака

最好写在init()中,最好不要像这样写

double   point; // на уровне глобальных переменных

int OnInit()
{
   point = Digits%2 == 0 ? _Point : _Point * 10;
}

然后在start()中

tp = High[3]+TP*point;