Статус
Закрыто для дальнейших ответов.

deepdig

Активный участник
Помогите пожалуйста разобраться! Никак не получается добиться от советника октрытия второго цикла отложенных ордеров.

PHP:
extern double lot1     = 0.1;      //рабочий лот 
extern double lot2     = 0.1;      //лот 1-го отложенного ордера 
extern double lot3     = 0.1;      //лот 2-го отложенного ордера 
extern double lot4     = 0.1;      //лот 3-го отложенного ордера 
extern double lot5     = 0.1;      //лот 4-го отложенного ордера 
extern int Stop_Loss   = 30;        //стоп лосс 
extern int Take_Profit = 30;        //тейк профит 
extern int Open_Level  = 10;        //уровень отдаления от цены, на котором ставим отложенный ордер 
extern int slippage    = 2;         //уровень допустимого реквота 
extern int MagicNumber = 0;      //магическое число ордеров 

int tiсket1=0, ticket2=0, ticket3=0, ticket4=0, ticket5=0; 
   

  int init() 
  { 
  Comment("Старт советника ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); 
    
  return(0); 
  } 



  int start() 
  { 
   
   
   double SLbuy=0, SLsell=0,TPbuy=0,TPsell=0; 
   double Spread=Ask-Bid; 
   double Pending_By=Ask+Open_Level*Point; 
   double Pending_Sell=Bid-Open_Level*Point; 
    
if(Stop_Loss>0) {SLbuy=Ask-Stop_Loss*Point-Spread; SLsell=Bid+Stop_Loss*Point+Spread;} 
if(Take_Profit>0) {TPbuy=Ask+Take_Profit*Point; TPsell=Bid-Take_Profit*Point;} 


  int count=OrdersTotal();                            // объявление переменной колличества ордеров 
   
//-------------------------Старт цикла. Открытие 1-го и 2-го отрдеров ------------ 

   if(count==0) tiсket1=OrderSend (Symbol(), OP_SELL, lot1, Bid, slippage,        
   SLsell, TPsell, "LLL_1_Sell", MagicNumber, 0, Red); 
    
   if(count==0) ticket2=OrderSend (Symbol(), OP_BUYSTOP, lot2, Pending_By, slippage,  
   SLbuy+Open_Level*Point, TPbuy+Open_Level*Point, "LLL_1_Bystop", MagicNumber, 0, Blue); 
     
//-------------------------удаление несработавших отложенных ордеров---------------------- 

   for(int i=0; i<count; i++)                         // цикл пересчета открытых ордеров 
   { 
   bool res=OrderSelect(i, SELECT_BY_POS);            // выбор ордера по позиции 
      if (res) 
      { 
      int ticket=OrderTicket(); 
         if (count==1) OrderDelete(ticket);          // удаление несработавших отложенных ордеров 
      } 
   }   
//---------------------------открытие 2-го отложенного ордера------------------------------ 
     
   bool res1=OrderSelect(ticket2, SELECT_BY_TICKET);           // выбор 1-го отложенного ордера          
      if (res1) 
      { 
      int type=OrderType();                           // проверка состояния 1-го отложенного ордера 
       
         if (type==0&&ticket3==0) ticket3=OrderSend (Symbol(), OP_SELLSTOP, lot3,  
         Pending_Sell+Spread, slippage, SLsell-Open_Level*Point, TPsell-Open_Level*Point, "LLL_1_Selltop", MagicNumber, 0, Yellow);   
                                                      //открытие 2-го отложенного ордера 
      } 
           
       
//---------------------------открытие 3-го отложенного ордера------------------------------       
       
   bool res2=OrderSelect(ticket3, SELECT_BY_TICKET);           // выбор 2-го отложенного ордера  
      if (res2) 
      { 
      int type2=OrderType();                          // проверка состояния 2-го отложенного ордера 
       
         if(type2==1&&ticket4==0) ticket4=OrderSend (Symbol(), OP_BUYSTOP, lot4, Pending_By-Spread, slippage,  
         SLbuy+Open_Level*Point-Spread, TPbuy+Open_Level*Point-Spread, "LLL_2_Bystop", MagicNumber, 0, Green); 
                                                      //открытие 3-го отложенного ордера    
      } 
          
//---------------------------открытие 4-го отложенного ордера------------------------------ 
       
   bool res3=OrderSelect(ticket4, SELECT_BY_TICKET);           // выбор 3-го отложенного ордера  
      if (res3) 
      { 
      int type3=OrderType();                          // проверка состояния 3-го отложенного ордера 
       
         if (type3==0&&ticket5==0) ticket5=OrderSend (Symbol(), OP_SELLSTOP, lot5,  
         Pending_Sell+Spread, slippage, SLsell-Open_Level*Point, TPsell-Open_Level*Point, "LLL_2_Selltop", MagicNumber, 0, White); 
                                                      //открытие 4-го отложенного ордера    
      } 
    
   return(0); 
  }
 
Последнее редактирование модератором:

МК07

Новичок форума
Уважаемые программисты!Есть трёхцветрый индикатор HMA.Нужно при каждом цвете выполнять разные условия.Как мне через iCustom "разделить" эту кривую по цветам?

Заранее благодарен!
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 RoyalBlue
#property indicator_color2 Yellow
#property indicator_color3 Red

//---- indicator parameters
extern int Take_Profit = 48;
extern int Stop_Loss = 38;
extern int HMA_Period= 8;
extern bool Alerts = false;
extern bool EmailOn = false;
bool aTurnedUp = false;
bool aTurnedDown = false;

//---- indicator buffers
double ind_buffer0[];
double ind_buffer1[];
double ind_buffer2[];
double buffer[];

int draw_begin0;

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

//| Custom indicator initialization function |
//+------------------------------------------------------------------

int init()
{
//---- indicator buffers mapping
IndicatorBuffers(4);
if(!SetIndexBuffer(0,ind_buffer0) && !SetIndexBuffer(1,ind_buffer1)
&& !SetIndexBuffer(2,ind_buffer2) && !SetIndexBuffer(3, buffer))
Print("cannot set indicator buffers!");
// ArraySetAsSeries(ind_buffer1,true);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,3);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,3);
draw_begin0=HMA_Period+MathFloor(MathSqrt(HMA_Period));
SetIndexDrawBegin(0,draw_begin0);
SetIndexDrawBegin(1,draw_begin0);
SetIndexDrawBegin(2,draw_begin0);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("HMA("+HMA_Period+")");
SetIndexLabel(0,"Hull Moving Average");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------

//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------

int start()
{
int limit,i;
int counted_bars=IndicatorCounted();
double tmp, tmpPrevious;


//---- check for possible errors
if(counted_bars<1)
{
for(i=1;i<=draw_begin0;i++) buffer[Bars-i]=0;
for(i=1;i<=HMA_Period;i++)
{
ind_buffer0[Bars-i]=0;
ind_buffer1[Bars-i]=0;
ind_buffer2[Bars-i]=0;
}
}
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- MA difference counted in the 1-st buffer
for(i=0; i<limit; i++)
{

buffer=iMA(NULL,0,MathFloor
(HMA_Period/1.5),0,MODE_LWMA,PRICE_CLOSE,i)*2- //change the HMA_Period/xx will change when the colors chang at given rate
iMA(NULL,0,HMA_Period,0,MODE_LWMA,PRICE_CLOSE,i);
}
//---- HMA counted in the 0-th buffer
tmp=iMAOnArray(buffer,0,MathFloor(MathSqrt
(HMA_Period)),0,MODE_LWMA,0);

for(i=1; i<limit; i++)
{

tmpPrevious=iMAOnArray(buffer,0,MathFloor(MathSqrt
(HMA_Period)),0,MODE_LWMA,i);

if (tmpPrevious > tmp)
{
ind_buffer0 = EMPTY_VALUE;
ind_buffer1 = EMPTY_VALUE;
ind_buffer2 = tmpPrevious;
ind_buffer2[i-1] = tmp; // !
}
else if (tmpPrevious < tmp)
{
ind_buffer0 = tmpPrevious;
ind_buffer0[i-1] = tmp; // !
ind_buffer1 = EMPTY_VALUE;
ind_buffer2 = EMPTY_VALUE;
}

else
{
ind_buffer0 = CLR_NONE;
ind_buffer1 = tmpPrevious;
ind_buffer2[i-1] = tmp; // !
ind_buffer2 = CLR_NONE;
}
if (Alerts)
{
if (tmpPrevious < tmp) //change the wt[?] number will change when the signal will trigger based on # of last bars
{
if (!aTurnedUp)
{
if (BarChanged())
{
Alert ("Buy Entry - " + Symbol() + " " + "EMA " + aRperiodf() + " - Price: " + DoubleToStr(Ask,4));
PlaySound("alert.wav");
if (EmailOn)
{
SendMail("Buy Entry - "+(Symbol())+" "+"EMA"+(aRperiodf()),(Symbol())+" Price: "+DoubleToStr(Ask,4)+" Stop: "+ DoubleToStr(aGetSLl(),4)
+" Limit: "+DoubleToStr(aGetTPl(),4)); //send email with entry price
}
}
aTurnedUp = true;
aTurnedDown = false;
}
}
if (tmpPrevious > tmp) //change the wt[?] number will change when the signal will trigger based on # of last bars
{
if (!aTurnedDown)
{
if (BarChanged())
{
Alert ("Sell Entry - "+(Symbol())+" "+"EMA "+(aRperiodf())," - Price: "+DoubleToStr(Bid,4));
PlaySound("alert.wav");
if (EmailOn)
{
SendMail("Sell Entry - "+(Symbol())+" "+"EMA"+(aRperiodf()),(Symbol())+" Price: "+DoubleToStr(Ask,4)+" Stop: "+ DoubleToStr(aGetSLs(),4)
+" Limit: "+DoubleToStr(aGetTPs(),4)); //send email with entry price
}
}
aTurnedDown = true;
aTurnedUp = false;
}
}
}

tmp = tmpPrevious;
}


//---- done
return(0);
}

bool BarChanged()
{
static datetime dt = 0;

if (dt != Time[0])
{
dt = Time[0];
return(true);
}
return(false);
}

//---- done
return(0);


double aGetTPs() { return(Bid-Take_Profit*Point); }
double aGetTPl() { return(Ask+Take_Profit*Point); }
double aGetSLs() { return(Bid+Stop_Loss*Point); }
double aGetSLl() { return(Ask-Stop_Loss*Point); }
int aRperiodf() { return(HMA_Period*Point*10000); }
 
Последнее редактирование модератором:

Ugar

Гуру форума
Уважаемые программисты!Есть трёхцветрый индикатор HMA.Нужно при каждом цвете выполнять разные условия.Как мне через iCustom "разделить" эту кривую по цветам?

Заранее благодарен!

//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 RoyalBlue
#property indicator_color2 Yellow
#property indicator_color3 Red
В iCustom, предпоследний параметр, это номер буфера. Каждый цвет находится в своём буфере. Вызывай 3 раза iCustom с указанием разных буферов начиная с 0 по 2. В каком буфере есть значение, такой и цвет отображается.
 

МК07

Новичок форума
В iCustom, предпоследний параметр, это номер буфера. Каждый цвет находится в своём буфере. Вызывай 3 раза iCustom с указанием разных буферов начиная с 0 по 2. В каком буфере есть значение, такой и цвет отображается.



Буфера три,но линия на графике одна.На каждом баре надо знать какого она цвета!Как это сделать?
 

Ugar

Гуру форума
Буфера три,но линия на графике одна.На каждом баре надо знать какого она цвета!Как это сделать?
Я же уже написал. В каком буфере есть значение, такой и цвет отображается.
Линии 3, каждая имеет свой цвет, просто они чередуются формируя одну. Правда иногда в подобных решениях применяют ещё и наложение линий одной на другую. в Таком случае нужно смотреть более старший, по номеру буфер, так как именно он рисуется поверх младшего.
 
Последнее редактирование:

Grinii

Интересующийся
Добрый вечер уважаемые программисты. Помогите мне озвучить индикатор Parabolic_SW_1. Чтобы когда появлялась точка в другую сторону он мне выдавал музычку с музыкального файла в формате wav. , название которого будет прописано в индикаторе, а сам файл будет находиться в папке «sounds» МТ4 . За ранее большое спасибо !!!
 

Вложения

  • Parabolic_SW_1.mq4
    7,2 КБ · Просмотры: 40

gush

бродяга
eevviill у тебя случайно нет что-то подобного по RSI:

если значение RSI=n, покупаем..
если значение RSI=n, продаем..
если значение RSI=n, закрываем лося..
если значение RSI=n, фиксим профит..
где n - значение штатного RSI

маджик, лот..
спасибо.
 

Fillelin

Элитный участник
eevviill

Помоги Пожалуйста !!!
Показывать ему previous и forecast
 

Вложения

  • 1.mq4
    27,6 КБ · Просмотры: 44

eevviill

Заблокирован
eevviill у тебя случайно нет что-то подобного по RSI:

если значение RSI=n, покупаем..
если значение RSI=n, продаем..
если значение RSI=n, закрываем лося..
если значение RSI=n, фиксим профит..
где n - значение штатного RSI

маджик, лот..
спасибо.
У меня вообще нету советников кроме выставляльщика стопов+бу.
Но то что ты написал работать точно не будет.
 
  • Like
Реакции: gush

jonynator

Интересующийся
Помогите добавить второй магик

Помогите добавить в советник второй магик, идея в том чтобы он следил за ордерами 2 других советников с разными магиками. Заранее благодарен.
 

Вложения

  • Советник закрывает все позиции 2 magik.mq4
    12,2 КБ · Просмотры: 46

eevviill

Заблокирован

Вложения

  • Советник закрывает все позиции 2 magik.mq4
    12,4 КБ · Просмотры: 40

jonynator

Интересующийся
К сожалению не срабатывает, он должен учитывать только прибыль или потери ордеров с указанными магиками, а не баланс по счёту. И он должен удалять только ордера с указанными магиками.

eevviill сможешь глянуть а то очень надо.
 
Последнее редактирование:

jonynator

Интересующийся
Помогите добавить второй магик

eevviill Может этот будет работать как надо, добавь пожалуйста в него второй магик. Буду безразмерно благодарен :).
 

Вложения

  • CloseProfit v2.mq4
    6,7 КБ · Просмотры: 35

Ugar

Гуру форума
eevviill Может этот будет работать как надо, добавь пожалуйста в него второй магик. Буду безразмерно благодарен :).
А чё к автору слабо обратиться? В верху кода есть координаты.
Строчка #property link ...
Сомневаюсь что за такую переделку он денег запросит, хотя это ему решать. В любом случае спросить точно будет бесплатно.
 

jonynator

Интересующийся
Ну может вы поможете, такой советник думаю не так сложно собрать, главное чтоб следил за ордерами от двух роботов с 2 разными магиками, и закрывал бы указанную прибыль по суме этих ордеров.
Я использую 2 робота в селл и 2 робота в бай вот мне и надо разделить управление прибылью.
 

Ugar

Гуру форума
Ну может вы поможете, такой советник думаю не так сложно собрать, главное чтоб следил за ордерами от двух роботов с 2 разными магиками, и закрывал бы указанную прибыль по суме этих ордеров.
Я использую 2 робота в селл и 2 робота в бай вот мне и надо разделить управление прибылью.
Бесплатно такой советник писать мне не интересно. Чужой советник я не буду переделывать даже за деньги. Если Вы готовы заплатить за написание с нуля присылайте подробный алгоритм на мыло.
Вам проще обратиться к cmillion то есть к автору. Даже если он согласится переделать свой советник только за деньги, это будет дешевле чем я буду писать с нуля.
 
Последнее редактирование:

eevviill

Заблокирован
eevviill Может этот будет работать как надо, добавь пожалуйста в него второй магик. Буду безразмерно благодарен :).
Если отдельно профит по меджикам, то это надо скопировать код. Легче 2 советника поставить на 2 графика с разными меджиками.
 

gush

бродяга
У меня вообще нету советников кроме выставляльщика стопов+бу.
Но то что ты написал работать точно не будет.

а что можно придумать, тактика простая.
рси выше - продаем..
рси в середине (50) - закрываем профит, если еще выше проданного - закрываем лося..
рси ниже - покупаем, профит тот же (50), лось ниже купленного (эти параметры должны настраиваться, подгоняться)
и все, ну с маджиком и лотом.. никакик других параметров, машек и тому подобное - не нужно. только рси:oops:
 

eevviill

Заблокирован
а что можно придумать, тактика простая.
рси выше - продаем..
рси в середине (50) - закрываем профит, если еще выше проданного - закрываем лося..
рси ниже - покупаем, профит тот же (50), лось ниже купленного (эти параметры должны настраиваться, подгоняться)
и все, ну с маджиком и лотом.. никакик других параметров, машек и тому подобное - не нужно. только рси:oops:
Что придумать, Можно мои уроки почитать и через месяц с помощью шаблона за 15 минут писать советника.
 

Вложения

  • RSI_bot.mq4
    8,7 КБ · Просмотры: 60
Статус
Закрыто для дальнейших ответов.
Верх