Парный трейдинг - Грааль есть

NeColla

Элитный участник
неее - совет токо один могу дать :) тут - в теме, описан ряд индикаторов - и Любой из них можно подогнать под систему - пробуйте их - или придумайте свой :)
ведь это только первая часть ТС, вторая - это ММ RM - от этого зависит Прибыльность ТС... вот с ней поработайте....

а насчёт зеромакд..... я его сам делал - по формуле.... почемуто показатели НЕ совпадают с теми что выкладывались на форуме.... :) гдето в реализации косячок у когото из нас :) - или же "Неправильные" параметры участники подбирают для МАшек этих индикаторов
ведь это - Гистограмма - Результат "сложения" 4х(Четырёх) МАшек.... и у каждой свой параметр может быть для конкретного ТФ....
 

NeColla

Элитный участник
ЗЫ - а если приплести сюда ещё и Контрольную линию - то получится 6(шесть) машек со своими параметрами - да ещё % отклонения....
вот у тебя ЗероМакд и не подходит почемуто :)
 

NeColla

Элитный участник
ЗЫЫ - да ещё Адаптивную часть ты не учёл :) стат данные за полгода, 2 месяца и неделю перед конкретной сделкой = с выбором параметров дающих минимальную просадку на последнем этапе, а в других, отбор по другим параметрам....
---
может решив в комплексе Первую часть ТС, и подобрав ММ ты и решишь эту Задачку(Грааль для себя)
 

Insaider

Местный житель
У вас есть зеро макд работоспособный для МТ5? начнем с него

Посмотреть вложение 69754

Если вопрос ко мне то я пользовал, вот этот ZeroLag
http://www.mql5.com/ru/code/100

И все таки
ведь это - Гистограмма - Результат "сложения" 4х(Четырёх) МАшек.... и у каждой свой параметр может быть для конкретного ТФ....
Похоже используется не одинаковые параметры машек, по ФИ (если правильно понимаю).
Как то NeColla их оптимизирует, чтоль.

стат данные за полгода, 2 месяца и неделю перед конкретной сделкой = с выбором параметров дающих минимальную просадку на последнем этапе
Не совсем понятно "полгода, 2 месяца и неделю" почему не семь месяцев, а дискретно.
И получается все же нужно вести просчет некого оптимального уровня с которого надо открываться. (пока не совсем понятно надо думать)
 

redneedle

red mercury
неправда ваша :) наверное ты не вкурил Где Открывать позиции - где тралить а где закрывать :)
ЗЫ - даже на приведённом тобой рисунке все 4 раздвижки дали плюсики в профите....
ЗЫЫ - в плюсике если смотреть Евру и Фунт - на графиках
а не Евру и Франк как у тебя считает профит лосс позиция.....
ЗЫЫЫ - и ошибка №3... :) - закрытие или Трал Начинается в Текущей 0ой точке а не переносится на следующую.....

извеняюсь не тот график под скрин подставил

и все же Ind_2 Line+11-Histo.mq4 дает неточности ... которые могут заканчиваться "-" мягко выражаясь

на счет вкурил пока иду без единого общего минуса по связкам пар ... и давно :)
ЗЫЫЫ - и ошибка №3... :) - закрытие или Трал Начинается в Текущей 0ой точке а не переносится на следующую.....

я про закрытие или открытие вообще не говорил ... понятно и первом классе: старый ноль уже не ноль ... я говорил только о точности исчесляемых данных
 

Вложения

  • 00222.jpg
    00222.jpg
    100,2 КБ · Просмотры: 355
  • 00223.jpg
    00223.jpg
    114,4 КБ · Просмотры: 246
Последнее редактирование:

NeColla

Элитный участник
ох уж эти рисуночки.... :)
повторюсь.... 0ая точка - это НЕ точка входа в позицию - это Точка начала отслеживания входа в сделки.... - следующая 0ая точка - это или Закрытие позиций Или начала Трала эквити при положительном общем результате - возможно траление вплоть до следующего входа....
---
к примеру - на 1ом рисунке жёлтый квадратик показывает начало 0ой точки - а Вход в позицию будет через несколько часов , вернее сказать на следующий день - в начале гдето... а потом 0ая точка в районе 8 утра будет сигнализировать о Трале совокупной ПОЛОЖИТЕЛЬНОЙ позиции...
---
ну да ладно.... как хотите так и используйте инструменты... воля ваша :)
 

NeColla

Элитный участник
ЗЫ - и насчёт точности исчесления... лично для меня - ТО, что я вижу на вашем рисунке - показывает ТОЛЬКО положительные результаты каждого входа - где там минуса у вас берутся - чес слово не пойму.... :)
 

redneedle

red mercury
ох уж эти рисуночки.... :)
повторюсь.... 0ая точка - это НЕ точка входа в позицию - это Точка начала отслеживания входа в сделки.... - следующая 0ая точка - это или Закрытие позиций Или начала Трала эквити при положительном общем результате - возможно траление вплоть до следующего входа....
---
к примеру - на 1ом рисунке жёлтый квадратик показывает начало 0ой точки - а Вход в позицию будет через несколько часов , вернее сказать на следующий день - в начале гдето... а потом 0ая точка в районе 8 утра будет сигнализировать о Трале совокупной ПОЛОЖИТЕЛЬНОЙ позиции...
---
ну да ладно.... как хотите так и используйте инструменты... воля ваша :)


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

4er58

Почетный гражданин
я нулевую точку и расматриваю как точку отсчета а не как место входа - зачем входить на месте схождении ..... какое то странное недопонимание между нами

А почему бы на расхождении не входить расставленными пробойничками в разные стороны через n-пунктов по двум ногам , я так понял что Никола вроде сам это использует ?
 

NeColla

Элитный участник
нуу... так покажите ГДЕ там Минуса?
имхо тупиковый момент вообще пользоваться Ind_2 Line+11-Histo.mq4
прослеживая по пунктам вообще нет никакого схлопывания от раздвижек

и все же Ind_2 Line+11-Histo.mq4 дает неточности ... которые могут заканчиваться "-" мягко выражаясь

т.е. я так понимаю... смотря на свой график вы видите ОТРИЦАТЕЛЬНЫЕ результаты от Ваших точек Входа выхода....
вот ЭТОто и не понятно.... ГДЕ, в Какой Момент вы их... минуса , видите?
так как - в классической интерпретации - ваши рисунки показывают ТОЛЬКО положительные результаты? :)


 
Последнее редактирование:

4er58

Почетный гражданин
Никола как по вашему по индексам не поздно или не рано входить , зашел от 6 марта ( в расчете на сдвиг ) , сначала была прибыль но пересечения небыло , теперь убыток висит , доливаемся , или рано ? , или пробойники раставляем ? Или что посоветуете где закрываем убытки ?

Раздвижечка то не хочет останавливаться . ( до этого все шло прекрасно)
 

Вложения

  • индексы.jpg
    индексы.jpg
    98,2 КБ · Просмотры: 277
Последнее редактирование:

NeColla

Элитный участник
использовать ТФ 4 часа - имхо НЕ в этой системе... тут от 15-30 макс 1 час рабочие тф...
а так, надо глянуть бы по истории - примерно 15 марта надо было бы Долиться ещё
ну и ждать схлопывания... если депозит позволит....

ЗЫ - для такого ТФ совсем другие параметры машек нужны.... и лучше на нём не работать....
ЗЫЫ - обратите внимание на Тему от Леонида(раз вы от него индикатором пользуетесь) - типа так называлась - КРАТКОСРОЧНАЯ псевдоарбитражная сделка.. или как то так... не для больших тф...
 
Последнее редактирование:

4er58

Почетный гражданин
использовать ТФ 4 часа - имхо НЕ в этой системе... тут от 15-30 макс 1 час рабочие тф...
а так, надо глянуть бы по истории - примерно 15 марта надо было бы Долиться ещё
ну и ждать схлопывания... если депозит позволит....

ЗЫ - для такого ТФ совсем другие параметры машек нужны.... и лучше на нём не работать....
ЗЫЫ - обратите внимание на Тему от Леонида(раз вы от него индикатором пользуетесь) - типа так называлась - КРАТКОСРОЧНАЯ псевдоарбитражная сделка.. или как то так... не для больших тф...



И все же допустим что такая ситуация произошла на 15 минтуках , раздвижка поперла , что делаем в этой систуации ? Допустим расчитали месячный диапазон кросса EURGBP - она же волатильность 2 ног , правильно ? ход цены допустим гуляет в стреднем 100 пунктов в день .

Дальше что нам это дает ? Как использывать инфу ? Ставим стопы за эти 100 пунктов ?
 
Последнее редактирование:

NeColla

Элитный участник
подобие этой ситуации нарисовано на выше лежащем рисунке - точки 6 6.1 6.2 7
посмотри сам :)
 

4er58

Почетный гражданин
подобие этой ситуации нарисовано на выше лежащем рисунке - точки 6 6.1 6.2 7
посмотри сам :)

То есть тупо на кройняк закроемся с общим минусом по тралу это и есть наш стопарь. Неколла ты молоток :) .

Но тут еще созрел вопрос , а нафига нам тогда волотильность считать ?
И еще как относитесь к пробойникам на разные ноги , на одной пошли плюсы вторая стоит без работы , это же вроде тоже из вашей оперы ?
 
Последнее редактирование:

NeColla

Элитный участник
ну и ещё подкину инфы :) индикатор и советник - думал в мт5 - нее - в мт4
Код:
//+------------------------------------------------------------------+
//|                                                          ARB.mq4 |
//|                                                               TO |
//+------------------------------------------------------------------+
#property copyright "TO"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Magenta
#property indicator_color2 White
#property indicator_level1 0
#property indicator_level2 150
#property indicator_level3 -150

extern string symbol_1 = "EURUSD";
extern string symbol_2 = "USDCHF";
extern int BARS = 2000;
extern int MA_period_1 = 20;
extern int MA_period_2 = 10;

double buff_1[];
double buff_2[];

int init()
{
   IndicatorBuffers(2);
   IndicatorDigits(0);
   SetIndexBuffer(0,buff_1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(1,buff_2); 
   return(0);
}

int deinit()
{
   return(0);
}

int start()
{
   int i;
   for ( i = BARS; i >= 0 ; i -- )buff_1[i] = iOpen(symbol_1,Period(),i) - 1/iOpen(symbol_2,Period(),i);
   for( i = 0; i < BARS - MA_period_1 ; i++)buff_2[i]=iMAOnArray(buff_1,0,MA_period_1,0,MODE_SMA,i);
   for ( i = BARS; i >= 0 ; i -- )
   {
      buff_1[i] -=buff_2[i];
      buff_2[i] = buff_1[i];
   }   
   for( i = 0; i < BARS - MA_period_2 - MA_period_1 ; i++)buff_1[i]=NormalizeDouble(iMAOnArray(buff_2,0,MA_period_2,0,MODE_SMA,i)/MarketInfo(symbol_1,MODE_POINT),0);
   return(0);
}
 
Последнее редактирование модератором:

NeColla

Элитный участник
может кому пригодятся :) там был индикатор - по нему вот советник....
Код:
//+------------------------------------------------------------------+
//|                                                       EA_ARB.mq4 |
//|                                                               TO |
//+------------------------------------------------------------------+
#property copyright "TO"

extern int MA_1 = 20;
extern int MA_2 = 10;
extern int UP_LEVEL = 150;
extern int DOWN_LEVEL = -150;
extern bool inverse = false;
extern double LOTS = 0.1;
extern int ID = 3556;

int init()
{
   return(0);
}

int deinit()
{
   return(0);
}

int start()
{
   if ( !isNewBar() )return(0);
   double ind_1 = iCustom(NULL,0,"ARB_IND","EURUSD","USDCHF",100,MA_1,MA_2,0,0);
   double ind_2 = iCustom(NULL,0,"ARB_IND","EURUSD","USDCHF",100,MA_1,MA_2,0,1);
   double ind_3 = iCustom(NULL,0,"ARB_IND","EURUSD","USDCHF",100,MA_1,MA_2,0,2);
   
   if ( 
         ( ind_3 >= ind_2 && ind_2 < ind_1 && ind_2 < DOWN_LEVEL && orders_kol(inverse) ) || 
         ( ind_2 < 0 && ind_1 >= 0 && order_total_type(inverse) == 0 && order_total_type(!inverse) != 0  ) || 
         ( ind_1 > last_order_indic(!inverse) && ind_1 > 0 && order_total_type(!inverse) != 0 )
      )
   {
      close_type (!inverse);
      open(inverse,LOTS,0,0,DoubleToStr(ind_2,0));
   }
   if ( 
         ( ind_3 <= ind_2 && ind_2 > ind_1 && ind_2 >   UP_LEVEL && orders_kol(!inverse) ) || 
         ( ind_2 > 0 && ind_1 <= 0 && order_total_type(!inverse) == 0 && order_total_type(inverse) != 0 ) || 
         ( ind_1 < last_order_indic(inverse) && ind_1 < 0 && order_total_type(inverse) != 0  )
      )
   {
      close_type (inverse);
      open(!inverse,LOTS,0,0,DoubleToStr(ind_2,0));
   }
   
   return(0);
}

double last_order_indic( int c)
{
   int i;
   double indic = 0;

   for(i=OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);      
      if(OrderMagicNumber() == ID && OrderType() == c && c == 1 )indic = MathMax(indic,StrToDouble(OrderComment()));
      if(OrderMagicNumber() == ID && OrderType() == c && c == 0 )indic = MathMin(indic,StrToDouble(OrderComment()));
   }
   return(indic);
}

bool orders_kol ( int f )
{
   if ( order_total_type(f) == 0 )return(true);
   if ( order_total_type(f) != 0 && last_trade(f) < 0 )return(true);
}

double last_trade( int c)
{
   int i;
   double profit = 0;
   datetime time=0;
   
   for(i=OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);      
      if(OrderOpenTime() > time && OrderMagicNumber() == ID && OrderType() == c)
      {
         time = OrderOpenTime();
         profit = OrderProfit();
      }
   }
   return(profit);
}

bool isNewBar()
{
  static datetime BarTime;  
   bool res=false;
    
   if (BarTime!=Time[0]) 
      {
         BarTime=Time[0];  
         res=true;
      } 
   return(res);
}

int order_total_type( int type )
{
   int i;
   int kol=0;
   for(i=OrdersTotal()-1;i>=0;i--)       
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber()==ID && OrderType() == type )kol++;         
   }
   return(kol);   
}

bool close(int ticket)
{
   bool isClosed = false;
   int try = 0;
   while ( IsTradeContextBusy() ){Sleep(500);}
   RefreshRates();
   OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
   isClosed = OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(OrderClosePrice(),Digits), 3, 0);
   while(!isClosed)
   {
      Sleep(1000);
      try++;
      isClosed = OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(OrderClosePrice(),Digits), 3, 0);
      if(try > 5 || isClosed) break;
   }
   if(!isClosed) Print("Order ", ticket, " was NOT closed due to error:", GetLastError());
   return (isClosed);
}

void close_type( int type )
{
   int i;
   for(i=OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber() == ID && OrderType() == type)close(OrderTicket());
   }   
}

int open(int type, double l, double sl=0, double tp=0, string comm = "")
{
   int isOpened = 0, try = 0;
   double s,t;
   while ( IsTradeContextBusy() ){Sleep(500);}
   RefreshRates();
   if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ( type == 0 )
   {
      if ( tp == 0 )t = 0;
      if ( tp != 0 )t = Bid + tp * Point;
      if ( sl == 0 )s = 0;
      if ( sl != 0 )s = Bid - sl * Point;
   }
   if ( type == 1 )
   {
      if ( tp == 0 )t = 0;
      if ( tp != 0 )t = Ask - tp * Point;
      if ( sl == 0 )s = 0;
      if ( sl != 0 )s = Ask + sl * Point;
   }
   s = NormalizeDouble(s,Digits);
   t = NormalizeDouble(t,Digits);
   if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
   if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
   Sleep(500);
   while(isOpened<0)
   {
      while ( IsTradeContextBusy() ){Sleep(500);}
      RefreshRates();
      if ( type == 0 )
      {
         if ( tp == 0 )t = 0;
         if ( tp != 0 )t = Bid + tp * Point;
         if ( sl == 0 )s = 0;
         if ( sl != 0 )s = Bid - sl * Point;
      }
      if ( type == 1 )
      {
         if ( tp == 0 )t = 0;
         if ( tp != 0 )t = Ask - tp * Point;
         if ( sl == 0 )s = 0;
         if ( sl != 0 )s = Ask + sl * Point;
      }
      s = NormalizeDouble(s,Digits);
      t = NormalizeDouble(t,Digits);
      try++;
      if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
      if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
      if(try > 5) break;
      if(isOpened>=0)break;
      Sleep(500);
   }   
   if(isOpened<0) Alert("Ордер не открыт, ошибка :", GetLastError());
   return (isOpened);
}

double check_lot(double &lo)
{
   double l = MarketInfo(Symbol(),MODE_LOTSTEP);
   int ok = 0;
   while ( l < 1 ){l*=10;ok++;}
   if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT);
   if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT);
   return(NormalizeDouble(lo,ok));
}
 
Последнее редактирование модератором:

NeColla

Элитный участник
может халявщикам поможет :)
вот типа картинка1
EA_ARBtest.gif


и результ за месяц - ТФ 1 час
EA_ARBTesterGraph.gif
 

adre66

Элитный участник
я нулевую точку и расматриваю как точку отсчета а не как место входа - зачем входить на месте схождении ..... какое то странное недопонимание между нами

Я так понял, что это две разные торговые системы на одном принципе. Да уж, широкая тема. Каждый выбирает, что ему больше подходит.
 
Верх