[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 476

 
阿特米斯是超级的!!!。
 
Roman.:


1.以防万一--请阅读 页面第7帖中我的链接中的所有信息。

2.请看预告片,了解你的问题的演练情况。第二个文件是我用策略优化器工作的例子,以及目前在图形上,作为优化结果从恢复因子获得的TS的停止和利润值的依赖。我自己最近正在使用它--我自己还在研究它,所以所有问题都要问它的作者。通过网页看他们的网站。

3.所有,IMHO。


哦,太酷了!!。那个程序不是叫Excel吗? 你如何使用它,你如何在其中保存?
 

我在这方面完全是个初学者,但请帮我写一个 这样的EA,首先只是开一个买入订单,并设置止盈和止损,然后如果这个订单在止盈被触发时被关闭,然后打开相同的订单买入,如果在止损被触发时被关闭,则卖出。
 
我如何将结果保存在excel中?在测试器中,我点击保存一切,找到并打开excel,在白色背景上点击粘贴,什么也没有发生。也许我哥哥很快就会来把我推出去,因为电脑的原因。
 
dkfl.zrjdktdbx:
我如何将结果保存在excel中?在测试器中,我点击保存一切,找到并打开excel,在白色背景上点击粘贴,什么也没有发生。也许我哥哥很快就会来把我推出去,因为电脑的原因。
也许我应该再买一台电脑。
 
有一天...
 
dkfl.zrjdktdbx:
我如何将结果保存在excel中?在测试器中,我点击保存一切,找到并打开excel,在白色背景上点击粘贴,什么也没有发生。也许我哥哥很快就会来把我推出去,因为电脑的原因。

复制一切并粘贴,只有自己要写的栏目名称,盈利能力在我这里转化为几个月。
 
dkfl.zrjdktdbx:

哦,太酷了!!。那个程序不是叫Excel吗? 如何使用它,如何在其中保存?

阅读其帮助和MicrosoftOffic-excel文档...:-)
 

同志们,我最近问了一个问题,即EA在真实账户上的工作方式与在策略测试器中 的工作方式不同。你说,如果没有EA本身的代码,就没有办法弄清楚它。以下是代码。

简而言之,该EA的工作原理是马丁格尔原则,即如果之前的交易不成功,它会以双倍的手数开仓。如果错误超过3次,那么我就认为是平仓开始了,并改变手数和止损的大小,但要按比例进行,就像EA仍然在另一个方向上以双倍手数开仓一样。

如果一切顺利,它就会向同一方向打开,有一个地段。那么问题来了:在策略测试器中,一切运行正常,但在我的真实账户中,它已经以0.24手开出了第二笔交易(这个数字是在切换功能中设置的)...请帮助...我真的很想在真实账户上试试,这个问题让我一直停留在模拟账户上=(

//+------------------------------------------------------------------+ 
//| StMartin++.mq4 | 
//| Sergey Kodolov | 
//| 84232676421@mail.ru | 
//+------------------------------------------------------------------+ 
#property copyright "Sergey Kodolov" 
#property link "84232676421@mail.ru" 

    extern int TP = 1000; 
    extern int TS = 1000; 
    extern double lots = 0.1; 

    double volumz; 
    int ticket,total; 
    int slip = 3; 
    int Magic = 4; 


    static int CriticalTicket = 0; 

    int TicketArray[4]; //миссив с тикетами
    int CTicketArray[10]; //массив с критическими тикетами

    void FormTicket(int number) //объявил шаблон под функцию запоминания тикетов 
    { 
      for(int i=3;i>0;i--) 
      { 
         TicketArray[0] = ticket; 
         if(TicketArray[0]>0 && TicketArray[0] == TicketArray[1])break; 
         TicketArray[i] = TicketArray[i-1]; 
      } 
    } 
    
    void FormCriticalTicket(int number1) //сюда записываю критическме тикеты
    { 
      for(int i=9;i>0;i--) 
      { 
         CTicketArray[0] = CriticalTicket; 
         if(CTicketArray[0]>0 && CTicketArray[0] == CTicketArray[1])break; 
         CTicketArray[i] = CTicketArray[i-1]; 
      } 
    }  


//+------------------------------------------------------------------+ 
//| expert initialization function | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- 
     if(OrdersHistoryTotal()==0) 
     { 
        ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер 
     } 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert deinitialization function | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert start function | 
//+------------------------------------------------------------------+ 
int start() 
  { 
//---- 
FormCriticalTicket(CriticalTicket); //вызываем функцию, что запоминала критические тикеты
int CritLot = crit(); //функция берет минимальное значение из массива критических тикетов
int OrderTimeCheck = check3(); //проверяем, закрыт ли ордер 
bool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус 
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты 
OrderOpenFunction(OrderCloseCheck,CritLot); //тут открываем ордера 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 


int crit()
{
   return(ArrayMinimum(CTicketArray,6,1));
}

int check3() //проверяем, закрыт ли ордер 
{ 
   OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
   if(OrderClosePrice()==OrderTakeProfit()) 
      { 
         CriticalTicket=0;
      } 
   if(OrderCloseTime()>0)return(100); 
} 

bool check2(int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными? 
{ 
   if(OrderTimeCheck == 100) 
   { 
      bool flag = true; 
      for(int j=1;j<4;j++) 
      { 
         OrderSelect(TicketArray[j],SELECT_BY_TICKET); 
         if(OrdersHistoryTotal()>2) 
         { 
            if(OrderClosePrice()!=OrderStopLoss()) 
            { 
               flag = false; 
            } 
         } 
         if(OrdersHistoryTotal()<=2) 
         { 
            flag = false; 
         } 
      } 
      return(flag); 
   } 
   else
      return(false); 
} 

void OrderOpenFunction(bool OrderCloseCheck, int CritLot) 
{ 
   total = OrdersTotal();
   if(OrderCloseCheck==true)
   {
      int TP1,TS1;
      double m1,m2,m3,m4,m5,m6;
      m1=1.2;
      m2=1.25;
      m3=2.0;
      m4=1.0;
      m5=1.25;
      m6=1.0;
   
      OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
      switch(CritLot)
      {
         case 1: volumz = (OrderLots()*2)*m1;
                  TP1=TP/m1;
                  TS1=TS/m1; 
                  break;
         case 2: volumz = (OrderLots()*2)*m2/m1;
                  TP1=TP/m2;
                  TS1=TS/m2; 
                  break;
         case 3: volumz = (OrderLots()*2)*m3/m2;
                  TP1=TP/m3;
                  TS1=TS/m3; 
                  break;
         case 4: volumz = (OrderLots()*2)*m4/m3;
                  TP1=TP/m4;
                  TS1=TS/m4;
                  break;
         case 5: volumz = (OrderLots()*2)*m5/m4;
                  TP1=TP/m5;
                  TS1=TS/m5;
                  break;
         case 6: volumz = (OrderLots()*2)*m6/m5;
                  TP1=TP/m6;
                  TS1=TS/m6;
                  break;
      }

      if(total < 1) 
      { 
         if(OrderType()==OP_SELL) 
         { 
            double lot3 = volumz; 
            ticket = OrderSend(Symbol(),OP_BUY,lot3,Ask,slip,Bid-TS1*Point,Bid+TP1*Point,0,Magic,0,Green); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
         if(OrderType()==OP_BUY) 
         { 
            OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
            double lot4 = volumz; 
            ticket = OrderSend(Symbol(),OP_SELL,lot4,Bid,slip,Ask+TS1*Point,Ask-TP1*Point,0,Magic,0,Red); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
      } 
   }   
   if(OrderCloseCheck==false) 
   { 
      if(total < 1) 
      { 
         OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
         volumz = OrderLots(); 
         if(OrderClosePrice() == OrderStopLoss()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               double lot1 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               double lot2 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
         } 
         if(OrderClosePrice() == OrderTakeProfit()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
         } 
      } 
   } 
} 

所有的解释都在那里...如果我需要更多--我将很乐意提供。

 
大家好,新年快乐。我找不到任何方法只下一次订单,如果条件满足后下了订单,那么如果有第二次的订单就不会被下。如果你能举出一个例子。