[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 993

 
Aleksander:

ну дак выводи слева у экрана - какая принципиальная разница? - у линии справа будет цена - слева текст мессаги..

или луч - но тогда усё слева выводи...


Это запрос заказчика :) Слева используются другие индикаторы, чтобы не накладывалось одно на другое.

Ну да ладно, проблему решу, всем спасибо за участие! 

 
здравсвуйте. у меня такой вопрос: можно каким либо образом в МТ4 оптимизировать советник одновременно по нескольким валютным парам? или может для этого есть специальная программа? или хотябы чтобы ускорить оптимизацию (для полной загрузки процессора)? а то ресурсов компа еще намного хватает, но использовать больше не могу
 
gawrik:
здравсвуйте. у меня такой вопрос: можно каким либо образом в МТ4 оптимизировать советник одновременно по нескольким валютным парам?

Вам никто не запрещает запустить несколько МТ4 одновременно с оптимизациями одного советника по разным парам.

Если кто запрещает, то скажите ему, что я разрешил

 
Aleksander:

попробуй в инит сделть присвоение дельте

delta = 1; if (digits = 5) {delta = 10;}

а в тексте добавить

if (Bid <=Low&& Ask < High - 10*Point*delta)

наверно немноог не правильно, но смысл понятен

delta = Point; if (digits = 5) {delta = 10*Point;}

if (Bid <=Low&& Ask < High - 10*delta) хотя разницы не какой, но... а как же я япошкой?

 

и следующий вопрос в связи с динамическим спредом появилась необходимость высчитать средний спред за N тиков здесь вообще засада,

набросал следующие но не уверен что правильно:

int TicSpred=100;

double Spread[10000];

if (Spread[0]==0) {ArrayInitialize(Spread,(Ask-Bid)/delta);}

for (int q=TicSpred;q>0;q--){

if (Spread[q]==0) Spread[q]=(Ask-Bid)/delta;}

for (q=TicSpred;q>0;q--) {Spread[p]=Spread[p-1];}

Spread[0]=(Ask-Bid)/delta;

double CountedSpred;

for (q=0;q<bars;q++){CountedSpred=CountedSpred+Spread[p];}

double Аverspread=CountedSpred/TicSpred; но я не уверен что это совсем корректно, и кажеться для пятизнака не правильно считать будет

 

да нет вообще не правельно

мне нужно записывать в массив каждый следующий спред, и делить его на количество спредов в массиве, и как толшько количество записей привысит N то нужно удалять самый первый в массиве

может как то проще можно сделать?

 

Здесь еще ошибка закралась

if (Bid >=High ) // Закрытие Bay

return (11);

if (Bid <=Low && Ask <High - 1*delta )

return (21); // Закрытие Sell

if (trade == 1){

if ( Bid <=Low ) // Открытие Bay

Print ( " Bay = ",11);

return (10);}

if (Time == 1){

if (Bid<=Low&&Ask<High -1*delta ) // Открытие Srll

Print ( " Sell = ",21);

return (20);}

return; // Если время не гуд то не открываем нечего а просто выходим

данные следующие переменные High и Low известны( я принтом проверил) и показывают цены условия такие:

1.если бай > High то посылаем 10 команду ( закрытие бай)

2. если бай< Low и при этом аск меньше High на 1 пункт то закрываем сел командой ретурн 11

если переменная Time == 1 то:

3.если Бид меньше или равно Low и при этом Аск меньше High хотябы на один пункт то открываем Бай

4. если бид больше или равно High то открываем Sell?

но вот в тестирование открывается все время только бай, напоминаю что данная программа полностью из учебника я меняю только торговые критерии соответственно команды 10, 20 все стандартное прикреплю на всякий случай те функции к которым идет обращение

Файлы:
close_all.mqh  3 kb
open_ord.mqh  3 kb
trade.mqh  3 kb
 

Народ! Всем привет! Помогите!

Мне надо в функцию аллерт индикатора вписать временной интервал. типа всплывает окошечко при появлении сигнала и мы видим там с какого графика этот сигнал. М15 например.

искал на сайте но ничего не нахожу подобного.

 

Народ! Всем привет! Помогите!

Мне надо в функцию аллерт индикатора вписать временной интервал. типа всплывает окошечко при появлении сигнала и мы видим там с какого графика этот сигнал. М15 например.

искал на сайте но ничего не нахожу подобного.

 

вообщем вот эта функция

//--------------------------------------------------------------------

// Criterion.mqh

// Предназначен для использования в качестве примера в учебнике MQL4.

//--------------------------------------------------------------- 1 --

// Функция вычисления торговых критериев.

// Возвращаемые значения:

// 10 - открытие Buy

// 20 - открытие Sell

// 11 - закрытие Buy

// 21 - закрытие Sell

// 0 - значимых критериев нет

// -1 - используется другой финансовый инструмент

//--------------------------------------------------------------- 2 --

// Внешние переменные:


//--------------------------------------------------------------- 3 --

int Criterion() // Пользовательская функция

{

//----------------------------------------------------------------4----

string Sym="________";

if (Sym!=Symbol()) // Если не наш фин. инструмент

{

Inform(16); // Сообщение..

return(-1);} // .. и выход

delta= Point;

if (Digits == 5 || (Digits == 3 && StringFind(Symbol(), "JPY", 0) != -1))

delta= Point *10;

int Digital=MarketInfo(Symbol(),12);

//--------------------------------------------------------------- 5 --

// Параметры технич. индикат:

bool trade;

if (Begin>End && (Hour()>Begin-1 || Hour()<End)){trade=1;}

if (Begin<End && (Hour()>Begin-1 && Hour()<End)){trade=1;}

{if (trade==0 && mag!=Mag) return(0);}

// --------------------------Считаем средний спред-----------------------

if (!IsTesting() || IsVisualMode() || !IsOptimization())

{

int TicSpred=100;

double Spread[10000];

if (Spread[0]==0) {ArrayInitialize(Spread,(Ask-Bid)/delta);}

for (int q=TicSpred;q>0;q--){

if (Spread[q]==0) Spread[q]=(Ask-Bid)/delta;}

for (q=TicSpred;q>0;q--) {Spread[q]=Spread[q-1];}

Spread[0]=(Ask-Bid)/delta;

double CountedSpred;

for (q=0;q<TicSpred;q++){CountedSpred=CountedSpred+Spread[q];}

double Аverspread=CountedSpred/TicSpred;

}


//--------------------------------------------------------------- 5 --

// Вычисление торговых критериев

if (Bid >=High ) // Закрытие Bay

return (11);

if (Bid <=Low )

return (21); // Закрытие Sell

if (trade == 1){

if ( Bid <=Low &&Ask<High -0.5*MyPoint) // Открытие Bay

Print ( " Bay = ",11);

return (10);}

if (trade == 1){

if (Bid>=High ) // Открытие Srll

Print ( " Sell = ",21);

return (20);}

return; // Если время не гуд то не открываем нечего а просто выходим


//--------------------------------------------------------------- 6 --

return(0); // Выход из пользов. функции

}

//--------------------------------------------------------------- 7 --

считается что переменные Low и High уже определены и коректные равны ецне

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