Скачать MetaTrader 5

остановка советника при достижении уровня стопа

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Создавай темы на форуме и увеличивай рейтинг!
dimonik
24
dimonik 2012.12.19 18:13 

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

Спасибо. 

Mikhail Kozhemyako
1234
Mikhail Kozhemyako 2012.12.19 18:40  
dimonik2011:

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

Спасибо. 



Что Вам сказать, "Если включаю советник" (Вручную) то также и выключайте. Чтобы не пролететь не забывайте про  стоплосс, ну и тейкпрофит вам достаточный. Задумайтесь над тем что скорей всего вы будете ловитить отрицательные профиты. Уж если собрались торговать вручную, то торгуйте до самого...
IgorM М
4801
IgorM М 2012.12.19 18:57  
dimonik2011:Короче нужен код, который я смогу вставить в советник. Уровень стоп советник (выключатель), при достижении ценой этого уровня, советник, "останавливается "

попробуйте с таким кодом поэкспериментировать:

extern string name_stop_label = "stop_my_expert";
extern double price_up        = 1.3300;
extern double price_down      = 1.3000;

int start(){
   if(GlobalVariableCheck(name_stop_label)) return(0);
   if(Close[0]>price_up)   GlobalVariableSet(name_stop_label,price_up);
   if(Close[0]<price_down) GlobalVariableSet(name_stop_label,price_down);
   if(GlobalVariableCheck(name_stop_label)) return(0);// можно эту строку удалить
   
return(0);
}
Алексей Тарабанов
7200
Алексей Тарабанов 2012.12.19 23:36  
IgorM:

попробуйте с таким кодом поэкспериментировать:

 

Игорь, а почему просто не остановить работу советника? Достиг уровня стопа и остановился, без повторных запусков на каждом тике? 
zoritch
4326
zoritch 2012.12.20 08:05  

можно попробовать

  if  ...условие... 

     { 

   deinit(); 

     }

 

 неполиткорректно, конечно, но задачу свою выполняет   :-)))

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

Nail Murtazin
386
Nail Murtazin 2012.12.22 09:59  

Попробуйте так:

//+------------------------------------------------------------------+
//|                                                    Остановка.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"



double уровень_стопа = 1.33333;//перед началом работы =0, далее когда уходите, выставляете нужный уровень

bool Работаем;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  if(уровень_стопа==0)Работаем=true;  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 

//в место в коде где начинаются открытия ордеров ставим флаг
  if(Работаем){

//код открытия ордеров
   
}
//если достгли заданого уровня - остановка советника
   if(Ask==уровень_стопа){//или Bid
     Работаем=false; 
     fЗакрыть_все_ордера();  
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+
FION2
1072
FION2 2012.12.23 09:11  
Кнопку "советники"  нужно отжать через  WinApi. 
Алексей Тарабанов
7200
Алексей Тарабанов 2012.12.23 09:30  
Просто разделить что-нибудь на ноль,- советник остановится и будет ожидать повторной инициализации. 
Mikhail Kozhemyako
1234
Mikhail Kozhemyako 2012.12.23 09:35  
tara:
Просто разделить что-нибудь на ноль,- советник остановится и будет ожидать повторной инициализации. 

Чёрт, оригинально, ща попробую)))
Алексей Тарабанов
7200
Алексей Тарабанов 2012.12.23 09:40  
Еще лучше - ошибиться при вызове импортируемой функции https://docs.mql4.com/ru/runtime/errors
Mikhail Kozhemyako
1234
Mikhail Kozhemyako 2012.12.23 09:58  
tara:
Просто разделить что-нибудь на ноль,- советник остановится и будет ожидать повторной инициализации. 



А вот фигушки:

 

#property copyright "Copyright © 2012 Mikhail Kozhemyako"
#property link      "ua3xcm@obninsk.com"
int tick=0,Realtick=0;
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()
  {
   if(tick>=10) return(0);
   if(Realtick>=10) return(0);
   double x=0.0;
   Alert("Собираемся поделить  на ноль, тик= ",Realtick);
   Realtick++;
   x=x/x;
   Alert("Делили на ноль, А пофигу уже который тик= ",tick);
   tick++;
   return(0);
  }
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий