0
напрасно настолько усложнили. теперь в вычислениях черт ногу сломит:



www.opentraders.ru/downloads/2616/
avatar

AM2

  • 6 мая 2020, 20:55
0
подправил входы чтобы не было перезахода:



www.opentraders.ru/downloads/2651/
avatar

AM2

  • 5 мая 2020, 14:40
0
а какие акции из портфеля в минус ушли?
avatar

AM2

  • 5 мая 2020, 12:27
0
В терминале есть линия которая отображается на всех ТФ

где такая именно?
avatar

AM2

  • 5 мая 2020, 09:43
0
Ордер селл открывается, если 2 свечи подряд(1 и 2) медвежьи, хай свечи 1 больше хая предыдущей свечи (свеча 0), размер тел свечей 1 и 2 не меньше указанного в настройках и сумма тел свечей 1 и 2 не меньше указанной в настройках.

Для ордеров бай — всё зеркально.
Тейк встроен в код и равен сумме тел свечей 1 и 2.
Стоп встроен в код и ставится за хаем/лоем свечи 1.

Доработка:

Размеры тел свечей 1 и 2 нужно считать от уровня закрытия предыдущей свечи до уровня закрытия измеряемой. То есть тело свечи 1 будет равно расстоянию от уровня закрытия свечи 0 до уровня закрытия свечи 1

тело свечи 2 = расстояние от уровня закрытия свечи 1 до уровня закрытия свечи 2.
Этим самым мы исправляем влияние гэпов на размеры свеч, так как торговля предполагается на дневном ТФ.

В настройках всё же нужны стоп и тейк: «суперлось» и «супертейк». Они будут увеличивать или уменьшать (при отрицательных значениях в настройках) нынешние стоп и тейк, встроенные в код(язь=тело1+тело2, лось=хай/лоу свечи1+спред).

Так как суммы тел свечей 1 и 2 будут часто сильно отличаться у разных ордеров, то значения «суперлося» и «суперязя» в настройках прошу сделать в % от встроенных.

Например, в настройках «суперлось» и суперязь" равны 0. Значит, стоплосс и тейкпрофит рассчитываются как сейчас.

Другой вариант: «суперлось» = 10, «суперязь» = -20
В этом случае стоплосс увеличивается на 10%, а тейкпрофит уменьшается на 20%.





avatar

AM2

  • 5 мая 2020, 09:19
0
пробили канал — бай:



сформировался новый, его пробили, закрыли бай, открыли селл:



www.opentraders.ru/downloads/2651/
avatar

AM2

  • 5 мая 2020, 09:12
0
пишите тз. с чужим кодом не работаю.
avatar

AM2

  • 5 мая 2020, 08:33
0
1. При удалении уровней с графика Д1, на меньших ТФ уровни не удаляются.


удалил с Д1:



ушли и с Н1:

avatar

AM2

  • 5 мая 2020, 08:24
0
3. Закидываю уровни на график евро доллар, но они отображаются на графике евро франк.


на еврофранке ничего нет:

avatar

AM2

  • 5 мая 2020, 08:21
0
2. На графике Н1 уровни вообще не отображаются.


поставил индикатор на Д1:



нарисовал уровень на Н1:

avatar

AM2

  • 5 мая 2020, 08:17
0
я попытался объяснить почему не берусь. бесполезно
avatar

AM2

  • 4 мая 2020, 10:31
0
сейчас много заказов, а чем больше заказов тем больше отказов. кому то нужно отказывать т.к. я все не переработаю. если даже и берусь делать по несколько заказов в день то сыпятся пинки со всех сторон, мне это не надо.
avatar

AM2

  • 4 мая 2020, 10:07
0
вам нужно лучше самостоятельно освоить программирование или обращаться к другому специалисту, т.к. я делаю только то что можно быстро сделать
avatar

AM2

  • 4 мая 2020, 09:46
0
У меня не получается сложить название уровня с номером цикла.

Как правильно?


так:


   for(int i=0; i<ArraySize(level); i++)
     {
      PutHLine("Level "+(string)i,level[i],Red);
     }





//+------------------------------------------------------------------+
//|                                                        Level.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

input double Lots    = 0.1;      // лот
input int StopLoss   = 0;        // лось
input int TakeProfit = 50;       // язь
input int Slip       = 30;       // реквот
input int Magic      = 123;      // магик

input double Level1  = 1.07;
input double Level2  = 1.075;
input double Level3  = 1.08;
input double Level4  = 1.085;
input double Level5  = 1.09;
input double Level6  = 1.095;

datetime t=0;
double level[6];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   level[0]=Level1;
   level[1]=Level2;
   level[2]=Level3;
   level[3]=Level4;
   level[4]=Level5;
   level[5]=Level6;

   for(int i=0; i<ArraySize(level); i++)
     {
      PutHLine("Level "+(string)i,level[i],Red);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//ObjectsDeleteAll(0,0,OBJ_HLINE);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      for(int i=0; i<ArraySize(level); i++)
        {
         if(Close[1]>level[i] && Open[1]<level[i])
           {
            PutOrder(0,Ask);
           }
         if(Close[1]<level[i] && Open[1]>level[i])
           {
            PutOrder(1,Bid);
           }
        }
      t=Time[0];
     }
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 4 мая 2020, 09:34
0
Он вообще не появляется в списке индикаторов. После компиляции его тоже нет.

вот компилируется и в индикаторах есть:



код:


//+------------------------------------------------------------------+
//|                                                       Charts.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   double pr=0,p1=0,p2=0;
   datetime t1=0,t2=0;
   string nm="",sm="";

   for(int i=0; i<ObjectsTotal(0,-1); i++)
     {
      if(ObjectGetInteger(0,ObjectName(0,i),OBJPROP_TYPE)==OBJ_HLINE)
        {
         nm=ObjectName(0,i);
         pr=ObjectGetDouble(0,ObjectName(0,i),OBJPROP_PRICE);
         sm=_Symbol;
         Print("\n Name: ",nm);
         Print("Price: ",pr);
         Print("Symbol: ",sm);
        }
     }

   int k=0;
   long curr=0,prev=ChartFirst();

   while(k<33)
     {
      curr=ChartNext(prev);
      if(curr<0)
         break;

      if(nm!="" && ChartSymbol(curr)==sm)
        {
         ObjectCreate(curr,nm,OBJ_HLINE,0,0,NormalizeDouble(pr,_Digits));
        }
      if(nm=="")
        {
         ObjectsDeleteAll(curr,0,OBJ_HLINE);
        }

      prev=curr;
      k++;
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


avatar

AM2

  • 4 мая 2020, 07:22
0
уровни из настроек передаются в массив и при пересечении уровня вверх покупаем, вниз продаем:



www.opentraders.ru/downloads/2649/
avatar

AM2

  • 4 мая 2020, 07:16
0
завтра набросаю с утра
avatar

AM2

  • 3 мая 2020, 22:20