0
на 12-е. только напомните за день 2
avatar

AM2

  • 4 июля 2021, 06:56
+2
Рельсы, баба и график, где логика?


форекс и баба уложат тебя на рельсы :D 
avatar

AM2

  • 3 июля 2021, 20:20
0
на видосе все размыто
avatar

AM2

  • 3 июля 2021, 13:02
0
объединил вариант в тз и последний и написал свой :) 



суть такая: зависший ордер или серию выводим в плюс сильно увеличенным лотом. допустим открыт один или несколько бай 0.1, они ушли в минус, где то на линии поддержки открываем ордер лотом 2 и когда все выходят в плюс закрываем.

лот вводим в окошко, закрытие идет при нажатой кнопке.


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

//--- Inputs
extern double Lots       = 0.1;      // лот позы
extern int Slip          = 100;      // реквот
extern int Magic         = 123;      // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutEdit("L",90,160,(string)Lots);
   PutButton("B",90,120,"BUY");
   PutButton("S",90,80,"SELL");
   PutButton("C",90,40,"CLOSE");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"B");
   ObjectDelete(0,"S");
   ObjectDelete(0,"C");
   ObjectDelete(0,"L");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,9);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,false);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutEdit(string name,int x,int y,string text)
  {
//--- создадим поле ввода
   ObjectCreate(0,name,OBJ_EDIT,0,0,0);
//--- установим координаты объекта
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размеры объекта
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим способ выравнивания текста в объекте
   ObjectSetInteger(0,name,OBJPROP_ALIGN,ALIGN_CENTER);
//--- установим (true) или отменим (false) режим только для чтения
   ObjectSetInteger(0,name,OBJPROP_READONLY,false);
//--- установим угол графика, относительно которого будут определяться координаты объекта
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl=1;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         string symb=OrderSymbol();
         double bid=MarketInfo(symb,MODE_BID);
         double ask=MarketInfo(symb,MODE_ASK);
         int dg=(int)SymbolInfoInteger(symb,SYMBOL_DIGITS);

         if(OrderType()==0)
           {
            RefreshRates();
            cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(bid,dg),Slip,White);
           }
         if(OrderType()==1)
           {
            RefreshRates();
            cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ask,dg),Slip,White);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   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))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int r=0;
   double lot=StringToDouble(ObjectGetString(0,"L",OBJPROP_TEXT));

   if(ObjectGetInteger(0,"B",OBJPROP_STATE)==1)
     {
      r=OrderSend(NULL,0,lot,NormalizeDouble(Ask,_Digits),Slip,0,0,"",Magic,0,Blue);
      ObjectSetInteger(0,"B",OBJPROP_STATE,0);
     }

   if(ObjectGetInteger(0,"S",OBJPROP_STATE)==1)
     {
      r=OrderSend(NULL,1,lot,NormalizeDouble(Bid,_Digits),Slip,0,0,"",Magic,0,Red);
      ObjectSetInteger(0,"S",OBJPROP_STATE,0);
     }

   if(ObjectGetInteger(0,"C",OBJPROP_STATE)==1)
     {
      if(AllProfit()>0)
         CloseAll();
     }

   Comment("\n All Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

avatar

AM2

  • 1 июля 2021, 21:44
0
все подробно на скринах
avatar

AM2

  • 1 июля 2021, 20:46
0
мой вам совет, пользуйтесь стандартными индикаторами или свечными паттернами и не будет такой запары ни мне ни вам
avatar

AM2

  • 1 июля 2021, 20:28
0
отладка это длительное дело. могу поставить на следующий топик.
avatar

AM2

  • 1 июля 2021, 20:26
0
есть контакт :)  www.opentraders.ru/downloads/3049/



подправленный индюк

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2018, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 Lime

extern bool   ALLERT       =true;
extern string COMM         ="Параметры индикатора волатильности";
extern int                 N=1; // период канала
extern string COMM1         ="Параметры индикатора Rsi TMA centered bands Alert";
extern int    RsiLength  = 5;
extern int    RsiPrice   = 0;
extern int    HalfLength = 12;
extern int    DevPeriod  = 100;
extern double Deviations = 1.5;
extern bool   AlertOn    = false;
extern string COMM2         ="Параметры индикатора Weighted WCCI indikatorforeks.ru";
extern int          TCCIp=7;
extern int           CCIp=9;
extern double overbslevel=200.0;
extern double    triglevel=50.0;
extern double       weight=1.0;
int Gi_84 = 24;
bool Gi_88 = FALSE;
double G_ibuf_92[];
double G_ibuf_96[];
int G_bars_100 = 0;
double mc,nc,mc1,nc1,mc2,nc2;
double W14,W7,W20,W25,W30,iWOL,iWOL1,RCB,RCB1,RCB2,WWi,WWi1;
int top,k,k1,k2;
// E37F0136AA3FFAF149B351F6A4C948E9
int init()
  {
   SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 3);
   SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 3);
   SetIndexArrow(1, 233);
   SetIndexArrow(0, 234);
   SetIndexBuffer(0, G_ibuf_92);
   SetIndexBuffer(1, G_ibuf_96);
   G_bars_100 = Bars;
   return (0);
  }

// EA2B2676C28C0DB26D39331A336C6B92
int start()
  {
   int highest_0;
   int lowest_4;
   int Li_8 = IndicatorCounted();
   if(Li_8 < 0)
      return (-1);
   if(Li_8 > 0)
      Li_8--;
   int Li_12 = Bars - 1;
   if(Li_8 >= 1)
      Li_12 = Bars - Li_8 - 1;
   if(Li_12 < 0)
      Li_12 = 0;
   for(int Li_16 = Li_12; Li_16 >= 0; Li_16--)
     {

      W14=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,14,Li_16),Digits);
      W7=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,7,Li_16),Digits);
      W20=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,20,Li_16),Digits);
      W25=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,25,Li_16),Digits);
      W30=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,30,Li_16),Digits);
      iWOL=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"indikator volatilnosti",N,0,Li_16),Digits);
      iWOL1=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"indikator volatilnosti",N,0,Li_16+1),Digits);
      RCB=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"Rsi TMA centered bands Alert",RsiLength=5,RsiPrice,HalfLength,DevPeriod,Deviations,AlertOn,0,Li_16),Digits);
      RCB1=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"Rsi TMA centered bands Alert",RsiLength=5,RsiPrice,HalfLength,DevPeriod,Deviations,AlertOn,2,Li_16),Digits);
      RCB2=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"Rsi TMA centered bands Alert",RsiLength=5,RsiPrice,HalfLength,DevPeriod,Deviations,AlertOn,3,Li_16),Digits);




      highest_0 = iHighest(NULL, 0, MODE_HIGH, Gi_84, Li_16 - Gi_84 / 2);
      lowest_4 = iLowest(NULL, 0, MODE_LOW, Gi_84, Li_16 - Gi_84 / 2);


      if(W14>-5&&W7>-5&&W20>-5&&W25>-5&&W30>-5  &&iWOL-iWOL1>0  &&RCB>RCB1)
        {
         G_ibuf_92[Li_16] =Imaxx(Li_16);
         if(ALLERT==true)
           {
            if(mc!=Cotkr(1))
              { Alert(Symbol(),"--Продажа!"); mc=Cotkr(1);}
           }
        }

      if(W14<-95&&W7<-95&&W20<-95&&W25<-25&&W30<-25  &&iWOL-iWOL1>0  &&RCB<RCB2)
        {
         G_ibuf_96[Li_16] =Iminn(Li_16);
         if(ALLERT==true)
           {
            if(mc1!=Cotkr(1))
              { Alert(Symbol(),"--Покупка!"); mc1=Cotkr(1);}
           }
        }




     }

   return (0);
  }

// 9B1AEE847CFB597942D106A4135D4FE6
int f0_1()
  {
   bool Li_ret_0 = FALSE;
   if(G_bars_100 != Bars)
     {
      Li_ret_0 = TRUE;
      G_bars_100 = Bars;
      Gi_88 = TRUE;
     }
   return (Li_ret_0);
  }

// 945D754CB0DC06D04243FCBA25FC0802
string f0_0(int Ai_0)
  {
   if(Ai_0 == 1)
      return ("M1");
   if(Ai_0 == 5)
      return ("M5");
   if(Ai_0 == 15)
      return ("M15");
   if(Ai_0 == 30)
      return ("M30");
   if(Ai_0 == 60)
      return ("H1");
   if(Ai_0 == 240)
      return ("H4");
   if(Ai_0 == 1440)
      return ("D1");
   if(Ai_0 == 10080)
      return ("W1");
   if(Ai_0 == 43200)
      return ("MN1");
   return ("");
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Imaxx(int Per)
  {
   double perr;
   perr = NormalizeDouble(iHigh(Symbol(),0,Per),Digits);
   return (perr);
  }
//---Миниму--//
double Iminn(int Per)
  {
   double perr;
   perr = NormalizeDouble(iLow(Symbol(),0,Per),Digits);
   return (perr);
  }
//--Цена открытия--//
double Cotkr(int Per)
  {
   double perr;
   perr = NormalizeDouble(iOpen(Symbol(),0,Per),Digits);
   return (perr);
  }
//--Цена закрытия--//
double Czakr(int Per)
  {
   double perr;
   perr = NormalizeDouble(iClose(Symbol(),0,Per),Digits);
   return (perr);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 30 июня 2021, 22:41
0
вот открылись по сигналу бай и селстоп:



сработал селлстоп, выставился 3-й ордер байстоп:



www.opentraders.ru/downloads/3048/
avatar

AM2

  • 30 июня 2021, 22:11
0
подправил. завтра посмотрю советник
avatar

AM2

  • 29 июня 2021, 22:23
0
я советник упростил, сделал боле доступным для оптимизации, снизил риски, оптимизировал: www.opentraders.ru/downloads/3048/



этот вариант дальше можно править под ваши задачи.
avatar

AM2

  • 29 июня 2021, 22:21
0
вчера тоже не мог зайти
avatar

AM2

  • 29 июня 2021, 21:32
0
индикатор не прикрепился
avatar

AM2

  • 28 июня 2021, 21:13
0
скрин голову свернуть можно
avatar

AM2

  • 28 июня 2021, 21:11
0
пока такой набросок: www.opentraders.ru/downloads/3047/

avatar

AM2

  • 27 июня 2021, 08:54
0
покажите входы выходы на скрине
avatar

AM2

  • 27 июня 2021, 07:36