[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 126

 
agat8430:


然后告诉我如何编辑代码,使它看起来不被黑掉,如果你明白我的意思。这是我第一次上论坛,我得到了一个漂亮的答案。

"天才的人有天才的答案"。


让变量的名称 "可读"。
 
hoz:


不,不能不停顿。我只是贴出了其中的一个片段。这是我的Breakeven函数。

这条线清楚地表明,如果计算出的止损点等于你已经有的止损点,就不会有任何修改!对吗?那么,支票最初是在那里?但错误1不断出现,直到我在修改函数之前的开始中输入另一个条件。

这就是为什么....这就是我想了解的情况。我想我已经彻底描述了一切。

该功能用于所有的修改,如设置SL和TP,将头寸和订单移至低位,用尝试和错误检查进行拖网。

而开始只需要规定位置选择、条件和预防措施。这里有一个函数。

void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(5000); RefreshRates(); ModifyCnt++;
} } }
这是一个小的,但它是一个大的!
 
borilunad:

首先是对新人而言。

论坛导航器和对常见问题的回答。强烈推荐阅读!( 1 2 3 4 5 6 ) 51 18.02.2011 常见问题


谢谢你!一定会读到它。

世界上并非没有好人。

 
hoz:

给变量起一个 "可读 "的名字。


我想修改的不是所有未结订单,而只是开始和最后的T/P订单。帮助我。以下是代码

 /* Так и до бана не далеко */
 

大家好,我在一个单独的窗口中从一个已经形成的条形(即条形1)中获取指标值,我在条形0的第一个刻度上计算一次。 一切都迅速而正确地运行。但如果我关闭电脑,过一段时间再打开,指标继续正常工作,但它们在电脑关闭时的数值,只有一个空位。 但只要在TF之间来回切换--所有 "失踪 "的数值都会出现。指标是标准的--CCI、AO等。代码来自论坛,我把它们附在后面,请解释我哪里错了,有什么不懂的。



      Код №1
        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);
 
  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }
//--------------------------------------------------------------------  



        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}


      
          Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------             
   
    Last=New;
   }     
//----
   return(0);
  }
//+------------------------------------------------------------------+




       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

 
borilunad:

我有一个功能,用于所有的修改,如设置SL和TP,转移到B/S,拖曳头寸和订单的尝试和错误检查。

我只需要在开始时规定位置选择、条件和警告。这里有一个函数。

小而聪明


哇:)谢谢你。我得去看看!
 
agat8430:


我想修改的不是所有未结订单,而只是T/P上的开始和最后一个订单,我想为自己做一个EA。

实际上,我们应该 "甄别 "所有封闭的订单,当然不包括魔术师和符号。然后你应该选择最初和最后的订单进行修改。

OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - 这是最后一个订单。

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);- 这将是第一个订单。

这是一个有关于语言问题的分支,我已经回答了你的问题。机器人在这里没有参与重新设计。但是,如果你对语言有一点了解,你可以找到一切,将其纳入专家顾问中。希望这有帮助...

 
agat8430:


我希望它不修改所有未结订单,而只修改开始和最后的T/P订单。我希望它不修改所有未结订单,只修改最后的T/P订单。

为了抓到合适的物品,请使用金的 "有用功能",几乎在所有可能的场合都能使用!

https://www.mql5.com/ru/forum/131859

 
hoz:

一般来说,封闭的订单应该被 "屏蔽",当然,不算魔术师和符号。然后选择要修改的初始和最后一个订单。

OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);- 这是最后一个订单。

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);- 这将是第一个订单。

这是一个有关于语言问题的分支,我已经回答了你的问题。机器人在这里没有参与重新设计。但是,如果你对语言有一点了解,你可以找到一切,将其纳入专家顾问中。希望这有帮助...

对不起,这不起作用!不是第一个,也不是最后一个!
 
MK07:

我在一个单独的窗口中从一个已经形成的条形图(即从条形图#1)中获取指标值,我在条形图#0的第一个点上计算一次。一切都能快速而正确地工作。但如果我关闭计算机,过一段时间再打开,指标继续正常工作,但它们在计算机关闭时的数值不存在。我只需要在TF和TF之间来回切换,所有 "缺失 "的数值都会重新出现。

代码#1

        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);

  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }

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

        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }

}

         Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      

   { 

       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

使用顶部的SRC 按钮来粘贴代码!没有人会像这样四处打探。我已经为你粘贴了它。你也可以在你的帖子中这样做。