0
да завис и завис
в любой момент мы его прихлопнем прибылью, но лось настороже стоять будет
а вообще есть идея как от висяков избавляться(советник-закрывалка), но если я все захочу разом то Андрей проклянет меня на mql-ском)))
avatar

dok-45

  • 14 октября 2020, 18:23
0
Андрей, просьба вишенку посадить на самый вверх
Если прям можно-можно
Дополнительно в советнике предусмотреть отдельно блок закрытия
Т.Е.
ордера открываем по CurrentTime, а закрываем с выбором: CurrentTime, 1H, 4Н, Day
Если будет проще в написании, то блок открытия и блок закрытия можно поменять местами, т.е. открываемся на заданном тайме, а закрываемся на текущем
avatar

dok-45

  • 14 октября 2020, 18:19
0
:D 
а вот тут одна вишенка будет
если Андрей возьмется
PS вишня ниже
avatar

dok-45

  • 14 октября 2020, 18:13
0
Андрей, премного благодарен!
avatar

dok-45

  • 14 октября 2020, 05:13
0
Отставить панику и прочие дезорганизующие моменты!!!
Была идея которая должна работать уже чисто визуально
1 лайк из 549 просмотров(на момент написания коммента) это подтверждает!
Но «не получилось, не фартануло» (с)
Скрин в работе, есть 2 момента, к которому вопрос — а почему? — противоречие ТЗ, но даже если это поправить кривая роста-выроста будет еще плавнее…
только не в тот угол…
PS менять местами B и S — как менять руки, но содержимое такое же)
avatar

dok-45

  • 3 октября 2020, 03:18
0
точно, перевертываем картинку и идем обналичивать)))
avatar

dok-45

  • 2 октября 2020, 16:20
0
Slava78, тут надо подумать и про перевертывание есть пока идея, пересчитаю пока более точно
Визуально, на глазок, все красиво было
avatar

dok-45

  • 2 октября 2020, 16:19
0
Андрей, я мешок для деняк не успел дошить))
avatar

dok-45

  • 2 октября 2020, 16:17
0
отлично!!!
заранее спасибы!
avatar

dok-45

  • 30 сентября 2020, 21:13
0
Андрей, возьмете в работу?
avatar

dok-45

  • 30 сентября 2020, 17:30
0
Андрей ну конечно же)))
чего только второпях не напишешь)))
Пока брать не стоит, не против если я более корректно и полно выложу ТЗ чуть позднее в следующем заказе?
а это можно удалить(к модератору)
avatar

dok-45

  • 16 сентября 2020, 19:07
0
Андрей, добрый день
я писал заказ, мне его сделали на стороннем форуме
подумал может быть кому нибудь тоже пригодится
а как в базу закинуть не знаю
так что на усмотрение модераторов
avatar

dok-45

  • 7 сентября 2020, 07:39
0
спасибо за подсказку
avatar

dok-45

  • 7 сентября 2020, 07:37
0
#property copyright "Programming © 2014, http://cmillion.narod.ru"
#property link      "cmillion@narod.ru"
#property strict
#property description "Советник поддерживает баланс лотов встречных направлений по тому инструменту, на котором он расположен"
#property description "Пример имеем 3 лота Buy и 1 Sell, советник сразу добавит 2 лота Sell и будет поддерживать этот баланс все время"

extern double DeltaLot = 0.02;
//+------------------------------------------------------------------+
void OnTick(void)
{
   double LB=0,LS=0;
   int b=0,s=0;
   for (int i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol())
         { 
            int tip = OrderType(); 
            if (tip==OP_BUY)             
            {  
               LB  += OrderLots();
               b++; 
            }                                         
            if (tip==OP_SELL)        
            {
               LS  += OrderLots();
               s++;
            } 
         }
      }
   }
   //---
   Comment(b," Buy  ",DoubleToStr(LB,2)," lot",
      "\n",s," Sell  ",DoubleToStr(LS,2)," lot");
   //---
   
   if(MathAbs(LS-LB)<DeltaLot) return;

   if (LS<LB)
   {
      if (OrderSend(Symbol(),OP_SELL,NormalizeDouble(LB-LS,2),NormalizeDouble(Bid,Digits),100,0,0,NULL,0,0,CLR_NONE)==-1)
         Print("Ошибка ",GetLastError()," открытия ордера ");
   }
   if (LS>LB)
   {
      if (OrderSend(Symbol(),OP_BUY,NormalizeDouble(LS-LB,2),NormalizeDouble(Ask,Digits),100,0,0,NULL,0,0,CLR_NONE)==-1)
         Print("Ошибка ",GetLastError()," открытия ордера ");
   }
}
//------------------------------------------------------------------
int deinit()
{
   Comment("");
   return(0);
}
//+------------------------------------------------------------------+


можт кому надо
avatar

dok-45

  • 4 сентября 2020, 21:28
+1
//+------------------------------------------------------------------+
//|                               Copyright © 2017, Vladimir Hlystov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, http://cmillion.ru"
#property link      "cmillion@narod.ru"
#property version   "2.00"
#property strict
#property description "Советник открывает пары встречных позиций через указанный шаг"
//-------------------------------------------------------------------
enum so 
{
   s1=1,  // buy
   s2=2, // sell
   s3=3, // buy + sell
};
input so       tt   = 3;//направление
extern int    Step            = 10;    //шаг между ордерами
extern double Lot             = 0.1;   //лот

extern int    Takeprofit      = 50,    //тейкпрофит
              Stoploss        = 45;    //стоплосс

extern int    MaxOrders       = 10;
extern int    Magic           = 0;
extern int    slippage        = 3;
//-------------------------------------------------------------------
string AC;
double MINLOT,MAXLOT;
//-------------------------------------------------------------------
void OnTick()
{
   if (!IsTradeAllowed()) return;
   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   //---
   double MaxOrderBuy=0,MinOrderSell=0,MinOrderBuy=0,MaxOrderSell=0;
   double OSL,OTP,OOP,SL=0,TP=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         { 
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               b++; 
               if (MaxOrderBuy < OOP || MaxOrderBuy==0) MaxOrderBuy = OOP;
               if (MinOrderBuy > OOP || MinOrderBuy==0) MinOrderBuy = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - Stoploss   * Point,Digits);
               } 
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
               } 
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            }                                         
            if (tip==OP_SELL)        
            {
               s++;
               if (MinOrderSell > OOP || MinOrderSell==0) MinOrderSell = OOP;
               if (MaxOrderSell < OOP || MaxOrderSell==0) MaxOrderSell = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + Stoploss   * Point,Digits);
               }
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - Takeprofit * Point,Digits);
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            } 
         }
      }
   }
   if (b+s>=MaxOrders) return;
   if (((MinOrderBuy -Step*Point>Ask || MinOrderBuy==0)&&(tt==1 || tt==3)) || 
        (MaxOrderSell+Step*Point<Bid                   &&(tt==2 || tt==3)))
   {
      if (tt==1 || tt==3) 
         if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
      if (tt==2 || tt==3) 
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
   }
}
//------------------------------------------------------------------


гляньте не оно?
не знаю как готовое выложить
avatar

dok-45

  • 4 сентября 2020, 11:57
0
//+------------------------------------------------------------------+
//|                               Copyright © 2017, Vladimir Hlystov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, http://cmillion.ru"
#property link      "cmillion@narod.ru"
#property version   "2.00"
#property strict
#property description "Советник открывает пары встречных позиций через указанный шаг"
//-------------------------------------------------------------------
enum so 
{
   s1=1,  // buy
   s2=2, // sell
   s3=3, // buy + sell
};
input so       tt   = 3;//направление
extern int    Step            = 10;    //шаг между ордерами
extern double Lot             = 0.1;   //лот

extern int    Takeprofit      = 50,    //тейкпрофит
              Stoploss        = 45;    //стоплосс

extern int    MaxOrders       = 10;
extern int    Magic           = 0;
extern int    slippage        = 3;
//-------------------------------------------------------------------
string AC;
double MINLOT,MAXLOT;
//-------------------------------------------------------------------
void OnTick()
{
   if (!IsTradeAllowed()) return;
   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   //---
   double MaxOrderBuy=0,MinOrderSell=0,MinOrderBuy=0,MaxOrderSell=0;
   double OSL,OTP,OOP,SL=0,TP=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         { 
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               b++; 
               if (MaxOrderBuy < OOP || MaxOrderBuy==0) MaxOrderBuy = OOP;
               if (MinOrderBuy > OOP || MinOrderBuy==0) MinOrderBuy = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - Stoploss   * Point,Digits);
               } 
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
               } 
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            }                                         
            if (tip==OP_SELL)        
            {
               s++;
               if (MinOrderSell > OOP || MinOrderSell==0) MinOrderSell = OOP;
               if (MaxOrderSell < OOP || MaxOrderSell==0) MaxOrderSell = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + Stoploss   * Point,Digits);
               }
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - Takeprofit * Point,Digits);
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            } 
         }
      }
   }
   if (b+s>=MaxOrders) return;
   if (((MinOrderBuy -Step*Point>Ask || MinOrderBuy==0)&&(tt==1 || tt==3)) || 
        (MaxOrderSell+Step*Point<Bid                   &&(tt==2 || tt==3)))
   {
      if (tt==1 || tt==3) 
         if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
      if (tt==2 || tt==3) 
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
   }
}
//------------------------------------------------------------------
avatar

dok-45

  • 4 сентября 2020, 11:56
0
volodymyr67, к сожалению я не программист
Это был взгляд со стороны
По программированию к здешним умельцам
PS сам сижу жду что мне ответят на мою просьбу
avatar

dok-45

  • 29 мая 2020, 17:21
0
как вариант доработки — советник смотрит на последний открытый ордер — если он плюсовой то его не закрывать(через флажок true-falce). Так серия положительных будет наращиваться.
Сугубо ИМХО
avatar

dok-45

  • 29 мая 2020, 09:27
0
Андрей, спасибо за отклик!
Люди которые не кодеры, существа вредные.
Как говорят программисты «проще написать с нуля чем переделывать существующее»
Поэтому и прошу написать с нуля
avatar

dok-45

  • 3 марта 2019, 15:49