![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уважаемый Гуру,
Я использую массив двух измерений, скажем, ZigZag[2][100]. и я хочу сортировать по первому измерению. Я использую следующую функцию:
ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);
но, похоже, она не сортирует ни по первому измерению, ни по второму. Кто-нибудь может мне помочь?
Большое спасибоВ документации MQL говорится, что ArraySort сортирует по первому измерению, если вы не получаете правильных результатов, опубликуйте ваши входные и выходные данные массива.
Написание простой функции quicksort не займет много времени. Создайте новый массив, сохраните отсортированные результаты, затем выполните цикл for для поиска ZigZag и копирования второго измерения. Неэффективно, вероятно, но это сделает свою работу.![](https://c.mql5.com/forextsd/smiles/smile.png)
вот код
В документации MQL говорится, что ArraySort сортирует по первому измерению, если вы не получаете правильных результатов, опубликуйте ваши входные и выходные данные массива. Написание простой функции quicksort не займет много времени. Создайте новый массив, сохраните отсортированные результаты, затем выполните цикл for для поиска ZigZag и копирования второго измерения. Неэффективно, вероятно, но это сделает свою работу.
Спасибо за ваш ответ.
Я хочу рассчитать и отобразить линии поддержки и сопротивления на графике. алгоритм которого заключается в нахождении 100 ЗигЗагов в истории и подсчете веса каждого ЗигЗага. как рассчитать вес каждого ЗигЗага? Для каждого зигзага я пытаюсь найти во всем массиве количество других зигзагов, значение которых на 5 пунктов ближе к этому определенному зигзагу, скажем, если один определенный зигзаг равен 1.5000, то я хочу найти все другие зигзаги, расстояние между которыми не превышает 5 пунктов, если да, то я добавляю 1 к этому определенному зигзагу, и так я делаю для всех 100 зигзагов.
Когда я закончил это, я пытаюсь отсортировать все эти ЗигЗаги по размеру счетчика. как вы можете найти в индикаторе. но я много раз пытался распечатать значение до и после исключения функции ArraySort(0). не нашел никакой разницы.
Выкладываю индикатор для ознакомления.
Заранее спасибо.
вот код индикатора:
//+------------------------------------------------------------------+
//| Risisstance and Support.mq4 |
//| Copyright ?200 |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, Nick Bilak"
// взломанный t_david'ом где-то в начале 2007 года.
#property indicator_chart_window
extern int Gap = 5;
extern int Depth = 24;
extern int Deviation = 5;
extern int BackStep=3;
extern int BackStart=288;
int ZigN=100;
double ZigZag[2][100];
int ShowBars = 500;
int dist=24;
int init() {
return(0);
}
int start() {
int k,i,j,limit,hhb,llb;
int counted_bars=IndicatorCounted();
//---- последний подсчитанный бар будет пересчитан
if(counted_bars>0) counted_bars--;
ShowBars=Bars-counted_bars;
FindZigZag();
ResistanceSupport();
// for(i=0;i<10;i++)
{
// ObjectDelete("P_Line");
// ObjectCreate("P_Line", OBJ_HLINE,0, CurTime(),Close[0]);
ObjectDelete("RS0");
ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0]);
ObjectDelete("RS1");
ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1]);
ObjectDelete("RS2");
ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2]);
ObjectDelete("RS3");
ObjectCreate("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][3]);
ObjectDelete("RS4");
ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4]);
ObjectDelete("RS5");
ObjectCreate("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][5]);
ObjectDelete("RS6");
ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6]);
ObjectDelete("RS7");
ObjectCreate("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][7]);
ObjectDelete("RS8");
ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8]);
ObjectDelete("RS9");
ObjectCreate("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9]);
}
// if (ShowBars >= Bars) ShowBars = Bars;
/*
for (i=0;i<ShowBars;i++) {
b1=0;
b2=0;
b3=0;
b4=0;
b5=0;
b6=0;
b8=0;
hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);
llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2);
if (i==hhb)
b3=High+SignalGap*Point;
if (i==llb)
b4=Low[llb]-SignalGap*Point;
b1=High;//+SignalGap*Point;
b2=Low[llb];//-SignalGap*Point;
}
*/
return(0);
}
//найдите десять ЗигЗагов,
void FindZigZag()
{
int i=BackStart;
int ii=0;
int m=0;
int n=0;
while(ii<ZigN)
{
if(iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i)>0.1) //1=High
{
ZigZag[0]=0;
ZigZag[1]=iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i);
// Print("ZigZag: ",ZigZag[1]);
ii++;
}
i++;
}
}
// Найти сопротивление и поддержку
void ResistanceSupport()
{
int i,n;
for(i=0;i<ZigN;i++)
{
for(n=0;n<ZigN;n++)
{
if(MathAbs(ZigZag[1]-ZigZag[1][n])<Point*Gap)
{
ZigZag[0]++;
}
// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);
}
// Print("End");
}
ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);
for(i=0;i<ZigN;i++)
{
// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);
}
// Print("End");
}
Могу ли я задать ей какой-нибудь вопрос по MQL4?
Здравствуйте из Берлина,
Я новичок на этом форуме и прочитал курс по MQL4 от гуру кодеров. Большое спасибо за обучение! Теперь я хочу попробовать что-нибудь из легких программ, и я уже нащупал
Почему линия MA не отображается на моем основном графике? Спасибо за помощь.
#property indicator_chart_window
#property indicator_color1 Red
extern int Period_MA = 21;
bool Fact_Up = true;
bool Fact_Dn = true;
int start()
{
double MA;
MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);
if (Bid > MA && Fact_Up == true)
{
Fact_Dn = true;
Fact_Up = false;
Alert("Цена выше MA(",Period_MA,").");
}
if (Bid < MA && Fact_Dn == true)
{
Fact_Up = true;
Fact_Dn = false;
Alert("Цена ниже MA(",Period_MA,").");
}
return(0);
}
Здравствуйте,
Я работаю над идеей для пользовательского индикатора. Мне нужно знать, возможно ли это в скрипте:
Может ли MT4 распознать, какая свеча находится под моей мышью в любой момент времени? Поэтому я хочу нарисовать горизонтальную линию на открытии или закрытии определенной свечи (которую я выбираю, щелкнув или наведя мышь на нее), возможно ли это?
Я не смог найти никакой информации об этом.
Это бы очень помогло, спасибо!
Менеджер ордеров/транзакций для советников
Здравствуйте,
Кто-нибудь знаком с библиотекой MQ4 для управления заказами/транзакциями для советников? Меня интересуют в основном следующие две функциональные возможности:
1. Размещение виртуальных стоп-ордеров: вместо использования OrderSend(...) со стоп-ордером, вы используете MyOrderSend(...) с теми же параметрами, а менеджер позаботится обо всем, отслеживая цену, и разместит рыночный ордер, когда цена коснется стопа.
Основная цель этого - преодолеть ненужное бремя STOPLEVEL, но это также позволит использовать "теневые" ордера.
2. Менеджер будет собирать состояние и статистику по отложенным, исполняющимся и завершенным ордерам. Используя эту информацию, можно реализовать причудливые MM-стратегии и причудливые стоп-стратегии (например, количество раз, которое живая позиция была в деньгах, может быть использовано для сохранения прибыли или стоп-механизмов).
Я искал довольно долго, поэтому не ожидаю, что такая библиотека существует в полном объеме, но если вы знаете частичные решения и соответствующие фрагменты кода, было бы здорово.
Будьте здоровы,
Трендик
менеджер ордеров/транзакций для советников
Я только что обнаружил, что в mql5 был разработан очень хороший менеджер ордеров, позволяющий хеджировать позиции. Смотрите paulsfxrandomwalk blogspot (пока не разрешено размещение ссылок).
Это не полный, но очень хороший кусок кода.
Перевести его на mql4 должно быть нелегко, но все же возможно, так как придется понизить ООП код на c++ до крайне ограниченного mql4. Кажется, что это большая трата.![](https://c.mql5.com/forextsd/smiles/sad_smile.png)
Так что мой призыв к вашим ссылкам все еще в силе...
Линии MA на графике
Привет из Берлина,
Я новичок на этом форуме и прочитал курс MQL4 от гуру кодеров. Большое спасибо за обучение! Теперь я хочу попробовать что-нибудь из легких программ и я уже пробовал
Почему линия MA не отображается на моем основном графике? Спасибо за помощь.
#property indicator_chart_window
#property indicator_color1 Red
extern int Period_MA = 21;
bool Fact_Up = true;
bool Fact_Dn = true;
int start()
{
double MA;
MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);
if (Bid > MA && Fact_Up == true)
{
Fact_Dn = true;
Fact_Up = false;
Alert("Цена выше MA(",Period_MA,").");
}
if (Bid < MA && Fact_Dn == true)
{
Fact_Up = true;
Fact_Dn = false;
Alert("Цена ниже MA(",Period_MA,").");
}
return(0);
}Привет, Берлинер,
Похоже, что в приведенном вами коде отсутствуют процедуры для построения линий MA на графике.
Сделайте быстрый поиск на этом форуме TSD для многих хороших примеров индикаторов MA, которые вы можете посмотреть в коде, чтобы узнать, как рисовать линии MA на графике.
Удачи... и продолжайте учиться!
Роберт
Проблема обновления индикатора MTF
Здравствуйте,
Мне нужна помощь по этому индикатору. Это MTF MACD наклон, но у него есть проблема с обновлением, я должен переключить TF, чтобы исправить это.
Уже пытался изменить
limit=Bars-counted_bars; на limit=Bars-counted_bars/Period();
а также добавить Refreshrates();
безрезультатно.
Так что извините, я должен загрузить код в .mql, пытался загрузить с помощью тега php, но он слишком длинный.
Я также загрузил картинку в тему MTF.
Спасибо, ребята.
Привет, друзья,
Я получил много личных сообщений с просьбой помочь мне с некоторыми частями кода.
Здесь вы можете оставлять свои вопросы, связанные с MQL4, и я сделаю все возможное, чтобы ответить на них.Codesguru,
У меня совсем нет знаний о программировании. И мне нужно, чтобы вы или кто-либо другой помог мне, поместив alarm и alert (как внешний индикатор) на эту execute_line indi.
Заранее спасибо.
Будь здоров, Терри
Ваддах Аттар скальпинг
Здравствуйте!
Я нашел интересный индикатор, который ориентирован на скальпинг.
Я хочу протестировать его, но он не печатает ни одного бара после нескольких дней.
Подскажите, пожалуйста, что нужно изменить в коде, чтобы он печатал несколько тысяч баров? Если есть возможность ввести число в мета-редакторе, пожалуйста, скажите мне. Я не смог ничего найти.
Спасибо за ваше время
Ксандер
waddah_attar_scalping.ex4
waddah_attar_scalping.mq4