Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 699

 

В советнике использовал отсчет с записью времени на происходящем событии:

if (line1 < 0 && time ==0){time=Time[0];}//сработало предварительное условие входа, записываем время
if (time > 0)shift=iBarShift(Symbol(),Period(),time);//находим индекс бара

и если не срабатывало условие

if (line1 == 0){time=0;}

то индекс увеличивался с каждым баром.

В индикаторе необходимо после определенного индекса поставить один раз стрелку.

Пробую так же сделать в индикаторе ничего не получается:

int tikket;// расположено на глобальном уровне
datetime time;// расположено на глобальном уровне

///////////////////////////////////

for(i=limit1;i>=0;i--)
     {
      if(ExtMapBuffer2[i]<0 && time == 0){time=Time[i];}
      if(time > 0)shift=iBarShift(Symbol(),Period(),time);//находим индекс бара
      if(ExtMapBuffer2[i]==0){time=0;tikket=0;}
      if(ExtMapBuffer2[i]<0 && shift>=shet && tikket==0){tikket=1;if(tikket>0)ExtMapBuffer3[i]=High[i]+150*Point;}
     }


на первом баре где " ExtMapBuffer2[i]<0 " ставится стрелка, а "shift>=shet" не учитывается.

По логике с этой строкой что-то нужно делать " if(time > 0)shift=iBarShift(Symbol(),Period(),time);" 

Что скажете?

 

Уважаемые программисты, нужна ваша помощь.

Пытался скомпилировать советник CloseAllOrders, но получаю такую вот запись:

------------------------------------------

'CloseAllOrders_v5.mq4'   
'WinUser32.mqh'   
function must return a value    CloseAllOrders_v5.mq4    30    22
function must return a value    CloseAllOrders_v5.mq4    79    41
0 error(s), 2 warning(s)    

--------------------------------------------------     

Что надо сделать, что бы советник работал?

Советник прилагается.

Заранее спасибо за помощь.

С уважением,

Файлы:
 
Geowind64:

Уважаемые программисты, нужна ваша помощь.

Пытался скомпилировать советник CloseAllOrders, но получаю такую вот запись:

------------------------------------------

'CloseAllOrders_v5.mq4'   
'WinUser32.mqh'   
function must return a value    CloseAllOrders_v5.mq4    30    22
function must return a value    CloseAllOrders_v5.mq4    79    41
0 error(s), 2 warning(s)    

--------------------------------------------------     

Что надо сделать, что бы советник работал?

Советник прилагается.

Заранее спасибо за помощь.

С уважением,


Функция должна возвращать значение 

if (ret==IDCANCEL)return(0);

и

if (ret1==IDCANCEL)return(0);

 Как-то так.

 

Вопрос на засыпку:

 В советнике стоит настройка, по которой мы определяем на какой свече входить. Советник открывает сделку по сигналу индикатора, на 3-ей свече после сигнала. На 2-ой свече после сигнала появляется сигнал в обратную сторону.   Как прописать условие, чтобы при появлении сигнала в обратную сторону мы не входили?

extern int sdvig=3;//На какой свече заходим

 double pokupaem=iCustom(Symbol(),Per,"super-signals-channel",4,500,3,sdvig);

 double prodaem=iCustom(Symbol(),Per,"super-signals-channel",4,500,2,sdvig);

 if(OrdersTotal()==0)

 {

  double lot=(AccountBalance()/ MinLot)*0.01;

  if(center>Ask && pokupaem>0 && prodaem<1 && prodaem1<1 &&SelBuyDaily==Vhodim1)

  {

   x=OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,Komment,Magic,0,Blue);

  }

  if(center<Bid && prodaem>0 && pokupaem<1 && pokupaem1<1 && SelBuyDaily==Vhodim2)

  {

   y=OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,0,Komment,Magic,0,Red);

  }

 }

 

Решил проблему с помощью дополнительных переменных. Прописываем индикаторы с сигналом на текущей свече. При появлении первого сигнала приписываем переменной одну цифру, при появлении противоположного сигнала приписываем другую цифру.

 ////////////////////////////////////////////////////////////////////////////////////////

 //                       Проверка на наличие обратного сигнала                       //

 //////////////////////////////////////////////////////////////////////////////////////

  double pokup=iCustom(Symbol(),Period(),"super-signals-channel",4,500,3,0);

  double prod=iCustom(Symbol(),Period(),"super-signals-channel",4,500,2,0);

 if(pokup>0){

  proverka=1;

  }

 if(prod>0){

  proverka=2;

  }

/////////////////////////////////////////////////////////////////////////////////////////////////////

//                  Блок открытия зделок при отключённых стоп-лосс и тейк-профит                  //

///////////////////////////////////////////////////////////////////////////////////////////////////

 if(OrdersTotal()==0)

 {

  double lot=(AccountBalance()/ MinLot)*0.01;

  if(center>Ask && pokupaem>0 && prodaem<1 && prodaem1<1 && SelBuyDaily==Vhodim1 && proverka==1)

  {

   x=OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,Komment,Magic,0,Blue);

  }

  if(center<Bid && prodaem>0 && pokupaem<1 && pokupaem1<1 && SelBuyDaily==Vhodim2 && proverka==2)

  {

   y=OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,0,Komment,Magic,0,Red);

  }

 }

 

Здравствуйте, почему советник открывает... да и вообще открываются ордера выше цены? Пробую советник на тестере стратегий в метатрейдере.

Открываю ордера так:

   RefreshRates();
   switch(send)
      {
      case 1: ticked = OrderSend(Symbol(), OP_BUY, lot, Ask, 4, NormalizeDouble(Bid-SL*Point, Digits), NormalizeDouble(Ask+TP*Point, Digits), "Buy_", magik, 0, clrBlue); break;
      case 2: ticked = OrderSend(Symbol(), OP_SELL, lot, Bid, 4, NormalizeDouble(Ask+SL*Point, Digits), NormalizeDouble(Bid-TP*Point, Digits), "Sell_", magik, 0, clrRed); break;
      default : ticked = 0;
      }



 
nr72:

Здравствуйте, почему советник открывает... да и вообще открываются ордера выше цены? Пробую советник на тестере стратегий в метатрейдере.

Открываю ордера так:



Buy открывается по Ask же. Нажмите на графике визуализации F8, во вкладке "Общие" поставьте галочку "Показывать линию Ask". Все вопросы отпадут сами собой.
 
artmedia70:
Buy открывается по Ask же. Нажмите на графике визуализации F8, во вкладке "Общие" поставьте галочку "Показывать линию Ask". Все вопросы отпадут сами собой.


Спасибо! Теперь понял...
 
alexey1979621:
Всем привет! Не могу прикрутить индюк к сову, помогите знающие люди.
Линия евро (зеленая) пересекает линюю фунта (свет.коричневая) сверху вниз открывает ордер на продажу евро фунта. Если фунт пересекает линюю евро снизу вверх, то покупаем евро фунт.
У меня в журнале пишет, что не видит индикатор.
Советник и индикатор прилагаю.

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


Не советую выкладывать декомпил. До бани совсем чуть-чуть
 

1.Подскажите, можно как то программно свернуть панель быстрой торговли которая находится в левом верхнем углу графика?

 2. Можно ли программно отключить быструю торговлю?