[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 135

 

Здраствуйте, взял за основу скрипт из учебника С.Ковалева. Хочу, сделать эксперта, чтобы открыл сделку, поставил стоплос, тейк профит и после этого ждал окончания сделки(т.е. выполнения стопа или профита), а только после этого снова открыл сделку. Попробовал с помоющью цикла и прерывания цикла. Подскажите как можно сделать. ДУмал может проще проще сразу не ставить стоплос и тейкпрофит, а чтобы цена закрывалась когда подойдет к определнному уровню, но пока так не хочу, т.к. боюсь проскальзывания, а мне каждый пунк важен. В итге получилось, что открыв одну сделку или бывает сразу пару(тоже не правльно что то), после закрытия сделки, новой не открывает.

//+------------------------------------------------------------------+
int start()       //---- функеция старт           
  {
  double     //---- объявляю переменные
  x,
  y;
  //+------------------------------------------------------------------+
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);    //---- рыночный ордер на покупку и выставление стопа и профита на 15 пунктов от цены открытия
 //+------------------------------------------------------------------+ 
   while(x!=Ask-15*Point||y!=Ask+15*Point)                          //---- условия при котором хочу чтобы сделки не выполнялись пока предыдущая сделка не закрыта, т.е. можно 
   {                                                                //----- держать открытой ТОЛЬКО одну сделку
   continue;                                                         //---- прерывание условия и переход к следующему шагу
   }
  //+------------------------------------------------------------------+
   return;                                                          //---- функция return
    }
//+------------------------------------------------------------------+

 
YOUNGA:

да , только цены открытия , поэтому есть особенно важно учитывать при анализе работы соетника. Например если хвост свечи пробивал ваш канал, то советник может это незаметить, но эт оможно прописать в логику программы и впринципе решить проблему



Спасибо!
 

Вопрос: Вот есть такой кусок кода

int init()

  {
//----
  ShiftSignal=0;
  SlowPer=FastPer+AddSlow;
  Spread=MarketInfo(Symbol(),MODE_SPREAD);
  Comment("ExpertMagicNumber=",ExpertMagicNumber);
 
  if ((FastShift<0)&&(SlowShift>=0))
  ShiftSignal=-FastShift; 
 
  if ((FastShift>=0)&&(SlowShift<0))
  ShiftSignal=-SlowShift;
 
  if ((FastShift<0)&&(SlowShift<0))
   {
   if (MathAbs(FastShift)>MathAbs(SlowShift))
  
   ShiftSignal=-FastShift;
   else
   ShiftSignal=-SlowShift;
   }
//----
   return(0);

в нем интересует вот это место

  if ((FastShift<0)&&(SlowShift>=0))

  ShiftSignal=-FastShift; 

если значение FastShift<0 то значит значение FastShift изначально равно отрицательному целому числу например:  -2  

тогда в следующей строке ShiftSignal=-FastShift; 

можно подумать что переменной ShiftSignal вместо ноля будет присвоено значение -2

но вто же время возникает мысль а зачем тогда минус перед переменной FastShift 

ведь в математике минус на минус дает плюс то есть тогда что значение будет равно "+2" то есть просто 2

 Если нужно могу прислать весь код.

 

Помогите решить вот такую задачу.

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

Как это делаю я, но не чего не выходит.

if( условие на покупку или продажу)
{          

      if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==true)   // если есть уже ордер то проверяем
        {
                 if (OrderOpenTime()!=Time[1]||OrderOpenTime()!=Time[2]||OrderOpenTime()!=Time[3]) // если открытый ордер имеет значение(OrderOpenTime) не равное времени бару назад и тд. до 3 баров.
                    {
                   TimeBar=Time[0];
                   OrderSend(Symbol(),OP_BUY, LOT,NormalizeDouble(Ask,Digits),2,0,0,"ntcn",Magic,0,Blue);  // тогда открываем
                    }
        }


}

 Но не работает.. или как это можно сделать по другому???? Буду признателен если поделитесь знаниями.

 Если кто читает и столкнулся с такой же проблемой Вот Ответ:

if( условие на покупку или продажу)
{          

   OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);                                                // проверяем последний ордер
        if(OrderOpenTime()<Time[3])                                                                       // если по времени прошло 3 бара тогда можно открывать новую сделку
           {
                   TimeBar=Time[0];
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,"ntcn",Magic,0,Red); 
           }

}
 
олег , условие не очень жеское  Напимер начинайте считать открытые ордера , если больне 1 то не окрывать(возьмите на сайте здесь готовые фунции)
 

Тэкс, поскольку никто не ответил, попробую переформулировать вопрос. 

Есть ли какая-нибудь возможность вытащить инфу с компилированного индикатора, если функция  iCastom() выдает исключительно нули? 

 

Здравствуйте, подскажите, как начать счет баров, после положительного сигнала индикатора 

- поступил сигнал, открываю bay, только после того, как 2 следующих бара пройдут вверх .

 
YOUNGA:
олег , условие не очень жеское  Напимер начинайте считать открытые ордера , если больне 1 то не окрывать(возьмите на сайте здесь готовые фунции)


К сожалению сигналы могут быть и повторные (в смысле докупать, они могут быть через час, через день, и тд) я побывал через OrderComment, блокировать, но есть и повторяющиеся ордера. Хотелось бы по барам делать блокировку на повторные сигналы. Если через Sleepage то timeframe разные бывают и 4 часовые....

 

Но спасибо за ответ.  

 
dertop:


К сожалению сигналы могут быть и повторные (в смысле докупать, они могут быть через час, через день, и тд) я побывал через OrderComment, блокировать, но есть и повторяющиеся ордера. Хотелось бы по барам делать блокировку на повторные сигналы. Если через Sleepage то timeframe разные бывают и 4 часовые....

 

Но спасибо за ответ.  


поищите на сайте ветку

Запрет торговли в одном баре.

 
Доброй ночи! Пожалуйста объясните принцип построения индикатора zigzag. Например фракталы строятся когда слева и справа 2 бара выше или ниже текущего. А на основании чего строится zigzag? Будьте добры, пожалуйста.
Причина обращения: