学习如何赚取村民的钱 [第2集] ! - 页 298

 

这就是测试的重点--如果我们长时间下跌,只开买单,系统就应该死亡(我重复一遍--没有卖单,这是一个原则问题)。现在它被修复了。

 
YOUNGA:

我发现股权曲线是模拟的--是的,马丁格尔在相反的一面。手数的计算公式是lastlot = NormalizeDouble(R/(StopLoss-Step*(CountTrades(OP_BUY))),2) R=5...50 水平间的步距


曲线可能很吸引人,这是个品味问题,但以这样的最大缩减量每年赚取10%的收益是不值得同情的。
 
好吧,那是一半的条目;-)我无法以任何方式提高利润率(每年可能有20%左右)。到目前为止,我已经展示了一种地段计算的方法。
 
Roman.:

我必须像视频中那样做...起初...IMHO。然后看...


如同吩咐:))))

初始存款10000

初始地段1

随机进入,一对卖,一对买

TR ~10pip

SL ~40bp

触发止损时,手数 "翻倍"。

附加的文件:
 
pako:


如同吩咐:))))

初始存款10000

初始地段1

随机进入,一对卖,一对买

TR ~10pip

SL ~40bp

止损触发时,手数 "翻倍"

为什么要编码--封闭?

看看吧--图案是这样的吗/不是?

这是在4。

int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
 //while(GetAsyncKeyState(16)){Sleep(500);} 
 
//   if(iTime(Symbol(),s_signal_period,0) == prevtime) return(0);    //ждем нового бара на сигнальном таймфрейме
//   prevtime = iTime(Symbol(),s_signal_period,0);                   //если появился новый бар, то включаемся

   if (IsExpertStopped) { Comment("Не удалось инициализировать советник!"); return (0);}   
   if (IsExpertFailed)  { Comment("Критическая ошибка! Советник остановлен."); return (0);}
   
   //---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  int time = 0;  // время - для определения факта работы только с крайним закрытым ордером
  
  bool pos1 = false, pos2 = false;

   
       
//---Поиск крайних отработавших ордеров для открытия очередных позиций на увеличенных при лоссе и стартовых при профите объёмах   
   for (int orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY)) {Print(" Ошибка при доступе к исторической базе (",GetLastError(),")");continue;}   
      if ((OrderSymbol() != Symb1)  || (OrderMagicNumber() != MagicNumber))  continue;              
   //------------------------- Принимаем в расчет только ордер, закрытый cамым крайним -----------------------
      if (time<OrderCloseTime())     //(сравниваем его с хранящимся в переменной time) 
        {
         time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную     
         int lastType = OrderType();
         double lastLots1 = OrderLots();
         double lastProfit1 = OrderProfit() + OrderSwap();
        }  
   }
     
   time = 0;
   for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY)) {Print(" Ошибка при доступе к исторической базе (",GetLastError(),")");continue;}   
      if ((OrderSymbol () != Symb2) || (OrderMagicNumber() != MagicNumber))  continue;  
                  
   //------------------------- Принимаем в расчет только ордер, закрытый cамым крайним -----------------------
      if (time<OrderCloseTime())     //(сравниваем его с хранящимся в переменной time) 
        {
         time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную     
         lastType = OrderType();
         double lastLots2 = OrderLots();
         double lastProfit2 = OrderProfit() + OrderSwap();
        } 
   }       
//-------------------------------- продолжение стартовым после профита или увеличение по мартину  -----------------------------------------------------------------         
pos1 = ExistPositions(Symb1,-1,MagicNumber,0);
pos2 = ExistPositions(Symb2,-1,MagicNumber,0);
 
 if (pos1 == false && pos2 == false) // при отсутствии позиций в рынке по символам
    {       
            
         
 // Анализ крайних двух ордеров по двум инструментам на профит для принятия решения по объёму следующих     
         if (lastProfit1 > 0 && lastProfit2 > 0)
         {
  //---Ордер закрылся с прибылью - обнуляем счетчик итераций, счетчик для подсчета последовательного убытка позиций колен лавины,
  //---текущий и суммарный убыток и открываемся стартовым лотом по тренду                 
            
            // Ордера закрылись в профит, открыться стартовым лотом            
          if (MathRand() > 16384)
             {  
              WmOrderSend(Symb1, OP_BUY,  Lots, MarketInfo(Symb1,MODE_ASK), MarketInfo(Symb1,MODE_BID) - StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_BID) + TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " старт ", MagicNumber);
              WmOrderSend(Symb2, OP_SELL, Lots, MarketInfo(Symb2,MODE_BID), MarketInfo(Symb2,MODE_ASK) + StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_ASK) - TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " старт ", MagicNumber);
             } 
          else 
             {  
              WmOrderSend(Symb1, OP_SELL, Lots, MarketInfo(Symb1,MODE_BID), MarketInfo(Symb1,MODE_ASK) + StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_ASK) - TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " старт ", MagicNumber);
              WmOrderSend(Symb2, OP_BUY,  Lots, MarketInfo(Symb2,MODE_ASK), MarketInfo(Symb2,MODE_BID) - StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_BID) + TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " старт ", MagicNumber);
             }                 
                
         }
         
         
        if (lastProfit1 < 0 && lastProfit2 > 0)  
           {
               
              // Ордер по первому символу закрылся с убытком - открываемся по нему увеличенными объёмами        
              Lots_New = lastLots1 * 2;                  
              
                   
 // ---------НОРМАЛИЗАЦИЯ НОВЫХ РАСЧЕТНЫХ ЛОТОВ И ОТКРЫТИЕ ОЧЕРЕДНОЙ ПОЗИЦИИ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (MathRand() > 16384)
                       {  
                        WmOrderSend(Symb2, OP_BUY,  Lots,     MarketInfo(Symb2,MODE_ASK), MarketInfo(Symb2,MODE_BID) - StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_BID) + TakeProfitPips * MarketInfo(Symb2,MODE_POINT),  " бАх ", MagicNumber);
                        WmOrderSend(Symb1, OP_SELL, Lots_New, MarketInfo(Symb1,MODE_BID), MarketInfo(Symb1,MODE_ASK) + StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_ASK) - TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " бАх ", MagicNumber);
                       } 
                    else 
                       {  
                        WmOrderSend(Symb2, OP_SELL, Lots,     MarketInfo(Symb2,MODE_BID), MarketInfo(Symb2,MODE_ASK) + StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_ASK) - TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " бАх ", MagicNumber);
                        WmOrderSend(Symb1, OP_BUY,  Lots_New, MarketInfo(Symb1,MODE_ASK), MarketInfo(Symb1,MODE_BID) - StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_BID) + TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " бАх ", MagicNumber);
                       }     
                                            
           }       
           
      if (lastProfit1 > 0 && lastProfit2 < 0)  
           {
               
              // Ордер по первому символу закрылся с убытком - открываемся по нему увеличенными объёмами             
              Lots_New = lastLots2 * 2; // Последующие лоты открываются в соответствие с классическим мартином - удвоение         
                   
 // ---------НОРМАЛИЗАЦИЯ НОВЫХ РАСЧЕТНЫХ ЛОТОВ И ОТКРЫТИЕ ОЧЕРЕДНОЙ ПОЗИЦИИ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (MathRand() > 16384)
                       {  
                        WmOrderSend(Symb1, OP_BUY,  Lots,     MarketInfo(Symb1,MODE_ASK), MarketInfo(Symb1,MODE_BID) - StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_BID) + TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " бАх ", MagicNumber);
                        WmOrderSend(Symb2, OP_SELL, Lots_New, MarketInfo(Symb2,MODE_BID), MarketInfo(Symb2,MODE_ASK) + StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_ASK) - TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " бАх ", MagicNumber);
                       } 
                    else 
                       {  
                        WmOrderSend(Symb1, OP_SELL, Lots,     MarketInfo(Symb1,MODE_BID), MarketInfo(Symb1,MODE_ASK) + StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_ASK) - TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " бАх ", MagicNumber);
                        WmOrderSend(Symb2, OP_BUY,  Lots_New, MarketInfo(Symb2,MODE_ASK), MarketInfo(Symb2,MODE_BID) - StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_BID) + TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " бАх ", MagicNumber);
                       }     
                                            
           }  
           
       if (lastProfit1 < 0 && lastProfit2 < 0) // Этого варианта нет на видео - удваивает объёмы на обоих символах  
           {
               
                     
                    Lots_New1 = lastLots1 * 2;
                    Lots_New2 = lastLots2 * 2;   
                                
 // ---------НОРМАЛИЗАЦИЯ НОВЫХ РАСЧЕТНЫХ ЛОТОВ И ОТКРЫТИЕ ОЧЕРЕДНОЙ ПОЗИЦИИ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (MathRand() > 16384)
                       {  
                        WmOrderSend(Symb2, OP_BUY,  Lots_New2, MarketInfo(Symb2,MODE_ASK), MarketInfo(Symb2,MODE_BID) - StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_BID) + TakeProfitPips * MarketInfo(Symb2,MODE_POINT),  " бАх ", MagicNumber);
                        WmOrderSend(Symb1, OP_SELL, Lots_New1, MarketInfo(Symb1,MODE_BID), MarketInfo(Symb1,MODE_ASK) + StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_ASK) - TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " бАх ", MagicNumber);
                       } 
                    else 
                       {  
                        WmOrderSend(Symb2, OP_SELL, Lots_New2, MarketInfo(Symb2,MODE_BID), MarketInfo(Symb2,MODE_ASK) + StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_ASK) - TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " бАх ", MagicNumber);
                        WmOrderSend(Symb1, OP_BUY,  Lots_New1, MarketInfo(Symb1,MODE_ASK), MarketInfo(Symb1,MODE_BID) - StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_BID) + TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " бАх ", MagicNumber);
                       }     
                                            
           }       
    }       
//---------------------------------------------------------------------------------------------------               
   
   // ----------------------- Свежих закрытых ордеров не было - открытие стартовым лотом ------------    
pos1 = ExistPositions(Symb1,-1,MagicNumber,0);
pos2 = ExistPositions(Symb2,-1,MagicNumber,0);
 if (pos1 == false && pos2 == false) // при отсутствии позиций в рынке по символам
    {       
     if (MathRand() > 16384)
             {  
              WmOrderSend(Symb1, OP_BUY,  Lots, MarketInfo(Symb1,MODE_ASK), MarketInfo(Symb1,MODE_BID) - StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_BID) + TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " старт ", MagicNumber);
              WmOrderSend(Symb2, OP_SELL, Lots, MarketInfo(Symb2,MODE_BID), MarketInfo(Symb2,MODE_ASK) + StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_ASK) - TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " старт ", MagicNumber);
             } 
          else 
             {  
              WmOrderSend(Symb1, OP_SELL, Lots, MarketInfo(Symb1,MODE_BID), MarketInfo(Symb1,MODE_ASK) + StopLossPips *  MarketInfo(Symb1,MODE_POINT), MarketInfo(Symb1,MODE_ASK) - TakeProfitPips * MarketInfo(Symb1,MODE_POINT), " старт ", MagicNumber);
              WmOrderSend(Symb2, OP_BUY,  Lots, MarketInfo(Symb2,MODE_ASK), MarketInfo(Symb2,MODE_BID) - StopLossPips *  MarketInfo(Symb2,MODE_POINT), MarketInfo(Symb2,MODE_BID) + TakeProfitPips * MarketInfo(Symb2,MODE_POINT), " старт ", MagicNumber);
             }    
    }         
    
    Print (" lastProfit1 = ", lastProfit1, " lastProfit2 = ", lastProfit2);                 
        
        
   return(0);    //  ВЫХОД ИЗ СТАРТ
}
附加的文件:
fcusvedptz.mq4  22 kb
zymzspzmcy.ex4  10 kb
 
Roman.:

为什么密码被锁定?

看--这个计划是这样的/不是?

"知识产权":)))) 在一些事件之后,不要烛照源代码(()

而你没有建议,例如MQ或WinDoof,这可能都是有原因的:))

不,那里的逻辑很简单。

随机基因0:1

如果0-出售,如果1-购买

如果他们都以正数收盘,赔率为1
否则,系数2,计数器1

以此类推

还是输了:)))) ((

 
pako:

"知识产权":)))) 在一些事件之后,不要烛照源代码(()

而你没有建议,例如MQ或WinDoof,这可能都是有原因的:))

不,那里的逻辑很简单。

随机基因0:1

如果0-出售,如果1-购买

如果两者都接近加号,赔率为1
如果他们都以正数收盘,赔率是2,反数是1。

以此类推

还是输了:)))) ((


我明白了。视频中的情况并非如此。如果一个在加号上,另一个在减号上,那么减号上的那个lot_previous * 2。正面关闭的那个人打开了开始的那个人。录像上有一切。

我稍后会亲自写下这五条......

 
Roman.:


我明白了。视频中的情况并非如此。如果一个在加号上,另一个在减号上,那么减号上的那个lot_previous * 2。正面关闭的那个人打开了开始的那个人。录像上有一切。

我稍后会亲自写下这五条......


你是对的,我没有仔细看,我道歉。
 
pako:

你是对的,我没有仔细看,我道歉。
:-)
 
Roman.:
:-)


(很抱歉,EA的交易方式不同,你是不是又改了什么?)