0
Сделал виртуальный тп на все ордера, чтобы модификации постоянной не было.


               if(OrderType()==OP_BUY)
                 { 
                  if(b>0 && TakeProfit!=0 && Bid>=op + TakeProfit * Point) 
                    {
                     if (OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage,clrNONE))
                     Print("Virt TP Buy");
                    }
                  if(b>=2)
                    {
                     if(tk==BuyPriceMaxTic || tk==BuyPriceMinTic)
                      if(Bid<AwerageBuyPrice && tp!=AwerageBuyPrice)
                        if(!OrderModify(tk,op,OrderStopLoss(),AwerageBuyPrice,0,clrNONE))
                           Print("OrderModify error #",GetLastError());

                     if(tk!=BuyPriceMaxTic && tk!=BuyPriceMinTic && tp!=0)
                      if(!OrderModify(tk,op,0,0,0,clrNONE))
                        Print("OrderModify error #",GetLastError());
                    }
                 }
               if(OrderType()==OP_SELL)
                 {
                  if(s>0 && TakeProfit!=0 && Ask<=op - TakeProfit * Point) 
                    {
                     if (OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage,clrNONE))
                     Print("Virt TP Sell");
                    }
                  if(s>=2)
                    {
                     if(tk==SelPriceMaxTic || tk==SelPriceMinTic)
                       if(Ask>AwerageSelPrice && tp!=AwerageSelPrice)
                        if(!OrderModify(tk,op,OrderStopLoss(),AwerageSelPrice,0,clrNONE))
                           Print("OrderModify error #",GetLastError());

                     if(tk!=SelPriceMaxTic && tk!=SelPriceMinTic && tp!=0)
                      if(!OrderModify(tk,op,0,0,0,clrNONE))
                        Print("OrderModify error #",GetLastError());
                    }
                 }
avatar

OSS5

  • 2 июня 2024, 13:14
0
Наверное стоит открыть новый топик, здесь за эксперты Shamana идет речь.
avatar

OSS5

  • 2 июня 2024, 13:05
0
Андрей, вот хороший вы человек, но почему эксперт без названия. Назвал его «kvashnin007Shaman».
Спасибо, поглядим.
avatar

OSS5

  • 2 июня 2024, 07:51
0
Тралим SL и ТР...

Делал смиллион уже такое и в открытом коде, но вот как называется эксперт не помню.
avatar

OSS5

  • 2 июня 2024, 07:46
+1
День добрый.
Сколько у вас лимиток, интересно стало. Поручусь.
avatar

OSS5

  • 1 июня 2024, 19:23
0
Вот смиллиона трал эквити
//+------------------------------------------------------------------+
//|                               Copyright © 2015, Vladimir Hlystov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, http://cmillion.ru"
#property link      "cmillion@narod.ru"
#property version   "1.00"
#property strict

extern double  Total_Profit_Start   = 5000;  //Сумма в USD от которой стартовать трал по Профиту
extern double  Profit_Percent       = 1;     //% Процент профита для старта трала
extern double  Profit_Rollback      = 0.5;   //% Процент отката для закрытия всех ордеров

double EquityStart=0;
bool Trall=false;
int slippage=1000;
//-------------------------------------------------------------------- 
int init() 
{ 
   double AE = AccountEquity();
   EquityStart=AE+AE/100*Profit_Percent;
   return(0);
}
//+------------------------------------------------------------------+
int start()
{
   if (!IsTradeAllowed()) return(0);

   double AB = AccountBalance();
   double AE = AccountEquity();

   DrawLABEL("Balance",1,5,20,Lime,StringConcatenate("Balance ",DoubleToStr(AB,2)));
   DrawLABEL("Equity" ,1,5,40,Lime,StringConcatenate("Equity ",DoubleToStr(AE,2)));

   if (OrdersTotal()==0) {Trall=false;EquityStart=AE+AE/100*Profit_Percent;}
   if (!Trall)
   {  
      DrawLABEL("Equity Start",1,5,60,Lime,StringConcatenate("Equity Start Trall ",DoubleToStr(MathMax(EquityStart,Total_Profit_Start),2)));
      if (AE>=EquityStart && AE>=Total_Profit_Start) //запуск тралла по эквити
      {  
         EquityStart=AE+AE/100*Profit_Percent;
         Alert("Запуск трейлинга Equity, Equity = "+DoubleToStr(AE,2));
         Trall=true;
      }
   }
   if (Trall)
   {  
      if (EquityStart<AE+AE/100*Profit_Percent) EquityStart=AE+AE/100*Profit_Percent;
      DrawLABEL("Equity Start",1,5,0,Red,StringConcatenate("Трал Equity закрытие при ",DoubleToStr(EquityStart-EquityStart/100*Profit_Rollback,2)));
      if (AE<=EquityStart-EquityStart/100*Profit_Rollback)
      {  
         CloseAll();
         Trall=false;
         AE=AccountEquity();
         EquityStart=AE+AE/100*Profit_Percent;
      }
      return(0);
   }
return(0);
}
//------------------------------------------------------------------
int deinit()
{
   if (!IsTesting()) 
   {
      ObjectsDeleteAll(0);
   }
   return(0);
}
//-------------------------------------------------------------------
void DrawLABEL(string name, int CORNER, int X, int Y, color clr, string Name)
{
   if (ObjectFind(name)!=-1) ObjectDelete(name);
   ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
   ObjectSet(name, OBJPROP_CORNER, CORNER);
   ObjectSet(name, OBJPROP_XDISTANCE, X);
   ObjectSet(name, OBJPROP_YDISTANCE, Y);
   ObjectSetText(name,Name,10,"Arial",clr);
}
//+------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//------------------------------------------------------------------
double CloseAll()
{
   bool error=true;
   int OMN,nn,OT,Ticket,j;
   double loss=0;
   while(true)
   {
      for (j = OrdersTotal()-1; j >= 0; j--)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            OT = OrderType();
            OMN=OrderMagicNumber();
            Ticket = OrderTicket();
            if (OT>1) error=OrderDelete(Ticket);
            if (OT==OP_BUY) 
            {
               error=OrderClose(Ticket,OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),(int)MarketInfo(OrderSymbol(),MODE_DIGITS)),slippage,Blue);
               if (error) loss+=OrderProfit();
            }
            if (OT==OP_SELL) 
            {
               error=OrderClose(Ticket,OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),(int)MarketInfo(OrderSymbol(),MODE_DIGITS)),slippage,Red);
               if (error) loss+=OrderProfit();
            }
         }
      }
      int n=0;
      for (j = 0; j < OrdersTotal(); j++)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            OT = OrderType();
            n++;
         }
      }
      if (n==0) break;
      nn++;
      if (nn>10) 
      {
         Alert(Symbol()," Не удалось закрыть все сделки, осталось еще ",n);
         return(loss);
      }
      Sleep(1000);
      RefreshRates();
   }
   return(loss);
}
//--------------------------------------------------------------------
avatar

OSS5

  • 26 мая 2024, 03:48
0
День добрый!
Во вложении нет индикатора «KVN_KAE_U_Dif3», есть эксперт «ShamanNew v_2».

поэтому при тестировании в логах

Скиньте еще раз, но уже индикатор. Спасибо.
avatar

OSS5

  • 26 мая 2024, 03:44
0
Оперативно. Спасибо Андрей.
avatar

OSS5

  • 22 мая 2024, 03:07
0
Вот о чем я

идет постоянная модификация.
avatar

OSS5

  • 3 мая 2024, 01:43
0
идет постоянная модернизация тп

217 строку if(b>=1 && tp==0) заменить на if(b<=2 && tp==0)
240 строку if(s>=1 && tp==0) заменить на if(s<=2 && tp==0)

avatar

OSS5

  • 2 мая 2024, 16:30
0
Просьба к вам подписывать название эксперта, к примеру:
либо в названии эксперта, либо в коде «Vers.01»,«Vers.02»,«Vers.03» и так далее, что бы не путаться.
Спасибо за понимание.
avatar

OSS5

  • 2 мая 2024, 16:11
0
Спасибо за эксперта.

На всех тиках всегда тестил. На выходных попробую по вашей подсказке. Я ещё добавил в код, выставление одного ордера на свечу (не так грузит депо).
avatar

OSS5

  • 2 мая 2024, 16:06
+1
Тут сова www.opentraders.ru/downloads/3828/, интересно работает. Настройки по умолчанию ни о чем.
avatar

OSS5

  • 25 апреля 2024, 14:08
0
Привет!
Всё работает.


Ищите ошибку у себя.
avatar

OSS5

  • 12 февраля 2024, 11:02
0
Отправил, ещё раз.
avatar

OSS5

  • 5 февраля 2024, 15:30
0
Проверял одну идею, может понравится. Эксперт чертит линии на предыдущем баре (тф бара выбираем) по хаю и по лоу, если цена выше хая — продажи, ниже- лоу — покупки.

Эксперт здесь: www.opentraders.ru/downloads/3781/
avatar

OSS5

  • 5 февраля 2024, 15:07
0

Не дошла что ли?
avatar

OSS5

  • 5 февраля 2024, 14:50
0
Я же на почту скидывал версию 2.2, там исправил трал. От смиллиона присунул.
avatar

OSS5

  • 5 февраля 2024, 14:17
+1
*hi* 
Чтобы после теста инфо панелька оставалась, заменить деинит на:
void OnDeinit(const int reason)
  {
   if(!IsTesting()) ObjectsDeleteAll();
   Comment("");
  }
avatar

OSS5

  • 3 февраля 2024, 08:54