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

 
keep87:

double get_extrem(int n) {

   for(int i=1;;i++) {

      double ind=iCustom(Symbol(),0,"indicator_name",0,i);

      if(n>1)  

         if(ind!=0) n--;

         else

         if(ind!=0) return(ind);

      }

   }


вот так. функции отдаешь n (номер пика) она тебе вернет его значение. если тебе нужен номер бара пика то поменять тип функции на int и вместо return(ind); напиши return(i); 

  Я вот думаю на этим на данный момент. У меня все функции типа double и int всегда возвращают канкретные фиксированные значения. Например, 1, 0, -1 а в данном случае условие нужно производить с данной функцией не так как я до этого делал, типа:

 

if(FindOrders() > 1)

{

   Ordersend(...........); 

} 

 В данном случает, придётся сравнивать, например, для 3 колена:

if (get_extrem(3) == ind)
{
   // Делаем что-то при выполнении заданного условия
}

  Так разве логично писать? Может резоннее этой ф-ции тип bool задать? Мол: если нашли третье колено, то по цене (ниже или выше ind) покупаем или продаём. вроде бы я понятно изъяснил мысль.

 А в данном случает мы сравниваем функцию с её параметров n-коленом с ценой на этом колене, и что дальше?

 
hoz:

  Я вот думаю на этим на данный момент. У меня все функции типа double и int всегда возвращают канкретные фиксированные значения. Например, 1, 0, -1 а в данном случае условие нужно производить с данной функцией не так как я до этого делал, типа:

 

 В данном случает, придётся сравнивать, например, для 3 колена:

  Так разве логично писать? Может резоннее этой ф-ции тип bool задать? Мол: если нашли третье колено, то по цене (ниже или выше ind) покупаем или продаём. вроде бы я понятно изъяснил мысль.

 А в данном случает мы сравниваем функцию с её параметров n-коленом с ценой на этом колене, и что дальше?



double ind=iCustom(Symbol(),0,"indicator_name",0,i);

Double ind может возвратимть и -2, и -3 и так далее и даже Пи 3.14159......

А в данном случает мы сравниваем функцию с её параметров n-коленом с ценой на этом колене, и что дальше?  Не совсем понятно....

 
hoz:

  Я вот думаю на этим на данный момент. У меня все функции типа double и int всегда возвращают канкретные фиксированные значения. Например, 1, 0, -1 а в данном случае условие нужно производить с данной функцией не так как я до этого делал, типа:

 

 В данном случает, придётся сравнивать, например, для 3 колена:

  Так разве логично писать? Может резоннее этой ф-ции тип bool задать? Мол: если нашли третье колено, то по цене (ниже или выше ind) покупаем или продаём. вроде бы я понятно изъяснил мысль.

 А в данном случает мы сравниваем функцию с её параметров n-коленом с ценой на этом колене, и что дальше?



Ну нет, попробуйте поэксперемитируйте...... фигня все это......
 
Sepulca:


Double ind может возвратимть и -2, и -3 и так далее и даже Пи 3.14159......

А в данном случает мы сравниваем функцию с её параметров n-коленом с ценой на этом колене, и что дальше?  


С чего бы это вдруг? Double ind вернёт число  дробное..., а -2, -3 .. это целые. И как я понимаю, Double ind это цена на занном в параметре функции get_extrem(int n) 
 
Sepulca:



Ну этот сайт не ради торговли... Он главным образом посвящен программированию на MQL. Если обращали внимание во многих кодах даже предупреждают "Не для реальной торговли".

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

             Как в стенку горох ).

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

 

Да пишут не для реальной торговли.. И что, и почему?

Почему не покажут пример для реальной торговли, без оглашения стратегии.

Или правильного примера нет впринципе.  

 

 Добрый день. Подскажите, как советнику получить параметр Hi-Lo(амплитуда) Heiken Ashi(HA) из соответствующего индикатора . Попробовал разобраться с глобальными переменными, но что-то туго. В код HA встроил получение таким образом

int start()

  {

   double haOpen, haHigh, haLow, haClose,pip;

 ...

      GlobalVariableGet(pip);

...(здесь стандартный код с расчетом HA)

далее идет получение параметров Hi-Lo свечек HA

      result2=MathMin(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1]);

      result22=MathMax(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1]);

      result3=MathMin(Low[pos+1],result2);

      result33=MathMax(High[pos+1],result22);

      result0=result33-result3; \\расчет амплитуды НА

      GlobalVariableSet(pip,result0);   \\присвоение глоб.пер. pip значения амплитуды 

    pos--;

     }     

//----

   return(0);

  } 

 Потом в советнике в формулу просто вставляю GlobalVariableGet(pip),  но что-то совсем не то получается, т.е. значение pip совсем не то, чо должно быть. Подскажите что не так. Или может как проще получить амплитуду HA для оперирования советником.

 
Приветствую всех. Сам в программировании новичок, поэтому прошу решить задачу.

Необходимо, чтобы несколько советников на одном счету, открывали ограниченное количество ордеров.

К примеру: 10 советников но открыть можно только 5 ордеров, но не более одного на валютную пару.

Реализовано это следующим образом, но работает не так.

extern int МаксКолОрдеров   = 5;

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

int ПодсчетОткрОрдеров() {
  int k=OrdersTotal();
   if (Символ=="0") Символ=Symbol();
    for (int i=МаксКолОрдеров; i<k; i++) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Символ || Символ=="") {
       if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
      if (OrderMagicNumber()<1) return(True);
     }
    }
   }
  }
 return;

}

//+------------------------------------------------------------------+
int start()
  {
   if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
   }

 
evgenGX:

1. Мне выше, подсказали про глобальные переменные, спасибо. Читаю документацию.А в вашем варианте, как сделано ?

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


1. Отслеживается уровень профита на каждом баре. При его превышении заданного процента от размера дЕпа все сделки закрываются.

2. См. и правьте этот эксперт, добавляя фильтр по магику и всему, что Вам нужно...


 

Помогите дописать код. Попытался написать код, из которого следует:

-если МА50 пересекает МА200 снизу вверх и после этого

-если цена опускается до МА50

-на графике рисуются две линии, поддержка и сопротивление (рисуются за последние 15 баров);

   Это как бы все работает, но не могу добиться того, что бы эти линии появившись первый раз, потом оставались на месте,  это нужно по алгоритму торговли.(а они продолжают и дальше рисоваться).

Может их как -то привязать ко времени или к бару?

Вот код. Что нужно добавить?

#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


bool  Fact_1 = false;                    // Глобальная перемен для бай.   
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll(); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
         
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1 
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2 
 if (Fact_2 == true)

{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }  
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
   
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//----

//что сюда добавить что бы линии появившись, оставались на месте?




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

 

                 Что будет, что может быть если

покупать, продавать без указания на зазор для проскальзывания.Обычно +- 2 пункта ставят.

В ответ реквота.

 

А если, значение проскальзывания не ставить, получиться гарантировано купить? 

Причина обращения: