[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 413

 

好的。

是的,新酒吧

 
Neo777:

好的。

是的,新酒吧。

https://www.mql5.com/ru/articles/1494,这里有确定新酒吧 是否已经开始的方法。它是如何开始的 - 检查你的条件
 

下午好。大家好,请谁来帮助解决WindowScreenShot的功能。第3天,没有人回答()。编写了以下脚本(见附件文件)。

关于剧本的两句话。该脚本用于对客户终端窗口的当前图表进行截图。 在外部变量extern datetime Time_bar 中,指定了从该条开始到零条为止的时间(考虑到图表上的右缩进)。在行

int bar_number=iBarShift(NULL,0,Time_bar,true)

我们在外部变量extern datetime time_bar 中指定的酒吧的序列号被搜索到。该函数本身,在行

bool f=WindowScreenShot(name+".gif",1024,768,bar_number, Scale,View_graph)

现在的问题是...为了简单起见,让我们假设我们需要创建一个最后两根柱子的屏幕截图。然后,如果该行

int bar_number=iBarShift(NULL,0,Time_bar,true)

不做任何改变,结果将是以下截图


就是说,在截图中没有酒吧(尽管字符串

int bar_number=iBarShift(NULL,0,bar_time,true)

应按时间计算条数)

如果这一行以如下方式呈现

int bar_number=iBarShift(NULL,0,Time_bar,true)+2

你会得到我们想要的屏幕截图。

问题:为什么在这个字符串有以下形式的情况下

int bar_number=iBarShift(NULL,0,Time_bar,true)

截图是在上一行指定的右移2条的情况下拍摄的?

P.S.为了不在论坛上添乱,提前感谢您的回答。

附加的文件:
 
ilunga:
显示代码+指标中的输入参数是什么

我检查了20次,不检查20次我是不会写的,所有的参数都是正确的,和指标中的一样。问题可能出在其他地方,也许你已经遇到了这样的问题?
 

同事们!!!晚上好。

我发现了一个惊人的QQE指标,并决定在这个指标的基础上找到一个专家顾问....,但却找不到它。然而,在这个论坛上,我发现了用户POZITIV的一条信息。

他写了以下逻辑:"当红线向上穿过黄线时,应该开一个 买入的订单,当红线向上穿过黄线时--一个 卖出的订单"。

结果,他有一个半成品的专家顾问代码。

我计算了另一个逻辑:当黑体曲线从上到下穿过虚线时--必须卖出并关闭该手(买入),当红色黑体从下到上穿过虚线时。并在同一时刻立即打开另一手(买入),当相反的情况发生时,应该关闭(卖出).....,所以不断地打开一手,而每一次过线都是用来关闭一手,同时打开另一手。交叉点可能应该按照它们在收盘后的价值来考虑,即如果20分钟(收盘后),黑体的价值是51(有条件的),而虚线是50,21分钟(收盘后),黑体是50,虚线是51,那么你就必须卖出。没有SL或TP。

原则上说,这个逻辑很简单。没有箭头,没有警报和信息。只在自动模式下以纯粹的形式进行交易。

请帮助我将这段代码(如下)细化到这个逻辑。而且还可以调整周期(从1分钟到1天)和SF参数(平滑)。

第二天,我一直在努力理解代码并纠正它,但我不是一个程序员(((((((((((。


我真的希望得到您的帮助

//--- input parameters
extern double MaxRisk=1.0;
extern double FixLot = 0.01;
extern double Exponent=2.0;
extern int Magic=888;

// костыли

extern int TakeProfit=100;
extern int StopLoss=100;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
//----
   int Count=0;
   double b0,b1;
   int ticket;

// параметры индикатора
   int SF=5; // original 5
   int RSI_Period=14; // original 14
   double DARFACTOR=4.236; //original 4.236

//------------ Параметры из индикатора QQEA -----------------------
// Buffer0 -- красная жирная
   string Buffer0=iCustom(NULL,0,"QQEA",SF,RSI_Period,DARFACTOR,0,0);
// Buffer1 -- жёлтый пунктир
   string Buffer1=iCustom(NULL,0,"QQEA",SF,RSI_Period,DARFACTOR,1,0);

   b0=StrToDouble(Buffer0);
   b1=StrToDouble(Buffer1);


   double Lot=GetLot(MaxRisk);
// если лот <0 выводим сообщение об ошибке
   if(Lot==0)
     {
      Alert("Недостаточно средств!");
      return(0);
     }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(Lot!=0 && b0>b1) // если лот <> 0 и красная выше жёлтой
     {
      ticket=NewOrder(OP_BUY,Lot);
      if(ExistOrders(Symbol(),1,888,0)==true) // проверяем наличие ордера sell
        {
         CloseOrder();
        }
     }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(Lot!=0 && b0<b1) // если лот <> 0 и красная выше жёлтой
     {
      ticket=NewOrder(OP_SELL,Lot);
      if(ExistOrders(Symbol(),0,888,0)==true) // проверяем наличие ордера buy
        {
         CloseOrder();
        }
     }

   Comment("Red line: ",b0,"Yellow line: ",b1);
   return(0);
  }
//-------------------------------------------------------------
//расчёт лота

double GetLot(int Risk)
  {
   double Free=AccountFreeMargin();
   double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
   double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
   double Step=MarketInfo(Symbol(),MODE_LOTSTEP);
   double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
   if(Lot<Min_Lot) Lot=Min_Lot;
   if(Lot>Max_Lot) Lot=Max_Lot;
   if(Lot*One_Lot>Free) return(0.0);
   return(Lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ExistOrders(string sy="",int op=-1,int Magic=-1,datetime ot=0)
  {
   int i,k=OrdersTotal(),ty;

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ty=OrderType();
         if(ty>1 && ty<6)
           {
            if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op))
              {
               if(Magic<0 || OrderMagicNumber()==Magic)
                 {
                  if(ot<=OrderOpenTime()) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//открытие нового ордера
int NewOrder(int Cmd,double Lot)
  {
   double TP=0; //тейкпрофит
   double SL=0; //стоплосс
   double PR=0; //Цена
   while(!IsTradeAllowed()) Sleep(100);
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(Cmd==OP_BUY)
     {
      PR=Ask;
      if(TakeProfit>0) TP=Ask+TakeProfit*Point;
      if(StopLoss>0) SL=Ask-StopLoss*Point;
     }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(Cmd==OP_SELL)
     {
      PR=Bid;
      if(TakeProfit>0) TP=Bid-TakeProfit*Point;
      if(StopLoss>0) SL=Bid+StopLoss*Point;
     }
   if(GetOrdersCount(Magic,Cmd)>0)return(0);
   int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP," ",0,0,Green);
   if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());
   return(tic);
  }
// закрытие ордера
void CloseOrder()
  {
   double PR=0;
   while(!IsTradeAllowed()) Sleep(100);
   if(OrderType()==OP_BUY) PR=Bid;
   if(OrderType()==OP_SELL) PR=Ask;
   if(!OrderClose(OrderTicket(),OrderLots(),PR,3,Red))
      Print("Ошибка закрытия ордера: ",GetLastError());
   return;
  }
//+------------------------------------------------------------------+
// подсчет кол-ва открытых позиций
int GetOrdersCount(int MagicNumber,int Type)
  {
   int count=0;

   for(int i=0; i<OrdersTotal(); i++)
     {
      // already closed
      if(OrderSelect(i,SELECT_BY_POS)==false) continue;
      // not current symbol
      if(OrderSymbol()!=Symbol()) continue;
      // order was opened in another way
      if(OrderMagicNumber()!=MagicNumber) continue;

      if(OrderType()==Type)
        {
         count++;
        }
     }

   return(count);
  }
//-------------------------------------------------------
 
sss2019:

好吧,我自己把所有东西都检查了20遍,不检查20遍我就不写了,所有的参数都是正确的,就像指标里的一样。问题可能出在其他地方,也许有人遇到过这样的问题?
除了在iCustom中输入错误的参数外,什么都没有,不能。搜索一下吧。
我花了一个晚上试图解决这个问题。我在将指标 中的extern转移到EA中时 混淆了参数顺序。我几乎要疯了,参数的顺序是一样的:))
 
granit77:
除了iCustom中的参数输入不正确外,什么都没有,不可能。查一查吧。
我自己前几天花了一个晚上的时间与它斗争。在将外部参数从指标转移到专家顾问时,我混淆了参数的顺序。我几乎要疯了,参数的顺序是一样的:))

iCustom(Symbol(),0,"RMRCS_entry-point"," ",5,6,7,62,-62,57,-57,54,-54,0.7,1.1,1.07," ",1,9,6,1,34,6,0,4,89,1,3,3.0,2.0,0.5,3.0," ",6,6,70,30,0.0,6,3.0," ",1,21,1,45,89,1,35,89,1,9," ",4,2,5,1," ",49,-49,0,0,0,0,0,0,0,0," ",0,34,200,150,1,100," ",1,3,1,1,2," ",1.4,3.7,0,1);


而这里是参数

extern string REI_str = "";
extern int REI1_Per=5; 
extern int REI2_Per=6;     
extern int REI3_Per=7;     
extern int REI1_up=62;    
extern int REI1_dn=-62;    
extern int REI2_up=57;     
extern int REI2_dn=-57;            
extern int REI3_up=54;     
extern int REI3_dn=-54;            
extern double REI1_ct=0.7;  
extern double REI2_ct=1.1;  
extern double REI3_ct=1.07;
extern string MACD_str = "";
extern int MACD_FastMA_Meth=1;   
extern int MACD_FastMA_Per=9;    
extern int MACD_FastMA_Price=6; 
extern int MACD_SlowMA_Meth=1;   
extern int MACD_SlowMA_Per=34; 
extern int MACD_SlowMA_Price=6; 
extern int MACD_SL_Meth=0;      
extern int MACD_SL_Per=4;       
extern int MACD_Diap_Per=89;    
extern int MACD_Slope_Meth=1;   
extern int MACD_Slope_Per=3;  
extern double MACD_ct_1 = 3.0; 
extern double MACD_ct_2 = 2.0;  
extern double MACD_ct_3 = 0.5;  
extern double MACD_ct_4 = 3.0;  
extern string RSI_str = "";
extern int RSI_Per = 6;     
extern int RSI_Price = 6;  
extern int RSI_up = 70;      
extern int RSI_dn = 30;     
extern double RSI_ct1 = 0.0; 
extern int RSI_ct2 = 6;      
extern double RSI_ct3 = 3.0;
extern string CHO_str = "";
extern int  CHO_FastMA_Meth=1;      
extern int  CHO_FastMA_Per=21;      
extern int  CHO_SlowMA_Meth=1;      
extern int  CHO_SlowMA_Per=45;      
extern int  CHO_DiapVal_Per=89;     
extern int  CHO_MADiapVal_Meth=1;   
extern int  CHO_MADiapVal_Per=35;    
extern int  CHO_SlopeDiapVal_Per=89;  
extern int  CHO_MASlope_Meth=1;      
extern int  CHO_MASlope_Per=9;       
extern string Stoch_str = "";
extern int Stoch_KPer=4;       
extern int Stoch_DPer=2;        
extern int Stoch_Slow=5;        
extern int Stoch_SL_MA_Meth=1; 
extern string EntryLevel_str = "";
extern int REI_SvS_up = 49;  
extern int REI_SvS_dn = -49; 
extern int MACD_SvS_up = 0; 
extern int MACD_SvS_dn = 0;  
extern int RSI_SvS_up = 0;  
extern int RSI_SvS_dn = 0; 
extern int CHO_SvS_up = 0;  
extern int CHO_SvS_dn = 0;  
extern int STO_SvS_up = 0; 
extern int STO_SvS_dn = 0;  
extern string EntryOther_str = "";
extern int MALgthBar_Meth=0;
extern int MALgthBar_Per=34;
extern int MAXLgthBar = 200;
extern int TtS_MinABS = 150; 
extern int Shift_Points = 1; 
extern int Start_Calc = 100;   
extern string EntryCondition = "";
extern bool Ban_InvEntry = true;    
extern int InvEntry_Bars = 3;        
extern bool Ban_TtS_Decline=true;   
extern bool Ban_Entry_Series = true; 
extern int MAX_Entry_Series=2;      
extern string Gen_str = ""; 
extern double DiapBar_CtSl = 1.4;
extern double TakeProf_CtSl = 3.7;
 
sss2019:
你能告诉我,通过iCustom连接时,非标准指标的参数数量是否有限制?

我有 有一个指标有大约8个参数 我正确地输入了所有的参数,我检查了好几次,但在编译时仍然出现错误')'。- 错误的参数计数 D:\InstaTrader\experts\Expert_2.mq4 (11, 280)

我想说 "大约80"
 

把一些很少使用的参数中的extern去掉,就不会有什么混乱了。

注意我的问题。

为什么烛台下会出现物体,其原因是什么?

你能提醒我如何使一个复选框变成价格,对象属性 是什么。

 
PapaYozh:

我想说 "大约80"。

我说正好是80。而sss2019的参数一切正常。但这个有这么多参数的野生指标是什么呢?