Вопрос к знатокам - страница 15

 
rid >>:

Вот как сделано:

Так у Вас StopLoss == TakeProfit, а в условиях сравнения такого варианта не предусмотрено (((

 
Помоему от Ask нужно считать. Продаём по Bid, закрываем по Ask.
 

Да, - оч. может быть, что от Аск надо закрывать. Попробую.

Т.е.для селл  тейкпрофит можно и от Бид.

А стополсс - надо строго от Аск, видимо.. стоплевел отсчитывать

 

Добрый день всем. 

Вот такой вопрос.

Советник (пипсовочный, гридер) на реале почему-то "поимел" привычку вдруг без видимых причин останавливать свою работу! (ДЦ Броко)

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

Иногда советник встает, повторюсь, без видимых причин и чтобы его "подтолкнуть" нужно перезапустить мт4 или переустановить советник. 

Ордера выставляются корректно. В соотв. с регламентом.

В Журнале ошибок нет. Кто сталкивался, - пож. подскажите ?

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

 
Как упростить шаблон из статьи "Опираясь на силу шаблонов", удалив SL, TP, отложенные ордера и их модификацию. А то невозможно эксперементировать.
 
shap писал(а) >>
Как упростить шаблон из статьи "Опираясь на силу шаблонов", удалив SL, TP, отложенные ордера и их модификацию. А то невозможно эксперементировать.

Это уже четвертый пост с одним и тем же содержимым. Не хорошо

 

Добрый вечер. Вопрос по индикатору.

Я задаю в индюке построение.  вееров  Ганна от минимума вверх и от максимума вниз.

Но, почему-то линии веера направляются не так, как мне надо, - а сов. случайным образом ! 

Например, вот так (здесь от максимума 1.4071 веер почему-то пошел вверх):

Не знаю, почему так.

Задаю вееры в ф-и СТРАТ вот так:

//задаем текущие значения ввера Ганна от минимума вверх
// и вычисляем масштаб веера
        ObjectMove( "GANNFAN_" ,0,Time[xLOW],LOW);
        Масштаб_Веера_= MathAbs (MathSqrt((LOW)*10000) ) ;

//задаем текущие значения ввера Ганна от максимума вниз
// и вычисляем масштаб веера
        ObjectMove( "GANNFAN" ,0,Time[xHIGH],HIGH);
        Масштаб_Веера= (-1)* MathAbs(MathSqrt((HIGH)*10000)  );

Пож. подскажите, почему так и где ошибка ?

 

Вот весь код индикатора;

#property indicator_chart_window
//-------------------------------------------------------------------+
extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----" ; 
extern int       Bars_=200;//кол-во баров для расчета формулы
extern int       TimeFr=0;//задаем тф для расчета
extern color     Цвет_Веера = DarkViolet;     
//--------------------------------------------------------------
int     xLOW, xHIGH;
double   HIGH, LOW ;
 double       Масштаб_Веера ;
 double       Масштаб_Веера_ ;
//+------------------------------------------------------------------+
int init()
  { 
//обьявляем веер Ганна от мин вверх  
ObjectCreate("GANNFAN_",OBJ_GANNFAN,0,0,0,0,0); 
//задаем флаг фонового отображения веера 
 ObjectSet("GANNFAN_", OBJPROP_BACK,1);
 //задаем цвет веера 
ObjectSet("GANNFAN_", OBJPROP_COLOR,Цвет_Веера);
//задаем толщину линий веера Ганна
ObjectSet("GANNFAN_", OBJPROP_WIDTH,2); 
 //задаем масштаб веера Ганна   
ObjectSet("GANNFAN_",OBJPROP_SCALE,Масштаб_Веера_); 

//обьявляем веер Ганна  от макс вниз 
ObjectCreate("GANNFAN",OBJ_GANNFAN,0,0,0,0,0); 
//задаем флаг фонового отображения веера 
 ObjectSet("GANNFAN", OBJPROP_BACK,1);
 //задаем цвет веера 
ObjectSet("GANNFAN", OBJPROP_COLOR,Цвет_Веера);
//задаем толщину линий веера Ганна
ObjectSet("GANNFAN", OBJPROP_WIDTH,2); 
 //задаем масштаб веера Ганна   
ObjectSet("GANNFAN",OBJPROP_SCALE,Масштаб_Веера);  
 
//задаем вертикальные линии от экстремумов 
ObjectCreate("line",OBJ_VLINE,0,0,0,0,0);//вертикальная линия от макс
ObjectSet("line", OBJPROP_BACK,1);
ObjectSet("line", OBJPROP_COLOR,Red);//цвет
ObjectSet("line",OBJPROP_WIDTH,2); //толщина линии
ObjectCreate("line_",OBJ_VLINE,0,0,0,0,0);//вертикальная линия от мин
ObjectSet("line_", OBJPROP_BACK,1);
ObjectSet("line_", OBJPROP_COLOR,Orange);//цвет
ObjectSet("line_",OBJPROP_WIDTH,2);//толщина линии 
  }//------конец функции ИНИТ

//+------------------------------------------------------------------+
int deinit() {
ObjectDelete("GANNFAN_");
ObjectDelete("GANNFAN");
ObjectDelete("line");
ObjectDelete("line_");
//if (!IsTesting()) ObjectsDeleteAll(0,OBJ_TREND);  
               }

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

int start()
  { 
 xHIGH =  iHighest( NULL, TimeFr, MODE_HIGH,Bars_ ,1); //номер бара максимума
 HIGH =  iHigh ( NULL, TimeFr, xHIGH) ;        // ценовое значение максимума
 xLOW  =  iLowest( NULL, TimeFr, MODE_LOW, Bars_ ,1);   //номер бара минимума
 LOW  =  iLow( NULL, TimeFr, xLOW) ;            // ценовое значение минимума
//задаем текущие горизонтальные лимнии на мин и макс
//ObjectMove( "lowline" ,0,Time[xLOW] ,LOW); 
//ObjectMove("highline",0,Time[xHIGH],HIGH); 
        
 //задаем текущие значения ввера Ганна от
// минимума и вычисляем масштаб веера
   ObjectMove( "GANNFAN_" ,0,Time[xLOW],LOW);
   Масштаб_Веера_= MathAbs (MathSqrt((LOW)*10000) ) ;
        
//задаем значения для отрисовки вертик линии на минимуме
   ObjectMove( "line_" ,0,Time[xLOW],0); 
        
          
//задаем текущие значения ввера Ганна от 
//максимума вниз и вычисляем масштаб веера
   ObjectMove( "GANNFAN" ,0,Time[xHIGH],HIGH);
   Масштаб_Веера= (-1)* MathAbs(MathSqrt((HIGH)*10000)  );
        
 //задаем значения для отрисовки вертик линии на максимуме
 ObjectMove( "line" ,0,Time[xHIGH],0); 


   return(0);
  }//конец функции СТАРТ
 

Привет, у меня это всего второе сообщение, то есть на форуме новый, начал учить язык, естественно вопросов немеренно, а по книгам как то сложновато. Начал с учебника, уважаемого форумчанина Сергей Ковалёва, и некоторые статьи этого форума учил... После продолжительной теории, приступил практике, создал шаблон и набросок первого эксперта, разделил его по блокам, и вот одну функцию за другой разбираю (досканально), чтобы понять что как работает, поверьте если ты водолаз а не програмист, то это не просто всё в башке разложить, и осмыслить что к чему. Так вот к делу, может кто нибудь подсказать, что для Професионала для меня пока реальная проблема: сегодня просидел целый день так и смог решить задачу.

Я некоторые функции, запускаю пробно как скрипт, нет ли ошибок при компиляции и какие, чтобы проверить работает или нет в терминале. Взял сегодня Функцию предварительного подсчёта баров в окне:

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

int start()
  {
      int A = 100;
//+------------------------------------------------------------------+  
      if(Bars < A)             // Недостаточно баров
      {      
      Alert("Недостаточно баров в окне инструмента.");
      return;                  // Выход из start()
      }


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

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

Теперь я добавляю переменную и дописываю оператор if, а также в будущем блоке обработок ошибок Bloc_Error, всталяю оператор switch получается это:

int start()
  {
      int A = 100;
      bool Work=true;   
//+------------------------------------------------------------------+      
      int Bloc_Error    // Пользовательская функция
//+------------------------------------------------------------------+      
    switch()           // Преодолимые ошибки:
      {
      case 3:          // Неверные параметры:
      Work=false;
      return(0);
      }

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

      if(Bars < A)   // Недостаточно баров
      {      
      Alert("Недостаточно баров в окне инструмента.");
      return;                  // Выход из start()
      }
      if(Work==false)          // Ошибка   
      {      
      Alert("Эксперт не работает.");     
      return;                  // Выход из start   
      }
//+------------------------------------------------------------------+   
  return(0);
   }
Вопрос такой что я тут неправильно наплёл в операторе switch, почему не вылазиет сообщение *Эксперт не работает*, и чтобы действительно советник прекращал работу?????
 

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

https://docs.mql4.com/ru/basis/operators/switch - все видно сразу. пока конструкция не отложится в голове - пользуйте классический шаблон. внимательно сравните - сразу найдете ошибки.

учитесь пользоваться поиском.

после прочтения документации "по вопросу", найдите тексты с кодами и посмотрите КАК они применяются...