0
шутку понял
avatar

Lerdon

  • 5 апреля 2024, 18:30
0
даже на затяжных трендах бывают откаты. Но даже учитывая это, речь идет о сопоставлении нескольких ТФ, как известно сигналы на старших ТФ значительно сильнее сигналов на текущем ТФ. Я торгую вручную за месяц умудрился 110% сделать не напрягаясь особо, по такой вот стратегии из 500$ до 1078$, и вот у меня возник вопрос, насколько эта стратегия жизнеспособна, для этого нужен советник чтобы проверить эту теорию на дистанции. Проверить, а не торговать именно советником. Может в дальнейшем если именно так встанет вопрос, то советника модернизирую. А пока торгую вручную следуя этой стратегии. Ключевое на что стоит обратить внимание что эти индикаторы не перерисовывают жестко, поэтому можно ориентироваться на историю.
avatar

Lerdon

  • 5 апреля 2024, 14:30
0
За это отвечает мультитаймфрейм. И я вас не заставляю пользоваться этим ботом, я его для себя делаю, а не для вас. И я вас не просил вмешиваться в это дело. Не нравится идея, игнорируйте.
avatar

Lerdon

  • 5 апреля 2024, 13:10
0
я не сказал что грааль, я лишь указал на возможные проблемы. Фильтр флэта в котором сов не будет открывать сделки либо будет торговать используя иную стратегию, нужно наверное продумать сразу. Флэты бывают разной продолжительности. Но дело Ваше
avatar

Lerdon

  • 1 февраля 2023, 17:27
0
ох и сливать он же он будет во флэте…
avatar

Lerdon

  • 1 февраля 2023, 15:58
0
Забыл добавить, сделки должны закрываться в процентах прибыли от депозита. например 2% при депозите 100$ прибыль будет зафиксирована на отметке 2$
avatar

Lerdon

  • 9 января 2023, 11:49
0
советник работает вместе с ATR
avatar

Lerdon

  • 8 ноября 2022, 20:33
0
Спасибо большое за Вашу работу!)
avatar

Lerdon

  • 8 ноября 2022, 14:32
0
если цена за последние N свечей падала или росла.
формула High свечи текущей — High свечи N часов назад — если положительный остаток — покупка, отрицательный продажа.
avatar

Lerdon

  • 7 ноября 2022, 14:33
0
Смысл советник чтобы в нем было два параметра
x
y
x — это размер убытка на одну позицию, при достижении которого все позиции закрываются.
если выставлен параметр 5 то в случае например 3 одновременно открытых позиций все они закроются если убыток составит 15% так как 5(выставленный параметр x) * количество ордеров = общий убыток 15%. если открыто 4 сделки до при 20% убытка позиции закроются. и т.д.
y — это размер прибыли на одну позицию при которой закроются все позиции.
Важно именно что советник расчитывал указанный параметр в соотношении с количеством ордеров.
avatar

Lerdon

  • 28 августа 2022, 16:58
0
Благодарствую, маэстро)
avatar

Lerdon

  • 14 июля 2022, 06:25
0
и к нему добавить только лишь две функции выше
avatar

Lerdon

  • 1 июня 2022, 21:32
0
Вот ТЗ целиком…
Советник

Расчет для определения тренда\флэта.

Расчет предназначен для таймфрейма H1
Изначальный анализ идет на недельном периоде в 50 свечей.
Далее рассчитывается расстояние от High до Low каждой свечи из 50 свечей, затем все складывается и делится на их число(50), то есть выясняем средний размер недельной свечи на промежутке в 50 свечей. Полученное значение делим еще раз на 2 и получаем значение Y которое система будет подставлять в следующие формулы:
Система отсчитывает последние 120 баров на текущем ТФ. После чего берет во внимание точки HIGH и LOW на заданном промежутке. Именно промежутке, то есть берется самая высокая точка за последние 120 баров и самая низкая.
Далее идет расчет минимального движения цены для определения тренда по формуле:
HIGH(периода в 120 баров) – LOW(периода в 120 баров) = Х > Y пунктов на рынке тренд.
HIGH(периода в 120 баров) – LOW(периода в 120 баров) = Х =< Y на рынке флет.
Если тренд то система учитывает положение текущей цены, к каком пику она ближе если к HIGH значит тренд бычий берутся во внимание только BUY ордера. Если ближе к LOW только SELL ордера. Формула для примера показана ниже:
В случае тренда открывает сделка в сторону тренда, с ограничением убытка за 55% уровнем диапазона(если не удастся сделать то можно поставить обычный SL.) если флет торговля не ведется.

Расчет автоматических STOP LOSS и TRALLING STOP

Y*H=Tralling STOP
H указывается в параметрах робота(значение от 0 до 1).
Y это рассчитанная недельная норма движения цены.

При отключенном параметре Tralling Stop только профит, установка предполагает одновременное значение STOP LOSS и TRALLING STOP.

Автоматический расчет времени слежения позиции.

Для поля «Время закрытия в часах».
Y*2=K
X/120(свечей для расчета H1) = L
K/L=N.
N- это значение для поля «Время закрытия в часах».

Автоматический расчет ТП

При выставлениии ордера, для рассчёта ТП берём во внимание следующие показатели(как пример):

1.Недельная норма движения=951(GBPUSD)

2.Рассчитываем этот параметр для получения кеф. по следующей схеме:

951/5/150 = 1,268(округляем), кеф.=1,3

(где 951-недельная норма движения,

5-количаство учитываемых торговых дней(параметр нужно вынести в блок управления),

150-это фиксированный делитель для получения кеф.

3.1,3 — это и будет кеф. для дальнейшего рассчёта.

4.Вычислив кеф. вычисляем ТП исходя из рассчитаного уже трейлинг стопа(стоп лосс)

5.Рассчитаный трейлинг стоп(стоп лосс) = 665

6.Рассчёт ТП:

665*1,3=864,5(округляем),

где 665-рассчитаный трейлинг стоп(стоп лосс),

1,3 — это кеф. рассчитаный в п.2

6.1 Полученый результат 864,5-это и будет являться ТП при выставлении ордера.

7.Если изменяются рассчёты(показатели) по Недельной норме движения и(или) Трейлинг стопу(стоп лоссу),

то соответственно пересчитывается(переставляется) и тейк профит…
avatar

Lerdon

  • 1 июня 2022, 21:31
0
речь вот об этом роботе zakaz.opentraders.ru/66263.html
ранее создавался
avatar

Lerdon

  • 1 июня 2022, 18:31
0
решили усреднение прикрутить? по моему перегружаете бота «новыми функциями» я например наоборот часть отключил чтобы не мешали.
avatar

Lerdon

  • 31 января 2022, 19:21
0
Я скорректировал часть расчетов для более менее «адекватных» цифр исходя из движений цены. В коде обрезан начала и конец они у вас есть там ничего не менял
avatar

Lerdon

  • 19 января 2022, 19:49
0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Y(){
   double y=0;
   for(int i=0; i<CountW1; i++)
     {
      y+=(iHigh(NULL,PERIOD_W1,i)-iLow(NULL,PERIOD_W1,i))/_Point;
     }
   return(y/(CountW1*1.3));
  }
//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions() { 
  bool rez;
  int TrailingStop = (int)NormalizeDouble((Y()*H),0);// Фиксированный размер трейлинг стопа
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderMagicNumber()==Magic) {
        if (OrderSymbol()==Symbol()) {
          if (OrderType()==OP_BUY) {
            if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*Point) {
              if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
                rez=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*_Point,OrderTakeProfit(),0,clrBlue);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*Point) {
              if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) {
                rez=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*_Point,OrderTakeProfit(),0,clrRed);
              }
            }
          }
        }
      }
    }
  }
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CloseTime(){
     int count=0;
     double  K=0, L=0, N=0;
     double lo=Low[iLowest(NULL,0,MODE_LOW,CountH1,1)];
     double hi=High[iHighest(NULL,0,MODE_HIGH,CountH1,1)];
     double x=(hi-lo)/_Point;
     K=NormalizeDouble(Y()*1,0);
     L=x/120;
     N=K/L;
     count=(int)NormalizeDouble(N,0);  // время закрытия в часах
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseTimeAll(int ot=-1){
   bool cl=1;
   int closeTime=CloseTime();
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(TimeCurrent()-OrderOpenTime()>closeTime*3600){
               if(OrderType()==0 && (ot==0 || ot==-1))
                 {
                  RefreshRates();
                  cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
                 }
               if(OrderType()==1 && (ot==1 || ot==-1))
                 {
                  RefreshRates();
                  cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1)){
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1)){
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double lo=Low[iLowest(NULL,0,MODE_LOW,CountH1,0)];
   double hi=High[iHighest(NULL,0,MODE_HIGH,CountH1,0)];
   double midl=(hi+lo)/2;
   double x=(hi-lo)/_Point;
   
   if(FletClose && x<Y() && CountTrades()!=0)CloseAll();  
   if(_CloseTime)CloseTimeAll();     
   if(Trailing)TrailingPositions();  

   if(CountTrades()<1 && x>Y())
     {
      if(Bid<hi && Bid>(hi+lo)/2)
         PutOrder(0,Ask);
      if(Bid>lo && Bid<(hi+lo)/2)
         PutOrder(1,Bid);
     }
     /*
Comment(   "\n ПОКАЗАТЕЛИ РАССЧИТАННЫЕ СИСТЕМОЙ ATS",     
           "\n Недельная норма движения : --  ",NormalizeDouble(Y(),0),
           "\n Текущее движение на H1 : --  ",NormalizeDouble(x,0),
           "\n Рассчитанный Трейлинг-стоп(Stop loss): --  ",NormalizeDouble(Y()*H,0),
           "\n Рассчетное время закрытия позиции : --  ",NormalizeDouble(CloseTime(),0));
 */

 /*
При выставлениии ордера, для рассчёта ТП берём во внимание следующие показатели(как пример):
1.Недельная норма движения=951(GBPUSD)
2.Рассчитываем этот параметр для получения кеф. по следующей схеме: 
  951/5/100 = 1,902(округляем), кеф.=1,9 
     (где 951-недельная норма движения, 
     5-количаство учитываемых торговых дней(параметр нужно вынести в блок управления), 
     100-это фиксированный делитель для получения кеф.
3.1,9 — это и будет кеф. для дальнейшего рассчёта.
4.Вычислив кеф. вычисляем ТП исходя из рассчитаного уже трейлинг стопа(стоп лосс) 
5.Рассчитаный трейлинг стоп(стоп лосс) = 665
6.Рассчёт ТП: 
   665*1,9=1263,5(округляем), 
      где 665-рассчитаный трейлинг стоп(стоп лосс), 
      1,9 — это кеф. рассчитаный в п.2
6.1 Полученый результат 1263-это и будет являться ТП при выставлении ордера.
7.Если изменяются рассчёты(показатели) по Недельной норме движения и(или) Трейлинг стопу(стоп лоссу), 
  то соответственно пересчитытывается(переставляется) и тейк профит…
*/
    double kef = NormalizeDouble(Y()/(n_Day*150),1);
    int TrailingStop = (int)NormalizeDouble((Y()*H),0);// Фиксированный размер трейлинг стопа    
    int TP = (int)NormalizeDouble(TrailingStop*kef,0); // Рассчитанный Тейк Профит 
    
   SetLabel("Label1", "ПОКАЗАТЕЛИ ATS.H22 TALLROCK", LineColor, 5, 75, corner, raz);
   SetLabel("Label2", "Недельная норма движения : --  "+DoubleToStr((Y())/10,0)+" пунктов", LineColor, 5, 60, corner, raz);
   SetLabel("Label3", "Текущее движение на H1 : --  "+DoubleToStr((x)/10,0)+" пунктов", LineColor, 5, 45, corner, raz); 
   SetLabel("Label4", "Рассчитанный Трейлинг-стоп(Stop loss): --  "+DoubleToStr((Y()*H)/10,0)+" пунктов", LineColor, 5, 30, corner, raz);
   SetLabel("Label5", "Рассчетное время закрытия позиции : --  "+DoubleToStr(CloseTime(),0)+" часов", LineColor, 5, 15, corner, raz);
   SetLabel("Label12", "Рассчитанный КЕФ : --  "+DoubleToStr(kef,1)+" ", LineColor, 5, 30, 3,  raz);  
   SetLabel("Label13", "Рассчитанный Тейк Профит : --  "+DoubleToStr(TP/10,0)+" пунктов", LineColor, 5, 15, 3,  raz);  
     
//==================================================  
   SetHLine(clrRed, "lo", lo, STYLE_SOLID, 3); 
   SetHLine(clrBlack, "midl", midl, STYLE_SOLID,3);  
   SetHLine(clrBlue, "hi", hi, STYLE_SOLID, 3);  
  
   double _lo=(lo+midl)/2;// линия Middle.L
   double _hi=(hi+midl)/2;// линия Middle.H
   
   double _lov=Low[iLowest(NULL,0,MODE_LOW,_CountH1,0)];//High и Low на промежутке 120 свечей на графике H1 за последние 48 часов.
   double _hig=High[iHighest(NULL,0,MODE_HIGH,_CountH1,0)];//High и Low на промежутке 120 свечей на графике H1 за последние 48 часов.
 
   if(lo<_lov && hi>_hig){
          SetHLine(clrGreen, "_lo", _lo, STYLE_SOLID, 2); 
          SetHLine(clrMagenta, "_hi", _hi, STYLE_SOLID, 2);     
          SetLabel("Label6","ПОНИЖЕННАЯ ВОЛАТИЛЬНОСТЬ", clrPurple, 5, 15, 0, 17);         
         }
   else{
        SetLabel("Label6","ТРЕНД", clrGreen, 5, 10, 0, 17);
        }   
  }
 
avatar

Lerdon

  • 19 января 2022, 19:48
0
попробую посчитаю еще кстати тему разработал связанную с торговлей во флете.
avatar

Lerdon

  • 19 января 2022, 19:05
0
так выйдет он по тейку и снова же зайдет в рынок
avatar

Lerdon

  • 19 января 2022, 18:46