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

Рейтинг 2088



РЕКОМЕНДУЮ



Скрипт для открытия отложенного ордера по уровню фибо

Здравствуйте!
Смысл заключается в том, чтобы отложенные ордера выставлялись после пересечения наложенного мною уровня фибо 50 в сторону уровня 0. Т.е. если например уровень фибо был пробит вниз на n-ое кол-во пунктов, открывается buystop на том же уровне 50 со SL:
1) за уровнем 61.8, если он не был затронут,
2) или за экстремумом который пробил уровень 61.8. Т.е. при этом варианте SL должен будет постоянно передвигаться при обновлении экстремума, до момента рыночного исполнения ордера.
Ниже на скриншоте показал разницу sl.
Вроде бы все, надеюсь это не составит у Вас большого труда. Заранее спасибо!
  • 0
  • Просмотров: 6071
  • 1 марта 2016, 22:33
  • ini
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник работающий в определенное время
Следующая запись в группе  
Советник BBands_Stop_v1+Ozy
01 марта 2016
02 марта 2016

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

+
+1
Это лучше будет сделать в виде советника. Посмотрю сегодня.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 2 марта 2016, 09:05
+
0
Вроде бы все, надеюсь это не составит у Вас большого труда.


Это не так просто как кажется. я вот уже часа 2 сижу и не знаю как получить цены этих уровней. У крайних получил цену, а на промежуточные не знаю.


   string name;
   for(int i=ObjectsTotal()-1;  i>=0;  i--)
     {
      name=ObjectName(i);
     }
     
   Comment("\n 0:  ",ObjectGetDouble(0,name,OBJPROP_PRICE2),
           "\n 23.6:  ",ObjectGetDouble(0,name,OBJPROP_PRICE,1),
           "\n 38.2:  ",ObjectGetDouble(0,name,OBJPROP_PRICE,2),
           "\n 50:  ",ObjectGetDouble(0,name,OBJPROP_PRICE,3),
           "\n 61.8:  ",ObjectGetDouble(0,name,OBJPROP_PRICE,4),
           "\n 100:  ",ObjectGetDouble(0,name,OBJPROP_PRICE1));

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 2 марта 2016, 11:18
+
0
Я предполагал сам выставлять уровни, может ли советник получать данные от выставленного мною фибо? На автоматическую торговлю не рассчитываю.
Меня интересует по большому счету только 50 уровень, а это по сути половина между 0 и 100. Если у крайних Вы получили цену, возможно просто поделить на 2 кол-во пунктов и получится 50ый? А sl за 61.8 не принципиален, можно просто поставить фиксированный или за экстремум, который образовался после пробития 50ого.
Для меня главное, чтобы если я буду не у компьютера, и пропущу обратное пробитие 50 ого, там был выставлен buystop/sellstop. То есть выставил фибо и ушел.
Редактирован: 2 марта 2016, 12:42
avatar

  7  ini Автор Сообщений: 16

  • 2 марта 2016, 12:39
+
0
Андрей, OBJPROP_LEVELVALUE и по нему самому высчитать цену.
Редактирован: 2 марта 2016, 13:05
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 2 марта 2016, 13:02
+
0
Оксана, я перепробовал разные варианты. Свойство OBJPROP_LEVELVALUE выдает 0.236 или 0.628 но не цену уровня. В результате вручную пришлось считать.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 2 марта 2016, 18:15
+
0
Андрей, я же про это и написала: «OBJPROP_LEVELVALUE и по нему самому высчитать цену»
Взять свойство, которое указал пользователь у фибо и самому высчитать цену. Иначе никак.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 2 марта 2016, 18:18
+
0
Сделал основу для советника. Если цена выше 50 на дельта пунктов ставим селлстоп, ниже бай. Фибо ставится на хай лоу предыдущего дня. Смотрите пишите что исправит добавить.




//+------------------------------------------------------------------+
//|                                                   FiboLevels.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double StopLoss    = 500; //лось
extern double TakeProfit  = 500; //язь
extern int    Delta       = 100; //проход цены 
extern int    Slip        = 10;  //проскальзывание
extern int    Expiration  = 10;  //время истечения ордера
extern int    Magic       = 123; //магик
extern double Lots        = 1;   //лот
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |
//+------------------------------------------------------------------+
void FiboLevelsCreate(datetime t1,double p1,datetime t2,double p2)
  {
   ObjectsDeleteAll(0,OBJ_FIBO);
//--- создадим "Уровни Фибоначчи" по заданным координатам
   ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,t1,p1,t2,p2);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsTesting())
     {
      double up=iHigh(NULL,PERIOD_D1,1);
      double dn=iLow(NULL,PERIOD_D1,1);
      FiboLevelsCreate(Time[1],up,Time[15],dn);
     }

   string name="FiboLevels";
/*   
   for(int i=ObjectsTotal()-1;  i>=0;  i--)
     {
      name=ObjectName(i);
     }
*/
   double F = ObjectGet(name, OBJPROP_PRICE1);
   double S = ObjectGet(name, OBJPROP_PRICE2);

   double p0 = NormalizeDouble(S, Digits);
   double p100 = NormalizeDouble(F, Digits);
   double p236 = NormalizeDouble((F-S)*0.236+S, Digits);
   double p382 = NormalizeDouble((F-S)*0.382+S, Digits);
   double p50 = NormalizeDouble((F-S)*0.50+S, Digits);
   double p618 = NormalizeDouble((F-S)*0.618+S, Digits);

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1 && p50-Bid>=Delta*Point) PutOrder(4,p50);
      if(CountOrders(5)<1 && Bid-p50>=Delta*Point) PutOrder(5,p50);
     }

   Comment("\n Fibo 100: ",p100,
           "\n Fibo 0: ",p0,
           "\n Fibo 236: ",p236,
           "\n Fibo 382: ",p382,
           "\n Fibo 50: ",p50,
           "\n Fibo 618: ",p618,
           "\n Name: ",name);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 2 марта 2016, 21:38
+
0
Извиняюсь, если я не достаточно понятно написал тз. Изначально я планировал сам выставлять уровни, от которых бы выставлялись ордера автоматически, поэтому написал «скрипт», но не был уверен, что это возможно. Советник выставляет ордера ежедневно вне зависимости от касания уровня и он не определяет нужные волны, а для этого, вероятно, понадобится больше ресурсов. Я тут чуть-чуть порисовал, чтобы пояснить идею.

Также 100 и 0 уровень отталкивается от максимума и минимума предыдущего дня, при этом не обновляется, что не совсем верно. Вернее было бы от начала волны (верхнего экстремума) до конца волны (нижнего экстремума).

Если есть возможность, самому выдавать советнику нужный уровень 50 и + выше сказанное то было бы идеаль. Стопы я бы выставлял сам.
Редактирован: 2 марта 2016, 23:41
avatar

  7  ini Автор Сообщений: 16

  • 2 марта 2016, 23:38
+
+1
Это только набросок, позже буду делать ближе к ТЗ.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 3 марта 2016, 00:13
+
0
Пересекли 50 вниз байстоп вверх селлстоп:




//+------------------------------------------------------------------+
//|                                                   FiboLevels.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern int    StopLoss    = 500; //лось
extern int    TakeProfit  = 500; //язь
extern int    Delta       = 100; //проход цены 
extern int    Slip        = 10;  //проскальзывание
extern int    Expiration  = 10;  //время истечения ордера
extern int    Magic       = 123; //магик
extern double Lots        = 1;   //лот

int cross=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |
//+------------------------------------------------------------------+
void FiboLevelsCreate(datetime t1,double p1,datetime t2,double p2)
  {
   ObjectsDeleteAll(0,OBJ_FIBO);
//--- создадим "Уровни Фибоначчи" по заданным координатам
   ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,t1,p1,t2,p2);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CrossUP(double p)
  {
   int res=0;
   if(Open[0]<p && Bid-p>=Delta*Point) res=1;
   return(res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CrossDN(double p)
  {
   int res=0;
   if(Open[0]>p && p-Bid>=Delta*Point) res=1;
   return(res);
  }  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsTesting())
     {
      double up=iHigh(NULL,PERIOD_D1,1);
      double dn=iLow(NULL,PERIOD_D1,1);
      FiboLevelsCreate(Time[1],up,Time[15],dn);
     }

   string name="FiboLevels";
/*   
   for(int i=ObjectsTotal()-1;  i>=0;  i--)
     {
      name=ObjectName(i);
     }
*/
   double F = ObjectGet(name, OBJPROP_PRICE1);
   double S = ObjectGet(name, OBJPROP_PRICE2);

   double p0=NormalizeDouble(S,Digits);
   double p100 = NormalizeDouble(F, Digits);
   double p236 = NormalizeDouble((F-S)*0.236+S, Digits);
   double p382 = NormalizeDouble((F-S)*0.382+S, Digits);
   double p50=NormalizeDouble((F-S)*0.50+S,Digits);
   double p618=NormalizeDouble((F-S)*0.618+S,Digits);

   if(High[1]>p50 && Low[1]<p50) cross=1;
   if(Hour()==5) cross=0;

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1 && CrossDN(p50)==1) PutOrder(4,p50);
      if(CountOrders(5)<1 && CrossUP(p50)==1) PutOrder(5,p50);
     }

   Comment("\n Fibo 100: ",p100,
           "\n Fibo 0: ",p0,
           "\n Fibo 236: ",p236,
           "\n Fibo 382: ",p382,
           "\n Fibo 50: ",p50,
           "\n Fibo 618: ",p618,
           "\n Name: ",name,
           "\n Cross: ",cross,
           "\n CrossUP: ",CrossUP(p50),
           "\n CrossDN: ",CrossDN(p50));
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 3 марта 2016, 08:35
+
0
*hi* 
Осталось только фибо под волны подстроить

Редактирован: 3 марта 2016, 09:03
avatar

  7  ini Автор Сообщений: 16

  • 3 марта 2016, 09:02
+
0
Осталось только фибо под волны подстроить

Напишите подробнее, посмотрим что можно сделать.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 3 марта 2016, 09:30
+
0
Я так понимаю, возможности самому выставлять уровень, где бы советник совершал открытие сделок нет? Если возможность есть, то более ничего не нужно. Если нет, то тогда хорошо было бы фибо подстраивать и тут, вероятно, придется что то придумывать. Я лично всегда делал на глазок.
Условия точки входа:
1) Заходим в сторону направления тренда, только на коррекционной волне.

2)Чем реще, сильнее, безоткатная трендовая волна и чем дольше и неуверенней корекция (больше свеч, неуверенное движение), тем больше шансов, что в промежутке между 50ой и 61.8 произойдет рывок.

Благодаря sellstop\buystop вместо buy limit\sell limit мы минимизируем шансы на SL в случае новостных движений, резких разворотов и тд.
Как это автоматизировать не знаю. Попробовал поэкспериментировать с индикатором zigzag, и идеально настроить его не получается


Поэтому, идеальный вариант до сих пор, это выставлять самому. Если у Вас есть варианты, как это автоматизировать, то это будет супер.
avatar

  7  ini Автор Сообщений: 16

  • 3 марта 2016, 16:30
+
0
Если у Вас есть варианты, как это автоматизировать, то это будет супер.


Тут единственное могу предложить натягивать фибу по экстремумам на указанное количество баров назад. Например считаем наивысшую и низшую точку с 5 бара по 20-й и строим фибу.

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 3 марта 2016, 20:10
+
0
Если значения этой переменой можно будет выставлять самому, то вариант хороший. Через оптимизацию можно будет найти оптимальный вариант для каждой валютной пары.
avatar

  7  ini Автор Сообщений: 16

  • 3 марта 2016, 20:20
+
0
Сейчас строит фибу по барам указанным в настройках.




extern int    Start = 1;   //начальный бар
extern int    End   = 20;  //конечный бар



//+------------------------------------------------------------------+
//|                                                   FiboLevels.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern int    StopLoss    = 500; //лось
extern int    TakeProfit  = 500; //язь
extern int    Delta       = 100; //проход цены 
extern int    Slip        = 10;  //проскальзывание
extern int    Expiration  = 10;  //время истечения ордера
extern int    Start       = 1;   //начальный бар
extern int    End         = 20;  //конечный бар
extern int    Magic       = 123; //магик
extern double Lots        = 1;   //лот

int cross=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |
//+------------------------------------------------------------------+
void FiboLevelsCreate(datetime t1,double p1,datetime t2,double p2)
  {
   ObjectsDeleteAll(0,OBJ_FIBO);
//--- создадим "Уровни Фибоначчи" по заданным координатам
   ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,t1,p1,t2,p2);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CrossUP(double p)
  {
   int res=0;
   if(Open[0]<p && Bid-p>=Delta*Point) res=1;
   return(res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CrossDN(double p)
  {
   int res=0;
   if(Open[0]>p && p-Bid>=Delta*Point) res=1;
   return(res);
  }  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsTesting())
     {
      double up=High[iHighest(NULL,0,MODE_HIGH,End,Start)];
      double dn=Low[iLowest(NULL,0,MODE_LOW,End,Start)];
      FiboLevelsCreate(Time[Start],up,Time[End],dn);
     }

   string name="FiboLevels";
/*   
   for(int i=ObjectsTotal()-1;  i>=0;  i--)
     {
      name=ObjectName(i);
     }
*/
   double F = ObjectGet(name, OBJPROP_PRICE1);
   double S = ObjectGet(name, OBJPROP_PRICE2);

   double p0=NormalizeDouble(S,Digits);
   double p100 = NormalizeDouble(F, Digits);
   double p236 = NormalizeDouble((F-S)*0.236+S, Digits);
   double p382 = NormalizeDouble((F-S)*0.382+S, Digits);
   double p50=NormalizeDouble((F-S)*0.50+S,Digits);
   double p618=NormalizeDouble((F-S)*0.618+S,Digits);

   if(High[1]>p50 && Low[1]<p50) cross=1;
   if(Hour()==5) cross=0;

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1 && CrossDN(p50)==1) PutOrder(4,p50);
      if(CountOrders(5)<1 && CrossUP(p50)==1) PutOrder(5,p50);
     }

   Comment("\n Fibo 100: ",p100,
           "\n Fibo 0: ",p0,
           "\n Fibo 236: ",p236,
           "\n Fibo 382: ",p382,
           "\n Fibo 50: ",p50,
           "\n Fibo 618: ",p618,
           "\n Name: ",name,
           "\n Cross: ",cross,
           "\n CrossUP: ",CrossUP(p50),
           "\n CrossDN: ",CrossDN(p50));
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 3 марта 2016, 20:33
+
0
Несмотря на то, что советник часто ошибается, при определенных настройках, соотношения sl к tp 1 к 3 — выглядит перспективно.

Можем добавить трейлинг стоп, а также перенос sl в безубыток?
Очень много сделок лосей, которые были в прибыли

Редактирован: 3 марта 2016, 22:20
avatar

  7  ini Автор Сообщений: 16

  • 3 марта 2016, 22:16
+
0

Я подумал над обнаружением (идентификации) волн.
Искать максимальные и минимальные точки на отрезках, где RSI пересекает 30 и 70. Фибоначи формировать от экстремумов в сторону MA. Это возможно?
avatar

  7  ini Автор Сообщений: 16

  • 4 марта 2016, 00:46
+
0
Начал со скрипта, а теперь от тестов в большом предвкушении. Вот тест по gbpusd с 2015 по текущий день

Без прохода цены, то есть при касании фибо сделка открывается и это с sl 300 к tp 1500 и при сделках, где 50% убыточных потенциально прибыльные

Если буквально добавить трейлинг и sl в безубыток, то это уже потенциально прибыльный советник.
Редактирован: 4 марта 2016, 19:51
avatar

  7  ini Автор Сообщений: 16

  • 4 марта 2016, 19:50
+
0
Добавил трал с бу: www.opentraders.ru/downloads/1084/

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 4 марта 2016, 20:10

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