[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 57

 
Karabas >>:

Добрый день! Подскажите,есть ли возможность изменять цвет индикатора ? Допустим, в основном окне два Moving Average с разными периодами разным цветом. Спасибо


кликаешь правой кнопкой мыши на одну из МАшек (Мoving Average) выскочит окошко, кликаеш на строчку "свойства Мoving Average" и там уже увидиш где цвет менять

 
xruss >>:

Cls_B и Cls_S разрешают закрывать позицию и они не могут противоречить Opn_B Opn_S. здесь требуется прописать в коде тайм-сериию, которая бы отмечала бар где был открыт ордер Buy или Sell и где он должен был бы быть закрыт, чтобы на протяжении этого периода больше бы не открывалось позиций((

Имелось ввиду не заменить уже имеющиеся у вас условия открытия сделки, а добавить к ним новые. Вы, как я понимаю, хотите запретить эксперту открывать позицию по сигналу на открытие, если не поступил сигнал на закрытие по этому же сигналу. Вот и добавьте:

if (Opn_B==true && Cls_B==false) { не открывать Buy  }
if (Opn_C==true && Cls_C==false) { не открывать Sell }

А если делать по-вашему, - как вы рассчитаете тот бар, на котором позиция должна будет когда-то там закрыться? :)

 

Здравствуйте

//+------------------------------------------------------------------+
int start()
  {
//----
 double Macd_0=iMACD(NULL,0,MAFastPeriod,MASlowPeriod,MASignalPeriod,1,0,0);
 double Macd_1=iMACD(NULL,0,MAFastPeriod,MASlowPeriod,MASignalPeriod,1,0,1);
 double signal_0=iMACD(NULL,0,MAFastPeriod,MASlowPeriod,MASignalPeriod,1,1,0);
 double signal_1=iMACD(NULL,0,MAFastPeriod,MASlowPeriod,MASignalPeriod,1,1,1);
    
    if((Macd_0 < Macd_1 && Macd_1 > 0) && (signal_0 < signal_1 && signal_1 > 0))
     if(CheckOrders(OP_SELL))
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if((Macd_0 > Macd_1 && Macd_1 < 0) && (signal_0 > signal_1 && signal_1 < 0))
     if(CheckOrders(OP_BUY))
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

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

Это первый вариант.

//+------------------------------------------------------------------+
int start()
  {
//----
 double Macd_0=iMACD(NULL,0,pFast,pSlow,pSignal,1,0,0);
 double Macd_1=iMACD(NULL,0,pFast,pSlow,pSignal,1,0,1);
 double signal_0=iMACD(NULL,0,pFast,pSlow,pSignal,1,1,0);
 double signal_1=iMACD(NULL,0,pFast,pSlow,pSignal,1,1,1);
    
    if((Macd_0 < Macd_1 && Macd_1 > 0) && (signal_0 < Macd_0 && signal_1 < Macd_1 && signal_1 > 0))
     if(CheckOrders(OP_SELL)) //продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if((Macd_0 > Macd_1 && Macd_1 < 0) && (signal_0 > Macd_0&& signal_1 > Macd_1&& signal_1 < 0))
     if(CheckOrders(OP_BUY)) //покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

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

Это второй вариант.

Эксперт на основе macd, торговля простая (всё основывается на 0 и 1 баре, цена - открытия).

В первом случае значения macd увеличиваются(для buy), для sell они уменьшаются. Сигнальная линия тоже на этих условиях.

Во втором случае попытался реализовать пересечение быстрой и медленной линии macd . Но какие то сомнения остались.............Правильно ли.........

 
Everlost >>:

Имелось ввиду не заменить уже имеющиеся у вас условия открытия сделки, а добавить к ним новые. Вы, как я понимаю, хотите запретить эксперту открывать позицию по сигналу на открытие, если не поступил сигнал на закрытие по этому же сигналу. Вот и добавьте:

if (Opn_B==true && Cls_B==false) { не открывать Buy }
if (Opn_C==true && Cls_C==false) { не открывать Sell }

А если делать по-вашему, - как вы рассчитаете тот бар, на котором позиция должна будет когда-то там закрыться? :)

а как же у меня откроется позиция?:)

ведь она открывается в тот момент, когда Opn_B=true Cls_B=false и Cls_B в этот момент не может быть true.


допустим у нас есть MA`шка, которая пересекла котировки цены (сформировала Opn_S), открыла позицию вниз, а SL- перенесся в безубыток. а тут цена слизала SL в безубыток и...

в моем случае открывается позиция вниз(((( до того как сформирован новый сигнал пересечения MA`шки ценой (Cls_S)



 
xruss >>:

а как же у меня откроется позиция?:)

ведь она открывается в тот момент, когда Opn_B=true Cls_B=false и Cls_B в этот момент не может быть true.

Ок, заведите ещё одну переменную, например, int Last_Position=-1. Заносите в неё тип ордера сразу после открытия позиции. И добавьте условия:

if (Opn_B==true && Last_Position==OP_BUY) { сигнал Buy пропускаем }

 
Everlost >>:

Ок, заведите ещё одну переменную, например, int Last_Position=-1. Заносите в неё тип ордера сразу после открытия позиции. И добавьте условия:

if (Opn_B==true && Last_Position==OP_BUY) { сигнал Buy пропускаем }

да примерно так я и делал, но мне немного не поравился результат((

бывает такая ситуация, что трэнд ослабевает переходит во флет (корректируется) и потом с новой силой продолжает движение и подает правильный сигнал Opn_S, который будет таким образом блокироваться. как сделать так чтобы ограничить торговлю одним ордером на участке от сигнала Opn_S до Cls_S и от Opn_B до Cls_B?

 
xruss >>:

да примерно так я и делал, но мне немного не поравился результат((

бывает такая ситуация, что трэнд ослабевает переходит во флет (корректируется) и потом с новой силой продолжает движение и подает правильный сигнал Opn_S, который будет таким образом блокироваться. как сделать так чтобы ограничить торговлю одним ордером на участке от сигнала Opn_S до Cls_S и от Opn_B до Cls_B?

Очень просто - при поступлении сигнала Cls_S или Cls_B забываем про позицию, открытую последней (сбрасываем значение переменной Last_Position обратно на -1).

if ((Cls_S==true || Cls_B==true) && Last_Position>=0) Last_Position=-1;

 
Кто подскажет как в советнике прописать условие чтоб он знал что предыдущая сделка была убыточной
 
Dimoncheg >>:
Кто подскажет как в советнике прописать условие чтоб он знал что предыдущая сделка была убыточной

if (OrderProfit() < 0) {

...

}

 
Многоуважаемые эксперты, не игнорируйте мой вопрос пожалуйста.

Есть ли индикатор, который считает волатильность, например дневную. Но не такой, что неопределенное число выдает типа 0,34. А так чтоб он считал количесво тиков свечи в день и делил напримеер на заданный период (количество дней), чтоб можно было знать среднее значение. Пример: открытие 100, закрытие 200; второй день - открытие 200, закрытие 250. Средняя волатильность за эти 2 дня = ((200-100)+(250-200))/2дня=(100+50)/2=75
Где скачать, если есть.
Причина обращения: