Доработка ботов (советников, индикаторов) vol. 2

serrus

Гуру форума
Позволю себе ещё просьбу. Индюк перестал отображаться на графике.По-моему один из лучших Маркет профилей.В архиве всё необходимое(инд.,библ.,инклюд и скрин).
 

Вложения

  • Market profilex.zip
    61,2 КБ · Просмотры: 46

vladradon

Программист
Индюк перестал отображаться на графике.По-моему один из лучших Маркет профилей.В архиве всё необходимое(инд.,библ.,инклюд и скрин).
Библиотеки в архиве нет. Нашел в инете взломанную - работать отказывалась, поэтому перенес все в файл индюка - только один файл без всяких библиотек и вставок. В библиотеке нет одной функции, работающей с файлами, поэтому отключил режим работы с файлами. Что-то показывает.:unsure:
 

Вложения

  • MP.png
    MP.png
    54,1 КБ · Просмотры: 266
  • Market profilex.mq4
    56,3 КБ · Просмотры: 55

serrus

Гуру форума
Работает...но непонятно, какие у него временные рамки.Вот скрин М15.Должно быть по одному с начала дня.Вертикальный белый пунктир-это стандартный разделитель периодов.А профили где?
 

Вложения

  • 1.png
    1.png
    93,8 КБ · Просмотры: 139
Последнее редактирование:

vladradon

Программист
Работает...но непонятно, какие у него временные рамки.Вот скрин М15.Должно быть по одному с начала дня.Вертикальный белый пунктир-это стандартный разделитель периодов.А профили где?
Я запустил все, кроме работы с какими-то его файлами (отдельный режим и нужны эти файлы), т.к. одной функции в библиотеке нет. Настройки не менял. Убрал ошибки. Может эта версия не полная...
Вообще код очень корявый - не совпадают размеры массивов и по-хорошему нужно все переписывать, но это вряд ли кто-то будет делать.:rolleyes:
 
Последнее редактирование:

1_Lexa

Активный участник
Здравствуйте! Я выкладывал сов locomotive, просил чтобы мне посмотрели множитель лотов. Он после 1.5 открывает одинаковые лоты. Уважаемый программисты посмотрите пожалуйста, что можно изменить, чтобы множитель работал от 1.1
void init() {


Pp=Point;


Mnoj2=1/Pp;


if (Pp==0.00001 || Pp==0.001) Pp*=10;


Mnoj=1/Pp;


Symb=Symbol();


if (MarketInfo(Symb,MODE_LOTSTEP)==0.01) DG=2;


if (MarketInfo(Symb,MODE_LOTSTEP)==0.1) DG=1;


if(CommetSize>0) ArrayResize(CommentBox,CommetSize);


for(i=0;i<CommetSize;i++) CommentBox="";


lt[0]=NormalizeDouble(lot,DG);


step[0]=step_1;


for(i=1;i<30;i++) {


if(i<set_2) {


lt=NormalizeDouble(lt[i-1]*lot_factor_1,DG);


step=step_1;


}else{


lt=NormalizeDouble(lt[i-1]*lot_factor_2,DG);


step=step_2;


}


if(i>=set_3-1) lt_h=NormalizeDouble(lt*(hedje_factor+hedje_plus*(set_3-1-i)),DG);


}


for(i=OrdersTotal()-1;i>=0;i--) {


if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symb) {


if(OrderMagicNumber()==magic && TimeB<OrderOpenTime()) TimeB=OrderOpenTime();


if(OrderMagicNumber()==magic2 && TimeS<OrderOpenTime()) TimeS=OrderOpenTime();


}


}


return;


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

Surem

Местный житель
Приветствую мастеров. Сделайте пожалуйста на осциляторе Чайкина точки в местах когда цена меняет направление. На скриншоте пример привёл.CFM.JPG
 

Вложения

  • CMF.mq4
    1,1 КБ · Просмотры: 35
  • CMF.ex4
    8,9 КБ · Просмотры: 21

AlexeNP

Гуру форума
Здравствуйте! Я выкладывал сов locomotive, просил чтобы мне посмотрели множитель лотов. Он после 1.5 открывает одинаковые лоты. Уважаемый программисты посмотрите пожалуйста, что можно изменить, чтобы множитель работал от 1.1
самое простое - выкинь ты вот это вот всё и попробуй рассчитать лот как-то по нормальному...
так, навскидку...
Код:
double NormalizeLot(string symbol,double volume)
  {
   double lot=volume,
          lot_min=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN),
          lot_max=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX),
          lot_step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
   if(lot<lot_min)
      lot=lot_min;
   if(lot>lot_max)
      lot=lot_max;
   int step=(int)((lot-lot_min)/lot_step);
   return(lot_min+step*lot_step);
  }
если как следует задуматься, то множители и прочие забавные штучки могут отобразиться на размере лота чуть менее, чем никак... это все из-за того, что ИЗМЕНЕНИЕ лота происходит со строго определенным шагом
 

serrus

Гуру форума
Я запустил все, кроме работы с какими-то его файлами (отдельный режим и нужны эти файлы), т.к. одной функции в библиотеке нет. Настройки не менял. Убрал ошибки. Может эта версия не полная...
Вообще код очень корявый - не совпадают размеры массивов и по-хорошему нужно все переписывать, но это вряд ли кто-то будет делать.:rolleyes:
Я понял.Обойдусь без него.Извините за потраченное время(хотя жаль..таких Профилей я за 12 лет не встречал)...а ведь работал раньше-правда грузился больше минуты...
 
Последнее редактирование:

vladradon

Программист
Я понял.Обойдусь без него.Извините за потраченное время(хотя жаль..таких Профилей я за 12 лет не встречал)...а ведь работал раньше-правда грузился больше минуты...
У меня есть вот такой (нашел в инете версия 1.15).
 

Вложения

  • MP115.png
    MP115.png
    39,2 КБ · Просмотры: 267
  • MarketProfile.mq4
    196,1 КБ · Просмотры: 49
  • MarketProfile.mq5
    203,1 КБ · Просмотры: 29

Sergey85

Прохиндей!
saw
Привет Друг.
Нет не рисует. История достоверна. На текущем мигает.
 
  • Like
Реакции: saw

1_Lexa

Активный участник
самое простое - выкинь ты вот это вот всё и попробуй рассчитать лот как-то по нормальному...
так, навскидку...
Код:
double NormalizeLot(string symbol,double volume)
  {
   double lot=volume,
          lot_min=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN),
          lot_max=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX),
          lot_step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
   if(lot<lot_min)
      lot=lot_min;
   if(lot>lot_max)
      lot=lot_max;
   int step=(int)((lot-lot_min)/lot_step);
   return(lot_min+step*lot_step);
  }
если как следует задуматься, то множители и прочие забавные штучки могут отобразиться на размере лота чуть менее, чем никак... это все из-за того, что ИЗМЕНЕНИЕ лота происходит со строго определенным шагом

НЕ работает, тоже самое выходит
 

AlexeNP

Гуру форума
НЕ работает, тоже самое выходит
да и не будет работать...
возьмем твое желание - при коэффициенте 1,1 должно быть изменение лота...
ок, считаем) обозначим шаг изменения лота как S, тогда начальный лота вычислить легко и просто:
Lot + S = 1.1 * Lot
из чего получается, что стартовый лот должен быть равен Lot = 10 * S
то есть, если шаг лота = 0.01 то стартовый лот должен быть 0.1
 

1_Lexa

Активный участник
int OnInit()
{

mmContractSize = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
mmTickSize = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
mmLotMin = MarketInfo(_Symbol, MODE_MINLOT);
mmLotMax = MarketInfo(_Symbol, MODE_MAXLOT);
mmLotStep = MarketInfo(_Symbol, MODE_LOTSTEP);
mmTickValue = MarketInfo(_Symbol,MODE_TICKVALUE);
mmMarginRequired = MarketInfo(_Symbol,MODE_MARGINREQUIRED);
while(!MathIsValidNumber(mmTickValue) || mmTickValue==0) MarketInfo(_Symbol,MODE_TICKVALUE);

accuracy=(int)MathFloor(MathLog10(MarketInfo(_Symbol,MODE_LOTSTEP)))*EMPTY;

Нашел еще такой код
Мне сложно, я больше смотрю на работы других.
 

AlexeNP

Гуру форума
Нашел еще такой код
Мне сложно, я больше смотрю на работы других.
"Смешались в кучу кони, люди..."
нет ничего сложного - ты попробуй для начала решить задачу в теории, а потом уже в коде ее воплощай...
вот с начальным лотом, чтобы он реагировал на множитель 1.1 мы вроде разобрались...а теперь скажи как этот же множитель увеличит второй лот в серии? Ответ - никак...
может у тебя сам концепция ошибочна? может лучше рассмотреть вариант не умножения, а прибавления того или иного количества шагов?
кстати, мартингейл - отстой... моральное ожидание Бернулли - рулит
 

1_Lexa

Активный участник
Я просто хотел сделать как у этого эксперта
 

Вложения

  • EA - Budak Ubat v1.51.zip
    36,1 КБ · Просмотры: 41

1_Lexa

Активный участник
Если не считать проблему с множителем, то получилось так
 

Вложения

  • Locomotive v1.01 (64).mq4
    44,6 КБ · Просмотры: 53

AlexeNP

Гуру форума
Если не считать проблему с множителем, то получилось так

ну, как бы получилось, мягко говоря, не очень... strict туда-сюда...
а по поводу множителя - еще раз повторюсь - размер лота увеличивается не "в количество" раз, а "на количество шагов"...
 
Верх