Спосибона ! y =k / ( 1650 - x ) это кривая распределения длин зигзазага при 150 пунктовой разметке y=150 при x =0 тогда k=247500 всеравно не получилось тк247500/(1650-980)=364 а хотелось бы 300. Все что ниже 300 флеты, выше тренды . Потом интегалом сумму найду и сравню. (ну там вычесть спреды, проскальзывания...)
Принимаю критику тестирование лотом 0,1 (ну есть мартин - ну такой не до взблеву те мах лот 0,2) деп 10000. Индикатор указан в ветке . Да и не индикатор это вовсе а так зигзаг - Самое главное используется пьяный матрос
Да уж опыты показали -бутылочное горлышко - не рулит(https://c.mql4.com/forum/2012/02/Bottleneck.mq4). Видимо все же мелких трендов больше и поэтому сперва тралим маленькими величинами(большинство трендов) , а затем большим тралом , а затем тейкпрофит
Код прикладыаю но без советника. Безубыток увеличивает МО.
externstring tr_options = "=== Параметры БУ и ботлнека ===";
externbool USE_BOTTLENECK = false; // Трейлинг стоп вкл./выклexternbool WITHOUTLOSS = true; // externint level_0 = 130; //безубытокexternint level_1 = 180; // тейк externint trl_dist_1 = 155; //тралexternint level_2 = 300;
externint trl_dist_2 = 380;// externint spread = 15;
////////////////////////////////////////////////////////////////////////////////////////////+------------------------------------------------------------------+void WorkWithPositions2()
//+------------------------------------------------------------------+
{
int defstoploss=stop_loss * coef;
double sl;
for(int i = OrdersTotal()-1; i>=0; i--) //
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
Print( "Ошибка функции OrderSelect(): ", GetLastError());
Sleep(1000);
return(0);
}
if(OrderType() > OP_SELL || OrderSymbol() != Symbol() ||OrderMagicNumber() != magic) continue; //not our order)
{
sl=NormalizeDouble(OrderStopLoss(),Digits);
{
if (sl==0.0)
{
if(OrderType()==OP_BUY)
{
OrderModify( OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits),NormalizeDouble(OrderOpenPrice()-(defstoploss*Point+spread*Point),Digits),NormalizeDouble(OrderTakeProfit(),Digits),0,Blue);
Print("буй ",OrderOpenPrice()-(defstoploss*Point+spread*Point));//
}
if(OrderType()==OP_SELL)
{
OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits),NormalizeDouble(OrderOpenPrice()+(defstoploss*Point+spread*Point),Digits),NormalizeDouble(OrderTakeProfit(),Digits),0,Red);
Print("селл ",OrderOpenPrice()+(defstoploss*Point+spread*Point));//
}
}
}
//////////////////////////////////////////////////////////////// if(WITHOUTLOSS)
{
if(OrderType()==OP_BUY )
if ((OrderOpenPrice()+spread*Point)>OrderStopLoss())
{
if (Bid>(OrderOpenPrice()+level_0*Point))
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+spread*Point,Digits),OrderTakeProfit(),0,Blue);
}
if(OrderType()==OP_SELL )
if ((OrderOpenPrice()-spread*Point)<OrderStopLoss())
{
if (Ask<(OrderOpenPrice()- level_0*Point))
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-spread*Point,Digits),OrderTakeProfit(),0,Red);
}
}
/////////////////////////////////////////////////////////////
{
if(OrderType()==OP_BUY && Bid>(OrderOpenPrice()+level_1*Point))
{
if ((Bid>(OrderOpenPrice()+level_1*Point)) && (Bid<=(OrderOpenPrice()+level_2*Point))) // если профит>trl_dist_1 - горлышко trldist=15 (level_1=100,level_2=115)
{
if (Bid> OrderStopLoss()+(trailing_step*coef*Point+trl_dist_1*Point))//level_1*Point-spread*PointOrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-trl_dist_1*Point,Digits),OrderTakeProfit(),0,Green);// Двигаем
}
if (Bid>(OrderOpenPrice()+level_2*Point) )
{
if (Bid> OrderStopLoss()+trl_dist_2*Point+trailing_step*coef*Point)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-trl_dist_2*Point,Digits),OrderTakeProfit(),0,Blue);//Print("буй 2 уровня ",OrderOpenPrice()+level_2*Point);//+trl_dist_1*Point
}
}
if(OrderType()==OP_SELL && Ask<(OrderOpenPrice()-level_1*Point) ) // && OrderProfit()>0
{
if ((Ask<(OrderOpenPrice()-level_1*Point)) && (Ask>=(OrderOpenPrice()-level_2*Point)))
{
if (Ask< OrderStopLoss()-(trailing_step*coef*Point+trl_dist_1*Point))//level_1*Point-spread*PointOrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+trl_dist_1*Point,Digits),OrderTakeProfit(),0,Blue);
}
if (Ask<(OrderOpenPrice()-level_2*Point) )
{
if (Ask< OrderStopLoss()-trl_dist_2*Point-trailing_step*coef*Point)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+trl_dist_2*Point,Digits),OrderTakeProfit(),0,Blue);// Print("селл 2 уровня ",OrderOpenPrice()-level_2*Point);
}
}
}
}
return(0);
}
}
С помощью HZZ.mq4 записал в файл значения колен зигзага со 150 пунктовой разметкой - все что ниже цифры 300 флет, выше тренд
вот как тренд брать я и скажу (периоды выборок намеренно не синронизируемы на разных выборках - это введь не научная статья, так мысли вслух)
В взятия тренда используется следующая легенда- Сначала определим средний тренд - сложим тренды длиной больше 300 пунктов и поделим на их количество- это будет тейк-профит (если тренд будет больше - то тоже пробуем взять но с низкой вероятностью). Для этого написан советник - "Бутылочное горлышко". Советник не выставляет ни стопы не тейки до тейкпрофита(первого уровня), далее очень короткий трал,и со второго уровня дальше распушивается (настройки в советнике для экспериментов). В настоящем роботе этот трал будет значительно переработал - добавлена обработка ошибок итд и итп.
Вот назадача((((( А мне казалось что я это первый придумал(( Уже велосипедов с десяток изобрел . Пойду ка всчитну некроветок...........
Да уж опыты показали -бутылочное горлышко - не рулит(https://c.mql4.com/forum/2012/02/Bottleneck.mq4). Видимо все же мелких трендов больше и поэтому сперва тралим маленькими величинами(большинство трендов) , а затем большим тралом , а затем тейкпрофит
Код прикладыаю но без советника. Безубыток увеличивает МО.
Да честно говоря какойто тупик - вроде в полученной статистике нужно определить точки входа(может и выхода) и трелингом(обратным сигналом) взять прибыль. Но экперименты показывают неустойчивость ( неробастность) системы. даж руки опускаются
Кстати вопрос -не подскажите какая математическая функция описывает этот график? - заранее благодарю
Ловина.
А если серьезнее - то что-то типа y = k / ( 1650 - x ). Ну можно и поточнее, только зачем...
Да уж опыты показали -бутылочное горлышко - не рулит(https://c.mql4.com/forum/2012/02/Bottleneck.mq4). Видимо все же мелких трендов больше и поэтому сперва тралим маленькими величинами(большинство трендов) , а затем большим тралом , а затем тейкпрофит
Код прикладыаю но без советника. Безубыток увеличивает МО.
С помощью HZZ.mq4 записал в файл значения колен зигзага со 150 пунктовой разметкой - все что ниже цифры 300 флет, выше тренд
вот как тренд брать я и скажу (периоды выборок намеренно не синронизируемы на разных выборках - это введь не научная статья, так мысли вслух)
В взятия тренда используется следующая легенда- Сначала определим средний тренд - сложим тренды длиной больше 300 пунктов и поделим на их количество- это будет тейк-профит (если тренд будет больше - то тоже пробуем взять но с низкой вероятностью). Для этого написан советник - "Бутылочное горлышко". Советник не выставляет ни стопы не тейки до тейкпрофита(первого уровня), далее очень короткий трал,и со второго уровня дальше распушивается (настройки в советнике для экспериментов). В настоящем роботе этот трал будет значительно переработал - добавлена обработка ошибок итд и итп.
Вот назадача((((( А мне казалось что я это первый придумал(( Уже велосипедов с десяток изобрел . Пойду ка всчитну некроветок...........
Да уж опыты показали -бутылочное горлышко - не рулит(https://c.mql4.com/forum/2012/02/Bottleneck.mq4). Видимо все же мелких трендов больше и поэтому сперва тралим маленькими величинами(большинство трендов) , а затем большим тралом , а затем тейкпрофит
Код прикладыаю но без советника. Безубыток увеличивает МО.