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

 
lottamer:


这个修改器不是我写的。

我从图书馆准备好了。

这就是为什么我也不能清洗它。最主要的是,它是100%的工作。

但为什么里面的参数没有被优化--这就是问题所在.....。

没有基本的错误!

其余的代码都能工作。

在算法上设置任何条件。

- 购买

-修改

- 关闭

---------------------------

并尝试优化订单修改中的参数--即停止并采取

好吧,只要它能工作,甚至如果它是100%,那么就没有问题。我们为什么要在其中寻找错误呢?- 这意味着它不是问题所在!- 而如果你正在寻找一个错误,这意味着你不是100%的确定。所以,问题不在代码,而在你的评价标准,因为它们也让你困惑。(你先开始的:)))我只是给它加点油...)

这里所介绍的--我甚至不知道如何称呼它......。可能是--一个单一的动作被膨胀到一个函数的大小。在大多数程序中,这种应用并不理想--在一个区块中的修改与其他东西一起进行。- 虽然。可能有不同的适用条件。但我的观点是,这里没有什么可以优化的......因为它只是一个行动。

 
lottamer:

看。

如果我现在把所有的东西都还回去,即删除外部的STOP和TAKE参数,在函数里面写上数字来代替它们,那么这个EA已经周而复始地运行了10周,并显示出清晰的结果。

而如果我手动改变停止和收回的参数--一切都将工作,并给出稍微不同的结果(当然)。

而现在,为什么当我把这些参数放在修改器之外时--优化器认为它们不重要?

这正是我想告诉你的--问题很可能在其他地方,而不是在这个函数中。所以你有别的东西混在一起。也许这些SL和TP被应用在其他一些地方,以某种方式重合或其他。我们只能猜测。- 这就是为什么你必须要看整个代码。而且没有人可以盲目地帮助你。- 这里没有巫师。

你看,你问了问题,但你没有提供你需要的所有信息来找出原因(合理地隐藏你的诀窍)。- 就像在插头的例子中一样。- 但在这种情况下,你怎么能帮助呢?- 答案是,你不能。所有的帮助都是毫无意义的。而且这也需要大量的精力。

 
Chiripaha:

好吧,如果它是有效的,甚至如果它是100%的,那么就没有问题了。那么,你为什么要在其中寻找一个错误呢?- 所以,问题不在这里!- 如果你正在寻找一个错误,这意味着你没有100%的把握。所以,问题不在代码,而在你的评价标准,因为它们也让你困惑。(你先开始的:)))我只是给它加点油...)

这里所介绍的--我甚至不知道如何称呼它......。可能是--一个单一的行动被膨胀到一个函数的大小。在大多数程序中,这种应用并不理想--在一个区块中的修改与其他东西一起进行。- 虽然。可能有不同的适用条件。但我的观点是,这里没有什么可以优化的......因为它只是一个行动。

我在其中寻找,因为我们只改变了它,因为它是可优化参数的地方。

怎么就没有什么可优化的了呢?

 
Chiripaha:

这正是我想告诉你的--问题可能出在别的地方,而不是在这个函数中。所以你有其他的困惑。也许这些SLs和TPs被应用于其他一些地方,以某种方式重叠或其他......。我们只能猜测。- 这就是为什么你必须要看整个代码。而且没有人可以盲目地帮助你。- 没有巫师。

你看,你问的问题,你漏掉了一些查明原因所需的信息(理智地隐藏你的诀窍)。- 如同在有inludes的例子中。- 但在这种情况下,你怎么能帮助呢?- 答案是,你不能。所有的帮助都是毫无意义的。而且这也需要大量的精力。

我理解...

我们需要休息一下... ...思考...

请看....

而且我想我知道在哪里...

 
lottamer:

我在其中寻找,因为我们只改变了它,因为它是可优化参数的地方。

怎么就没有什么可优化的了呢?

:))))))它们是为什么而优化的?"订单的修改?- 你刚才不是这么说的。

它们应该根据程序、条件进行优化--你可靠地隐藏了这些条件。但它不能针对单一行动进行优化。

在这种情况下,开发商只需要自己决定这些要点。我们都经历过这种情况,相信我。: ))我和其他同事也是如此。你不能请求帮助并躲起来。然后,你必须透露--在这种情况下根本就不公开,因为论坛是公开的--你的牌。
 
Chiripaha:

:))))))它们以何种方式被优化? 以何种方式修改?- 你刚才不是这么说的。

他们应该根据程序、条件进行优化--你是可靠地隐藏了这些条件。但你不能就单一行动进行优化。

在这种情况下,开发商只需要自己决定这些要点。我们都经历过这种情况,相信我。: ))我和其他同事也是如此。你不能在寻求帮助的同时隐藏自己。然后,你必须公开--在这种情况下,根本就公开,因为论坛是公开的--你的牌。

我现在将准备所有的代码,并显示........
 

这里是代码。

欧元兑美元对

//+------------------------------------------------------------------+
//|                                                           33.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
#include <b-Positions.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

extern  int  STOP = 100; 
extern  int  TAKE = 200;

double  Ma_1, Ma_2,  m2, m3; // m2 и m3 - это маркеры



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
Ma_1=iMA(NULL,PERIOD_M15,20, 0,MODE_SMA,PRICE_CLOSE,1) ;

Ma_2=iMA(NULL,PERIOD_M15,100,0,MODE_SMA,PRICE_CLOSE,1) ;





//=============================BUY_CONDITIONS=============================================
    

if (Ma_1>Ma_2 && m2==0)     {My_close();  My_buy ();  My_modify();  m2=1;   }  // закрыть если висят открытые позы   
                                                                                                   // и открыть новую
//=============================SELL_CONDITIONS=============================================
 
if (Ma_1<Ma_2 && m3==0)     {My_close();  My_sell ();  My_modify();  m3=1;  }    
 
//======================================

if  ( OrdersTotal()==0 && (m2==1 || m3==1)) {m2=0; m3=0;}  // обнуляет маркеры при закрытии позиций,
                                                           // что дает возможность открывать снова
//==============переход в безубыток ========================
   
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
   
if  (OrderProfit()>0.5)  {My_modify_close_zero ();}


return(0);
  }

//============================функция  ПРОДАТЬ==============================================

int My_sell()
{
    OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 0, 0, CLR_NONE);

}
return;

///==================================КУПИТЬ==========================================
int My_buy ()
{
     OrderSend (Symbol( ), OP_BUY, 0.01 ,Ask, 0, 0, 0, NULL, 0, 0, CLR_NONE);
}
return;


//+---------------------МОДИФИЦИРОВАТЬ сделку сразу по открытии---------------------------------------------+


int My_modify()
 {
   bool   result;
   double take_profit,stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point;
               else            stop_loss=OrderOpenPrice()+STOP*point;
               
                if(cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point;
                           else take_profit=OrderOpenPrice()-TAKE*point;
               
               
               result=OrderModify(OrderTicket(),0,stop_loss, take_profit,0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//            break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }

   return(0);
  }
  
  
//==============================выставить стопы в безубыток============================================================
int My_modify_close_zero ()
{
   bool   result;
   double stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice();
               else            stop_loss=OrderOpenPrice();
               
               result=OrderModify(OrderTicket(),OrderOpenPrice(),stop_loss,OrderTakeProfit(),0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//             break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }
//----
   return(0);
  }

  
//=================ЗАКРЫТЬ СДЕЛКУ=======================================================
int My_close()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
 
lottamer:

这里是代码。

欧元兑美元对

b-Positions.mqh的附件--否则你将无法运行它--你不会看到它是如何工作的。
 
Chiripaha:
b-Positions.mqh附件--否则你将无法运行它--你将无法看到它工作。

附加的文件:
b-positions.mqh  90 kb
 
lottamer:
我有一个问题--如果你在专家顾问本身就有所有必要的功能,为什么还需要这个文件作为一个插件?你是否打算做其他事情?