#2329
1 час назад, Вера сказал:

по картинке не он,

 

FR Scalper PRO 6.0.zip57 скач.

#2330

Всем привет. Помогите разобраться, почему советник работает не так, как планировалось. Спасибо.

Есть массив нолей и единиц. Ноль - продать. Единица - купить. Если сделка убыточная, тогда лот удваивается. Если прибыльная, то лот сбрасывается до минимального. У него эквити должна быть как у мартингейла, а в тестере всё совсем не так.

 


#include <Trade\Trade.mqh>

CTrade trade;

 

double LotSize = 0.01;
int TakeProfit = 500;
int StopLoss = 500;
double prices;

 

int LossCount = 0;
int lossCounter = 0;
int maxLossCounter = 0;

 

int SignalArray[10000];
int signalIndex = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   trade.SetExpertMagicNumber(123);
   trade.SetDeviationInPoints(10);
   trade.SetTypeFilling(ORDER_FILLING_FOK);


for(int i = 0; i < ArraySize(SignalArray); i++)
 {
 SignalArray[i] = i % 2;
 }

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   
   if(!PositionSelect(_Symbol))
     {

      double freeMargin = AccountInfoDouble(ACCOUNT_FREEMARGIN);
      if(LotSize * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE) > freeMargin * 100)
        {
         PrintFormat("Размер лота превышает доступные средства.", LotSize, freeMargin);
         ExpertRemove();
        }
      

      if(SignalArray[signalIndex] == 0)
        {
         prices = SymbolInfoDouble(_Symbol, SYMBOL_BID);
         trade.Sell(LotSize, NULL, prices, prices + StopLoss * _Point, prices - TakeProfit * _Point);
        }
      if(SignalArray[signalIndex] == 1)
        {
         prices = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
         trade.Buy(LotSize, NULL, prices, prices - StopLoss * _Point, prices + TakeProfit * _Point);
        }
      signalIndex++;
      

      HistorySelect(0, TimeCurrent());
      ulong lastDeal = HistoryDealGetTicket(HistoryDealsTotal() - 1);
      double lastProfit = HistoryDealGetDouble(lastDeal, DEAL_PROFIT);
      
      if(lastProfit < 0)
        {
         lossCounter++;
         if(lossCounter > maxLossCounter)
           {
            maxLossCounter = lossCounter;
           }
         if(lossCounter >= LossCount)
           {
            LotSize *= 2;
           }
         }
         
      if(lastProfit > 0)
        {
         lossCounter = 0;
         LotSize = 0.01;
        }


     }
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   PrintFormat("Максимальное количество убыточных сделок подряд: ", maxLossCounter);
  }
//+------------------------------------------------------------------+
 

Изменено 27 августа, 2023 пользователем Aнaтолий

#2331
#include <Trade\Trade.mqh>

CTrade trade;

double LotSize = 0.01;
int TakeProfit = 500;
int StopLoss = 500;

int LossCount = 0;
int lossCounter = 0;
int maxLossCounter = 0;

int SignalArray[10000]= {0};
int signalIndex = 0;
ulong lastPos=0; // тикет последней позиции

//------------------------------------------------------------------
int OnInit()
{
  trade.SetExpertMagicNumber(123);
  trade.SetDeviationInPoints(10);
  trade.SetTypeFilling(ORDER_FILLING_FOK);

  for(int i = 0; i < ArraySize(SignalArray); i++) SignalArray[i] = i % 2;

  return(INIT_SUCCEEDED);
}
//------------------------------------------------------------------
void OnDeinit(const int reason)
{
  PrintFormat("Максимальное количество убыточных сделок подряд: ", maxLossCounter);
}
//------------------------------------------------------------------
void OnTick()
{
  if (PositionSelect(_Symbol)) return; // если позиция есть, то ждем

  // проверяем последнюю позицию
  if (lastPos>0) // если есть запомненная позиция, то берем её результат
  {
    if (!HistorySelectByPosition(lastPos)) return; // при ошибке выхоим
    double lastProfit=0;
    for (int i=0; i<HistoryDealsTotal(); ++i)
    {
      ulong d=HistoryDealGetTicket(i);
      if (HistoryDealGetInteger(d, DEAL_ENTRY)==DEAL_ENTRY_IN) continue;
      lastProfit+=HistoryDealGetDouble(d, DEAL_PROFIT);
    }
    lastPos=0; // сбросили чтоб повторно не проверять
    if (lastProfit >= 0)
    {
      lossCounter = 0;
      LotSize = 0.01;
    }
    else
    {
      lossCounter++;
      if (lossCounter > maxLossCounter) maxLossCounter = lossCounter;
      if (lossCounter >= LossCount) LotSize *= 2;
    }
  }

  // открываем новую позицию
  double freeMargin = AccountInfoDouble(ACCOUNT_FREEMARGIN);
  if (LotSize * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE) > freeMargin * 100)
  {
    PrintFormat("Размер лота превышает доступные средства.", LotSize, freeMargin);
    ExpertRemove();
  }

  if (SignalArray[signalIndex] == POSITION_TYPE_SELL)
  {
    double prices = ND(SymbolInfoDouble(_Symbol, SYMBOL_BID));
    if (!trade.Sell(LotSize, NULL, prices, ND(prices + StopLoss * _Point), ND(prices - TakeProfit * _Point))) return; // при ошибке выход
  }
  else
  {
    double prices = ND(SymbolInfoDouble(_Symbol, SYMBOL_ASK));
    if (!trade.Buy(LotSize, NULL, prices, ND(prices - StopLoss * _Point), ND(prices + TakeProfit * _Point))) return; // при ошибке выход
  }
  lastPos=trade.ResultOrder();
  Print("тикет последней открытой позиции #"+string(lastPos));
  signalIndex++;
}
//------------------------------------------------------------------
double ND(double a, int n=-1)
{
  return NormalizeDouble(a, n<0?_Digits:n);
}
//------------------------------------------------------------------

 

#2332

Спасибо! Ушёл тестить.

#2333

Уважаемые разработчики, кто-нибудь может пожалуйста добавить сюда возможность установки лота при открытии ордеров в процентах от баланса, или эквити? Заранее спасибо.

b1.mq437 скач.

#2334

this forex bot works on test but not on real. Can anyone fix it?

Adjustable_MA.ex42 скач. Adjustable_MA.mq414 скач.

#2335

MODULE_v3.4ex.mq416 скач.

Здравствуйте уважаемые программисты! Могли бы вы немного изменить тот помощник? С функцией частичного и полного перекрытия Бывает непонятно работает тралл или нет. Могли бы добавить дополнительную информацию на график и чтобы обновлялись данные если закрою ордер, то проходил по тику перерасчёт перекрытия ордеров по траллу, или удалю линию она перерисовывалась 

Изменено 27 сентября, 2023 пользователем Lexa000

#2336

Помогите написать простейшего советника,открывающего бай при касании линии саппорт М1 и селл при касании резистенс. При каждом касании - новая сделка и неважно,сколько сделок уже в работе,сколько уже открытых селлов и Баев. Без Мартина и т.д.,закрывать буду другим совом. Не получается сюда индикатор скинуть.. в личку наверн

 

Ещё добавлю. Если цена выше  М1 резистенс,то сделка в селл открывается вы начале новой свечи. Если ниже - то ничего не происходит. Так же и с саппортом - если цена вначале новой свечи ниже,то открывается бай,если выше, то ничего не происходит

SupportResistance M1 (1).ex44 скач.

Изменено 6 ноября, 2023 пользователем Pavel888

#2337
//=========================================================================================================================================//
//          Функция модификации СЛ и ТП при перекрытии ордеров                                                                             //
//=========================================================================================================================================//

void TralOverlap()
  {
   

   switch(overlap)
     {
      case 1:
      case 2:
      case 3:
      case 4: {ColOver0=clrDeepSkyBlue; ColOver1=clrAqua; Typetral="Трал частичн. перекрытия!";} break;

      case 5:
      case 6:
      case 7:
      case 8:  {ColOver0=clrGold; ColOver1=clrYellow; Typetral="Трал основн. перекрытия!";} break;
      case 9:
      case 10:
      
      default: break;
     }
   switch(overlap)
     {
      case 10:
      case 8:
      case 6:
      case 4:
      case 2:
        {
         if(!flag)
           {
            PrOver=NormalizeDouble(Ask,Digits);
            flag=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver0,1);
              }
           }
         else if(flag && !flag1 && Ask<PrOver-OverTralStart*Point)
           {
            flag1=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver1,1);
              }
           }
         else if(flag1)
           {
            if(Ask<PrOver-(OverTralStart+OverTralSize)*Point)
              {
               PrOver=Ask+OverTralStart*Point;
               if(Info)
                 {
                  DrawLine("IOverTP",PrOver,ColOver1,1);
                 }
              }
            else if(Ask>=PrOver)
              {
               if(Info)
                 {
                  DeleteSelObj("IOverTP");
                  DeleteSelObj("ItxtOver");
                 }
               switch(overlap)
                 {
                  case 2:
                    {
                     int t=0;
                     if(Cprofit1!=0)
                       {
                        for(int i=0; i<ArraySize(Clot); i++)
                          {
                           double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],-1,Clot[i])) t++;
                             }
                          }
                        if(t>0) {for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;}
                       }
                    }
                  break;
                  case 4:
                    {
                      m=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                           double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],OP_SELL,Clot[i])) m++;
                             }
                          }
                        if(m>0) {for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_SELL); flag=false;}
                       }
                    }
                  break;
                  case 6:
                    {
                     if(CloseOrder(Cpos[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;
                       }
                    }
                  break;
                  case 8:
                    {
                     if(CloseOrder(Cpos[0],OP_SELL,Clot[0]))
                       {
                        for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_SELL,Llot[i]); flag=false;
                       }
                    }
                  break;
                  
                 }
               if(!flag)
                 {
                  flag1  =false;
                  PrOver =0.0;
                  overlap=0;
                 }
              }
           }
        }
      break;
      case 9:
      case 7:
      case 5:
      case 3:
      case 1:
        {
         if(!flag)
           {
            PrOver=NormalizeDouble(Bid,Digits);
            flag=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver0,1);
              }
           }// запоминаем уровень один раз
         else if(flag && !flag1 && Bid>PrOver+OverTralStart*Point)
           {
            flag1=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver1,1);
              }
           }
         else if(flag1)
           {
            if(Bid>PrOver+(OverTralStart+OverTralSize)*Point)
              {
               PrOver=Bid-OverTralStart*Point;
               if(Info)
                 {
                  DrawLine("IOverTP",PrOver,ColOver1,1);
                 }
              }
            else if(Bid<=PrOver)
              {
               if(Info)
                 {
                  DeleteSelObj("IOverTP");
                  DeleteSelObj("ItxtOver");
                 }
               switch(overlap)
                 {
                  case 1:
                    {
                      int t=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                            double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],-1,Clot[i])) t++;
                             }
                          }
                        if(t>0) {for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;}
                       }
                    }
                  break;
                  case 3:
                    {
                       m=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                            double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],OP_BUY,Clot[i])) m++;
                             }
                          }
                        if(m>0) {for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_BUY); flag=false;}
                       }
                    }
                  break;
                  case 5:
                    {
                     if(CloseOrder(Cpos[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;
                       }
                    }
                  break;
                  case 7:
                    {
                     if(CloseOrder(Cpos[0],OP_BUY,Clot[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_BUY,Llot[i]); flag=false;
                       }
                    }
                  break;             
                 }
               if(!flag)
                 {
                  flag1  =false;
                  PrOver =0.0;
                  overlap=0;
                 }
              }
           }
        }
      break;
     }
  }

Эта часть кода все время зависает, как сделать чтобы она по тикету работала? {ColOver0=clrDeepSkyBlue; ColOver1=clrAqua; Typetral="Трал частичн. перекрытия!";} break; Удаляю эту часть на графике, она не восстанавливается, работает как невидимая

#2338
В 30.09.2023 в 09:38, Lexa000 сказал:
//=========================================================================================================================================//
//          Функция модификации СЛ и ТП при перекрытии ордеров                                                                             //
//=========================================================================================================================================//

void TralOverlap()
  {
   

   switch(overlap)
     {
      case 1:
      case 2:
      case 3:
      case 4: {ColOver0=clrDeepSkyBlue; ColOver1=clrAqua; Typetral="Трал частичн. перекрытия!";} break;

      case 5:
      case 6:
      case 7:
      case 8:  {ColOver0=clrGold; ColOver1=clrYellow; Typetral="Трал основн. перекрытия!";} break;
      case 9:
      case 10:
      
      default: break;
     }
   switch(overlap)
     {
      case 10:
      case 8:
      case 6:
      case 4:
      case 2:
        {
         if(!flag)
           {
            PrOver=NormalizeDouble(Ask,Digits);
            flag=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver0,1);
              }
           }
         else if(flag && !flag1 && Ask<PrOver-OverTralStart*Point)
           {
            flag1=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver1,1);
              }
           }
         else if(flag1)
           {
            if(Ask<PrOver-(OverTralStart+OverTralSize)*Point)
              {
               PrOver=Ask+OverTralStart*Point;
               if(Info)
                 {
                  DrawLine("IOverTP",PrOver,ColOver1,1);
                 }
              }
            else if(Ask>=PrOver)
              {
               if(Info)
                 {
                  DeleteSelObj("IOverTP");
                  DeleteSelObj("ItxtOver");
                 }
               switch(overlap)
                 {
                  case 2:
                    {
                     int t=0;
                     if(Cprofit1!=0)
                       {
                        for(int i=0; i<ArraySize(Clot); i++)
                          {
                           double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],-1,Clot[i])) t++;
                             }
                          }
                        if(t>0) {for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;}
                       }
                    }
                  break;
                  case 4:
                    {
                      m=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                           double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],OP_SELL,Clot[i])) m++;
                             }
                          }
                        if(m>0) {for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_SELL); flag=false;}
                       }
                    }
                  break;
                  case 6:
                    {
                     if(CloseOrder(Cpos[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;
                       }
                    }
                  break;
                  case 8:
                    {
                     if(CloseOrder(Cpos[0],OP_SELL,Clot[0]))
                       {
                        for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_SELL,Llot[i]); flag=false;
                       }
                    }
                  break;
                  
                 }
               if(!flag)
                 {
                  flag1  =false;
                  PrOver =0.0;
                  overlap=0;
                 }
              }
           }
        }
      break;
      case 9:
      case 7:
      case 5:
      case 3:
      case 1:
        {
         if(!flag)
           {
            PrOver=NormalizeDouble(Bid,Digits);
            flag=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver0,1);
              }
           }// запоминаем уровень один раз
         else if(flag && !flag1 && Bid>PrOver+OverTralStart*Point)
           {
            flag1=true;
            if(Info)
              {
               DrawLine("IOverTP",PrOver,ColOver1,1);
              }
           }
         else if(flag1)
           {
            if(Bid>PrOver+(OverTralStart+OverTralSize)*Point)
              {
               PrOver=Bid-OverTralStart*Point;
               if(Info)
                 {
                  DrawLine("IOverTP",PrOver,ColOver1,1);
                 }
              }
            else if(Bid<=PrOver)
              {
               if(Info)
                 {
                  DeleteSelObj("IOverTP");
                  DeleteSelObj("ItxtOver");
                 }
               switch(overlap)
                 {
                  case 1:
                    {
                      int t=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                            double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],-1,Clot[i])) t++;
                             }
                          }
                        if(t>0) {for(int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;}
                       }
                    }
                  break;
                  case 3:
                    {
                       m=0;
                     if(Cprofit1!=0)
                       {
                        for( int i=0; i<ArraySize(Clot); i++)
                          {
                            double k=0.0;
                           k=Cprofit[i]/Cprofit1;
                           if(Cprofit[i]<0.0 && Clot[i]>k*Lprofit1*Clot[i]/-Cprofit[i])
                              Clot[i]=MathFloor(k*Lprofit1*Clot[i]/-Cprofit[i]/Step)*Step;
                           if(Clot[i]>=minLot)
                             {
                              if(CloseOrder(Cpos[i],OP_BUY,Clot[i])) m++;
                             }
                          }
                        if(m>0) {for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_BUY); flag=false;}
                       }
                    }
                  break;
                  case 5:
                    {
                     if(CloseOrder(Cpos[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i]); flag=false;
                       }
                    }
                  break;
                  case 7:
                    {
                     if(CloseOrder(Cpos[0],OP_BUY,Clot[0]))
                       {
                        for( int i=0; i<ArraySize(Llot); i++) CloseOrder(Lpos[i],OP_BUY,Llot[i]); flag=false;
                       }
                    }
                  break;             
                 }
               if(!flag)
                 {
                  flag1  =false;
                  PrOver =0.0;
                  overlap=0;
                 }
              }
           }
        }
      break;
     }
  }

Эта часть кода все время зависает, как сделать чтобы она по тикету работала? {ColOver0=clrDeepSkyBlue; ColOver1=clrAqua; Typetral="Трал частичн. перекрытия!";} break; Удаляю эту часть на графике, она не восстанавливается, работает как невидимая

Я добавил трал в тик, а тик в таймер, ситуация улучшилась,  DrawLine("IOverTP",PrOver,ColOver1,1); но вот с этой линией проблему не знаю как решить, не обновляется, зависает. Можете мне подсказать как это исправить?

#2339
В 08.09.2023 в 17:59, Rtr сказал:

Уважаемые разработчики, кто-нибудь может пожалуйста добавить сюда возможность установки лота при открытии ордеров в процентах от баланса, или эквити? Заранее спасибо.

b1.mq4 56.45 \u043a\u0411 · 5 загрузок

Я сделал так, если понравится, то пользуйся

b1.mq413 скач.

#2340
В 07.10.2023 в 09:31, Lexa000 сказал:

Я сделал так, если понравится, то пользуйся

b1.mq4 113.45 \u043a\u0411 · 2 загрузки 13 скач.

Выше не работал с множителем, исправил

b1.mq419 скач.

#2341

PipFiniteTrendPro + exp_iCustom кто нибудь работал с этим индикатором и совой. Может кто их спарить. Могу оплатить работу. 

 

 

#2342
В 09.10.2023 в 12:50, Lexa000 сказал:

Выше не работал с множителем, исправил

b1.mq4 115.7 \u043a\u0411 · 4 загрузки

Большое спасибо за помощь! Потестировал... Пока не получилось сделать так, что бы он внимание обращал на эквити.

Подскажи пожалуйста: ты добавил risk. Какие там цифры нужны? 

Нужно, что бы при 10000 он выставлял лот 0.1, 10100 - 0.11, 10200 - 0.12.....

При 20000 должно быть 0.2 и так далее..

 

Сейчас при любых цифрах risk (пробовал 10, 50, 100 и 200) он все равно ставит лот 0.2 (такой же, как и прописан в min.lot ниже).

#2343
В 23.10.2023 в 14:06, Rtr сказал:

Большое спасибо за помощь! Потестировал... Пока не получилось сделать так, что бы он внимание обращал на эквити.

Подскажи пожалуйста: ты добавил risk. Какие там цифры нужны? 

Нужно, что бы при 10000 он выставлял лот 0.1, 10100 - 0.11, 10200 - 0.12.....

При 20000 должно быть 0.2 и так далее..

 

Сейчас при любых цифрах risk (пробовал 10, 50, 100 и 200) он все равно ставит лот 0.2 (такой же, как и прописан в min.lot ниже).

Это риск от суммы баланса, чтобы от суммы 10000 выставлял 0.1, нужно ставить 10.0

test.set5 скач.

Изменено 25 октября, 2023 пользователем Pavel888

#2344

Собрал такой, но в нем выходит ошибка модификации, в остальном нормальный

EA 818.mq414 скач.

#2345

Здравствуйте уважаемые программисты. Может кто-нибудь добавить в этот советник фильтр максимального спреда.

ground.mq424 скач.

#2346
4 часа назад, Gffdsa сказал:

Здравствуйте уважаемые программисты. Может кто-нибудь добавить в этот советник фильтр максимального спреда.

ground.mq4 13.47 \u043a\u0411 · 4 загрузки

сейчас по умолчанию максимальный спред 5, менять можно в настройках

ground.mq427 скач.

#2347

Здравствуйте уважаемые программисты. В MQL не силён, возможно ли в данный советник прописать одно условие, если это не проблематично:

Сейчас советник просто отключает и включает кнопку "Автоторговля" в указанное время.

А нужно, чтобы советник отключал кнопку «Автоторговля» в указанное время, если только в рынке нет открытых позиций.

Т.е. в заданное время окончание торговли, если в терминале нет открытых ордеров, советник сразу отключает кнопку «Автоторговля». Если в терминале есть открытые ордера, то только после закрытия этих ордеров советник сразу отключает кнопку «Автоторговля».

TimeAutotrade.mq48 скач.

#2348
59 минут назад, Gffdsa сказал:

Здравствуйте уважаемые программисты. В MQL не силён, возможно ли в данный советник прописать одно условие, если это не проблематично:

Сейчас советник просто отключает и включает кнопку "Автоторговля" в указанное время.

А нужно, чтобы советник отключал кнопку «Автоторговля» в указанное время, если только в рынке нет открытых позиций.

Т.е. в заданное время окончание торговли, если в терминале нет открытых ордеров, советник сразу отключает кнопку «Автоторговля». Если в терминале есть открытые ордера, то только после закрытия этих ордеров советник сразу отключает кнопку «Автоторговля».

TimeAutotrade.mq4 5.76 \u043a\u0411 · 0 загрузок

Держите.

TimeAutotrade.mq421 скач.

Я добавил флажок IgnoreOpenOrders - если переключить в true, он будет работать, как раньше.

По умолчанию false - то есть поведение, которое вы хотели.

 

Для ясности: если в рынке любые позиции, или отложки на счете.

 

#2349

всем привет...есть умельцы дописать условия в советник?  ДОПИСАТЬ УСЛОВИЯ В СОВЕТНИКА. НУЖНО ЧТОБ БЫЛА ВОЗМОЖНОСТЬ ВЫСТАВЛЯТЬ РЕВЕРС СИГНАЛА НА ОПРЕДЕЛЕННОМ КОЛЕНЕ МАРТИНА В общем советник работать будет по мартингейлу. Нужно прописать чтоб в настройках был реверс на определенном колене. Например в настройках реверса укажем 3. Соответственно сов открывает 1, 2 колено как положено по сигналу, а 3 колено открывает реверсом не заканчивая серии мартина. Так же чтоб было возможным ставить не только 3 шаг в реверс а например 3,5,7.   и еще чтоб при открытии очередного колена закрывалось предыдущее дабы не тащить за собой хвосты... за ранее спасибо тем кто откликнется!!!

MA Profi.mq43 скач.

#2350

Доброго времени, подскажите по какому принципу сова входит в рынок и как изменить ? Я не специалист, но по наблюдениям, по МА с периодом (4), если да - то можно сделать изменяющийся период ?

Fx_s.ex43 скач. Fx_s (1)~.mq410 скач.

#2351

Здравствуйте друзья, не могли вы посоветовать как качественно детально протестировать советника? Данный момент пишу советник по видеоматериалам, но дело в том что когда я тестирую свой советник в терминале брокера, несмотря на то что я скачал историю цен, советник как будто не видит тех цен что я вижу в терминале. Поэтому прощу вас помочь тестированием советника, поделится опытом где и как вы тестируете свои советники. Заранее извиняюсь если вопрос оказался банальным, я просто до сих пор думал что правильно тестирую свой советник, но на деле совсем другое.

#2352

Уважаемые программисты, есть сова с открытым кодом, но в тестере не торгует, на график ставится нормально, но тоже не торгует, надо бы ее рихтануть, выкладываю с сетом на фунт М1

EA_Smart_Neural_V7_original.mq433 скач. EA_Smart_Neural_V7.zip18 скач.

Изменено 30 ноября, 2023 пользователем segaj

#2353
12 минут назад, segaj сказал:

Уважаемые программисты, есть сова с открытым кодом, но в тестере не торгует, на график ставится нормально, но тоже не торгует, надо бы ее рихтануть, выкладываю с сетом на фунт М1

Привет, у меня с этим сетом в тестере не работает, но на дефолтных настройках работает без проблем, может быть дело в настройках 

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025