Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от axe44



Крутые памм-счета Комментариев 6
2017-10-24 11:58:58Рейтинг 0

БКС Комментариев 8
2017-08-11 02:57:12Рейтинг 0

торги
2017-01-26 00:01:37Рейтинг 0

HelloDual v3.0 Комментариев 3
2017-11-19 02:21:03Рейтинг 0

Создание советников бесплатно Комментариев 2
2017-07-16 22:54:20Рейтинг 0

Виртуальные ордера. (требуется поручитель)


Как известно цена ходит от уровня к уровню. Вот попробовал начертить уровни, поставить ордер. А что будет потом — на то посмотрим.

Описание стратегии:

Берём уровень текущую цену за основу, и пусть это будет икс. Берём скользящую среднию цену за игрек. Так же нам нужны такие величины как время в днях, шаг.
Если икс больше/меньше скользящей средней на шаг, то выставляем стоп ордер, прописав время его жизни
TimeCurrent()+60*60*60*24* время в днях
в днях, прибыль и лося. Выставляем ордер через час/четыре часа/день по усмотрению.
Ордерам нужен безубыток и информационное окно.
Спасибо за работу.
Кажется всё написал.
  • 0
  • Просмотров: 3582
  • 27 июля 2018, 13:08
  • axe44
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник без индикаторов Usrednitel777
Следующая запись в группе  
Вывод буферов индикатора
27 июля 2018
27 июля 2018

Брокер для ваших роботов, 15 лет на рынке

Комментарии (7)

+
0
Уточняю: Стоп ордер за скользящей средней
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 27 июля 2018, 13:10
+
0
Согласен быть поручителем.

Просьба добавить функцию:
— выставлять отдельным параметром за скользящей средней
и на заданной дистанции доп. стоп-ордер обратный начальному(к бай-стопу — селл-стоп и наоборот),
или к открытому рыночному
— при дистанции отступа = 0; (в т.ч. для СЛ и ТП) — они не выставляются.
— при магике = -1; сов. берёт все ордера с любыми магиками

Так можно будет заодно протестировать схему и при работе сетками в оба направления, в т.ч. для пирамидинга, заменив СЛ на стоп-ордер, или отодвинув СЛ подальше, сначала подстраховавшись обратным ордером, что особенно актуально при больших разбегах на старших ТФ.

Редактирован: 27 июля 2018, 14:04
avatar

  11  preasto Сообщений: 445

  • 27 июля 2018, 13:55
+
+1
мудрено. еще каждый пункт раз только все подробно на скринах
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 27 июля 2018, 17:38
+
0
просто сказать что устал трудно?
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 28 июля 2018, 12:18
+
0

Собрал как получилось. Со стандартным набором сливает. При оптимизации получается какая то прибыль.
Прошу поискать ошибки, добавить функционал, изменить набор функций.
Сам советник:
//+------------------------------------------------------------------+
//|                                                     лимитник.mq4 |
//|                                            Copyright 2018, axe44 |
//|                                 http://axe44.opentraders.ru/bio/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, axe44"
#property link      "http://axe44.opentraders.ru/bio/"
#property version   "4.00"
#property strict

//--- Inputs
extern double Lots        = 0.1;      // лот
extern int Times          = 30;       // время жизни ордеров
extern int StopLoss       = 30;      // лось
extern int TakeProfit     = 70;      // язь
//extern bool Tr            = 0;        // Обычный трал да/нет
extern int MA             = 40;       // длинна МА
extern bool Stop          = 0;        // Стоп ордера
extern bool Limit         = 1;        // Лимит ордера
extern int Spred          = 4;       // спред 
extern int steps          = 50;      // отступ 
extern int Slip           = 30;       // реквот
extern int Magic          = 123;      // магик

datetime t=1;double xx,yy,zz;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() //так приблизительно должно выглядеть
  {
//---
   if(Digits==3 || Digits==5)
     {
      TakeProfit*=10;
      StopLoss*=10;
      steps*=10;
      Slip*=10;
      Spred*=10;
     // NoLoss1*=10;
     // MinProfit*=10;
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//Берём уровень текущую цену за основу, и пусть это будет икс. Берём скользящую среднию цену за игрек. 
//Так же нам нужны такие величины как время в днях, шаг. 
//Если икс больше/меньше скользящей средней на шаг, то выставляем стоп ордер, прописав время его жизни
//TimeCurrent()+60*60*60*24* время в днях
//в днях, прибыль и лося. Выставляем ордер через час/четыре часа/день по усмотрению.                                                                   |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;
    

   if(type==5||type==3)
     {
      clr=Red;
      if(steps>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(steps>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
      r=OrderSend(NULL,type,Lots,price,Slip,sl,tp,"",Magic,TimeCurrent()+Times*60*60,clr);// время истечения TimeCurrent()+Times*60*60
      
     }
   if(type==2||type==4)
     {
      clr=Blue;
      if(steps>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(steps>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
      r=OrderSend(NULL,type,Lots,price,Slip,sl,tp,"",Magic,TimeCurrent()+Times*60*60,clr);
     
     } 

  
   return;
  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   
 if(t!=Time[0]&&(Ask-Bid)<Spred*Point)
 {
 
 NormalizeDouble(xx=Bid,Digits);
 NormalizeDouble(yy=iMA(NULL,0,MA,0,MODE_SMMA,PRICE_MEDIAN,0),Digits);
 NormalizeDouble(zz=xx-yy,Digits);
 if(xx<yy)NormalizeDouble(zz=yy-xx,Digits);
//Если икс больше/меньше скользящей средней на шаг, то выставляем стоп ордер и лимит, прописав время его жизни
   Print("длинна отступа ",steps*Point,", разница равна ",zz);
   if( AccountBalance()>300) if(zz>steps*Point)
     {
      if (Stop==1)
      if (xx<yy){ PutOrder(4,NormalizeDouble(yy+StopLoss*Point,Digits));}
      if (Limit==1)
      if (xx<yy){ PutOrder(3,NormalizeDouble(yy,Digits));}
      if (Stop==1)
      if (xx>yy){ PutOrder(5,NormalizeDouble(yy-StopLoss*Point,Digits));}
      if (Limit==1)
      if (xx>yy){ PutOrder(2,NormalizeDouble(yy,Digits));}
     }
       

      t=Time[0];   
   }
    
}
      
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 28 июля 2018, 18:47
+
0
Готов выступить поручителем Акса:) 
avatar

  19  Kashtan Сообщений: 739 - Игорь

  • 30 июля 2018, 19:50
+
0
Лёш… ты готов помириться? только чтоб без вранья в дальнейшем*boss* 
avatar

  19  Kashtan Сообщений: 739 - Игорь

  • 30 июля 2018, 19:51

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий