Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2232

 
Alexey Viktorov #:

Просто надо взять остаток от деления на 100

А дальше можете фантазировать как угодно. Остаток от деления минус чего-то, или разделить на что-то, или умножить, прибавить или вообще по какой-то формуле пересчитать…

Спасибо большое за ценную информацию. Извините... просто у меня не слишком математический склад ума. С полуслова не всегда   могу понять. Понимаю , как при помощи арифметической операции получить остаток деления на 100. Понял в какое место кода нужно вставлять эту арифметическую операцию. Но не понял какие числа нужно вставлять после числа %100 , что бы получить случайные числа  нужного мне диапазона.
Если Вас не затруднит, можете изменить мой код на диапазон от 25 до 98 и тогда я сразу все пойму на Вашем примере.
Еще раз спасибо за помощь.

 
ANDREY #:

Спасибо большое за ценную информацию. Извините... просто у меня не слишком математический склад ума. С полуслова не всегда   могу понять.
Если Вас не затруднит, можете изменить мой код на диапазон от 25 до 98 и тогда я сразу все пойму на Вашем примере.
Еще раз спасибо за помощь.

Просто подставляйте Ваш диапазон в выделенное место через "+"

void OnInit()

{

    MathSrand(GetTickCount());

}


void OnTick()

{

    Print("-----КАЖДЫЙ ТИК------------ ", MathRand() % 543 + 45);

}




Вот результат

 
Ivan Butko #:

Просто подставляйте Ваш диапазон в выделенное место через "+"

void OnInit()

{

    MathSrand(GetTickCount());

}


void OnTick()

{

    Print("-----КАЖДЫЙ ТИК------------ ", MathRand() % 543 + 45);

}




Вот результат

Спасибо большое за разъяснение. Но я опять что то недопонял. Я предложил  изменить мой код так что бы диапазон был от 25 до 98. То есть, в моем представлении, случайные числа должны быть от >=25 до <=98    А в Вашем варианте моего кода некоторые случайные числа > 98. Буду Вам признателен , если измените мой код так что бы случайные числа были строго в диапазоне  >=25 до <=98   Но благодаря Вам я понял что для решения моей задачи нужно пользоваться арифметической операцией ОСТАТОК ОТ ДЕЛЕНИЯ ( Х = У % 60;)  и понял в каком месте кода нужно эту операцию производить. Но не понял пока как подбирать нужные числа после знака % что бы получился нужный мне диапазон

Последовал  Вашему совету  подставлять мой диапазон в выделенное место через "+"  (Print("-----КАЖДЫЙ ТИК------------ ", MathRand() % 98 + 25);  Но некоторые случайные числа оказались > 98


Еще раз большое спасибо за помощь.

 
MathRand()%(98+1-25)+25
Для этого:>=25 до <=98
 
ANDREY #:

Спасибо большое за ценную информацию. Извините... просто у меня не слишком математический склад ума. С полуслова не всегда   могу понять. Понимаю , как при помощи арифметической операции получить остаток деления на 100. Понял в какое место кода нужно вставлять эту арифметическую операцию. Но не понял какие числа нужно вставлять после числа %100 , что бы получить случайные числа  нужного мне диапазона.
Если Вас не затруднит, можете изменить мой код на диапазон от 25 до 98 и тогда я сразу все пойму на Вашем примере.
Еще раз спасибо за помощь.

Тут всё просто. Если остаток от деления может быть от 0 до N-1, то чтобы получить диапазон от 25 до 98 надо получить остаток от деления на такое число, чтобы остаток был от 0 до 98-25 и тогда к этому остатку от деления прибавим 25

То-есть, если получим остаток от деления на 73 диапазон от 0 до 72 и прибавим 25, то получим минимум 0+25=25 и максимум 72+25=97

Если в диапазон нужных чисел должно входить и 98, то надо просто получить остаток от деления на 98+1=99

 
Alexey Viktorov #:

Тут всё просто. Если остаток от деления может быть от 0 до N-1, то чтобы получить диапазон от 25 до 98 надо получить остаток от деления на такое число, чтобы остаток был от 0 до 98-25 и тогда к этому остатку от деления прибавим 25

То-есть, если получим остаток от деления на 73 диапазон от 0 до 72 и прибавим 25, то получим минимум 0+25=25 и максимум 72+25=97

Если в диапазон нужных чисел должно входить и 98, то надо просто получить остаток от деления на 98+1=99

Спасибо большое. Теперь все понял. С генерацией случайных чисел разобрался. Теперь мне нужно научиться в mql 4 случайным образом смешивать последовательность чисел.

В МАССИВЕ 1  есть последовательность чисел. При помощи какой функции или языковой конструкции можно случайным образом изменить последовательность тех же чисел что бы получилось как в МАССИВЕ 2

Спасибо за помощь

 

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

В инициализации поставил

if (Show_signal_cross)
      {
        PlotIndexSetInteger(0, PLOT_LINE_WIDTH, Arrow_size);      PlotIndexSetInteger(0, PLOT_ARROW, 241);
        PlotIndexSetInteger(1, PLOT_LINE_WIDTH, Arrow_size);      PlotIndexSetInteger(1, PLOT_ARROW, 242);
      }
    else
      {
        PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE);
        PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_NONE);
      }
 
Ivan Butko #:

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

В инициализации поставил

if (Show_signal_cross)
      {
        PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ARROW);       PlotIndexSetInteger(0, PLOT_LINE_WIDTH, Arrow_size);      PlotIndexSetInteger(0, PLOT_ARROW, 241);
        PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_ARROW);       PlotIndexSetInteger(1, PLOT_LINE_WIDTH, Arrow_size);      PlotIndexSetInteger(1, PLOT_ARROW, 242);
      }
    else
      {
        PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE);
        PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_NONE);
      }
 
Tretyakov Rostyslav #:

Заработало! Спасибо Вам большое

 

Почему, при прогоне Всех символов меньше трейдов, чем при простом прогоне?


Причина обращения: