Ваши вопросы по языку MQL4


chocolate

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

Arnold100

Я тут гость
Помогите разобраться! Хочу написать индикатор (скрипт). Принцип работы такой: я строю произвольную трендовую линию от A до B, а индикатор рассчитывает сколько цена прошла в пунктах по ценовой шкале, т.е. В-А. А также сколько цена прошла по времени в барах от А до В! Может кто-нибудь подскажет с чего начать???
 

andrspir

Участник
Прошу помочь примером

Есть отличная система (не мартин) при ручной торговле результат просто волшебный. Пытаюсь ее автоматизировать, но слабоват в языке.

Основа у меня готова, прошу помочь примером...
Есть переменная Lot=0.01
Как программно если предыдущая сделка закрылась по стоп-лосу выполнить Lot=Lot+0.01 ?

Советник работает потиково и уменя билеберда.
 

Lender

Участник
строиш свою трендовую на графике руками,
в скрипте\индюке\сове узнаеш нужные тебе параметры своей линии
спомощью
ObjectGet( string name, int prop_id)
name - имя твоего обекта
prop_id - Идентификатор свойства объекта. Может быть любым из значений списка свойств объекта.

Пример вызова:
PHP:
 double price1 = ObjectGet("hline12", OBJPROP_PRICE1);
в хелпе все достаточно понятно описано
 

Lender

Участник
PHP:
     double Lots = 0.01;
   int    orders=HistoryTotal();     // history orders total
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderClosePrice() == OrderStopLoss()) { Lots += 0.01 ; }
        }
     }
Лови, только я не проверял на работоспособность, просто выдернул с стандартного сова МувингАвераге кусок кода и изменил всего две строки...
 

andrspir

Участник
спасибо огромное...
вроде вырисовывается очень надежная системка которая бережет нервы...
как отлажу обязательно выложу
 

fairslog

Новичок
Добрый день, в прграмировании новичёк, охота разобраться но времени не хватает, есть советник, хочу в него добавить трал, может ктонибудь объяснить как это правильно вписать, сам советник - декомпил.
Буду очень признателен, ещё , торговля в советнике пачкой ордеров.
 

Lender

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

если же не жалко 5-13 можно обратится к платному программисту в разделе работа, или за бесплатно с форума какого то прогера подправить попроси...
 

fairslog

Новичок
Спасибо за рекомендации, не святые горшки лепят, так и тут, просто интересно разобраться как правильно это сделать, когдато все програмисты с чего то начинали и то-же также спрашивали, мне вузы поздно оканчивать, а вот понять чтоб для себя это делать хотя бы интересно.....
Так что вопрос остаётся актуальным.
 

271863768

Постоялец
Помогите пожалуйста прикрутить мартышку и трал к этому советнику, торгую на 5 минутках и моя стратегия требует быстрой установки ордеров, в случае СЛ удвоения и трала...очень надо :) спасибо заранее
 

Вложения

Lender

Участник
Спасибо за рекомендации, не святые горшки лепят, так и тут, просто интересно разобраться как правильно это сделать, когдато все програмисты с чего то начинали и то-же также спрашивали, мне вузы поздно оканчивать, а вот понять чтоб для себя это делать хотя бы интересно.....
Так что вопрос остаётся актуальным.
если хочешь изучить мкл, то начинай с азов: типы переменных(представление данных), условные операторы, циклы, функции без параметров и с ими, если это знать то мкл4 с его хелпом со стандартным функциями дальше изучить труда не составит, так как хелп там ну оочень тяжело не понять

для объектного-ориентированного языка лесенка возможно будет чуток иначе

Помогите пожалуйста прикрутить мартышку и трал к этому советнику, торгую на 5 минутках и моя стратегия требует быстрой установки ордеров, в случае СЛ удвоения и трала...очень надо :) спасибо заранее
в разделе "работа" на этом форуме тебе охотно помогут, там и моя ветка есть
 
Последнее редактирование:

271863768

Постоялец
Подскажите пожалуйста как реализовать отложенный ордер на расстоянии от МА для 5 знака

OrderSend(Symbol(),OP_BUYSTOP,0.1,ma+Dist_,NULL,NULL,Blue);
постоянно выскакивает ошибка 4107 хотя через Алерт показывает нужную цену на которую я бы хотел поставить отложку :(
 
Последнее редактирование:

Lender

Участник
Подскажите пожалуйста как реализовать отложенный ордер на расстоянии от МА для 5 знака

OrderSend(Symbol(),OP_BUYSTOP,0.1,ma+Dist_,NULL,NULL,Blue);
постоянно выскакивает ошибка 4107 хотя через Алерт показывает нужную цену на которую я бы хотел поставить отложку :(
ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции
гугл и хелп в помощь

перед тем как подавать цену в OrderSend ее нужно нормализировать(привести к нужному кол-ву знаков за запетой)
PHP:
price = NormalizeDouble( ma+Dist_ , Digits);
OrderSend(Symbol(),OP_BUYSTOP,0.1, price,NULL,NULL,Blue);
а в алерте все виглядело хорошо скорее всего из-за того что в параметер цену ты передавал как double а не string

в хелпе все написано

void Alert( ...)
Отображает диалоговое окно, содержащие пользовательские данные. Параметры могут быть любого типа. Количество параметров не может превышать 64.

Массивы нельзя передавать в функцию Alert(). Массивы должны выводиться поэлементно.

Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью используйте функцию DoubleToStr().
Данные типы bool, datetime и color будут выведены как числа.
Чтобы вывести данные типа datetime в виде строки, необходимо использовать функцию TimeToStr().
 
Последнее редактирование:

271863768

Постоялец
Прошу меня извинить :-[ ну никак не могу понять как реализовать функцию подсчета прибыли или убытка закрытого ордера или суммы ордеров :)
 

Lender

Участник
Прошу меня извинить :-[ ну никак не могу понять как реализовать функцию подсчета прибыли или убытка закрытого ордера или суммы ордеров :)
схожий выше есть примемр:
PHP:
     double Lots = 0.01;
   int    orders=HistoryTotal();     // history orders total
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderClosePrice() == OrderStopLoss()) { Lots += 0.01 ; }
        }
     }
чуточку его переделываем, и получаем профит последнего закрытого ордера:
PHP:
     double profit = 0;
     bool flag set_trofit = false;
   int    orders=HistoryTotal();     // history orders total
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
           if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;       
           {profit = OrderProfit(); set_trofit = true; break;}
        }
     }
пслалось прям тут, на правильность не проверял, что нужно еще сам допишешь
 
Последнее редактирование:

max020780

Участник
помогите пожалуйста разобраться как сделать так чтобы в этом коде
int start()
{

int P1= Period1 ;
int P2= Period2 ;
int P3= Period3 ;

double L_4=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,4,0);
double L_5=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,5,0);



if (L_4<L_5 ) {

Comment("Работаем на SELL");

и открывался ордер на SELL каждом новом баре
}

if (L_4>L_5 ){
Comment("Работаем на BUY");

А при выполнении этого условия открывался ордер на BUY тоже на каждом новом баре
}

}


А то у меня получается только либо открывается только один ордер как только условие выполнилось либо вообще на каждом тике открывает
 

Влад Рус

Я тут гость
Работа с массивами

Добрый день форУмным людям. Даже неудобно как-то спрашивать и напрягать Вас, но про работу с массивами так мало инфы.Естьописание устройства, да как обращаться к элементам массива, а чё к ним обращаться - надо с ними чего-нить делать, но про это писано мало. Вот и приходится в ножки кланяться - моэт кто подскажет. Есть такой небольшой массивчик из учебника немного переделанный:

double arr_Orders[10][10];
int Qnt=0; // объявление и обнуление счётчика ордеров
ArrayInitialize (arr_Orders,0); // обнуление массива
for(int i=0; i<OrdersTotal();i++) // ищем ордера и заполняем массив
{
if((OrderSelect(i,SELECT_BY_POS)==true)
&& (OrderSymbol()==Symbol()))
{ Qnt++;
arr_Orders[Qnt][1]=OrderOpenPrice();
arr_Orders[Qnt][2]=OrderStopLoss();
arr_Orders[Qnt][3]=OrderTakeProfit();
arr_Orders[Qnt][4]=OrderTicket();
arr_Orders[Qnt][5]=OrderLots();
arr_Orders[Qnt][6]=OrderType();
arr_Orders[Qnt][7]=OrderMagicNumber();
arr_Orders[Qnt][8]=OrderProfit();
arr_Orders[Qnt][9]=OrderOpenTime();
} } arr_Orders[0][0]=Qnt;

Задача 1: Выдернуть из его два ордера с одинаковым OrderOpenTime(), чтобы один из них убыточный закрыть по тикеру - нужен тикер.
Задача 2: Достать из его ордер с наименьшим OrderProfit() (среди всех ордеров в массиве), чтобы с ним тоже чё-нить сделать тоже по тикеру. Нутром чую - нужен перебор и функция MathMin, а с какой стороны подступиться не пойму... Уже неделю сижу - мозги набекрень. Буду рад получить форУмный совет. ВСЕМ Спасибо.
 

andrspir

Участник
Как скачать текстовый файл?

Помогите, как в советнике реализовать скачивание текстового файла по адресу в интернете?
 

Lender

Участник
Задача 1: Выдернуть из его два ордера с одинаковым OrderOpenTime(), чтобы один из них убыточный закрыть по тикеру - нужен тикер.
написал как есть, ничего не проверял

PHP:
 int ord1, ord2;
 bool find = false;
   
 for( i = 1 ; i <= arr_Orders[0][0] ; i++ ) // нумерация идет с 1 так как в строе 0 хранится кол-во ордеров в масиве
 {
   ord1 = i; // записали строку с ордером для сравнения с остальными ордерами
     
     for( int j = i ; j <= arr_Orders[0][0] ; j++ ) // цикл перебора остальных ордеров
     {
        if( arr_Orders[j][9] >= arr_Orders[i][9]-20 && arr_Orders[j][9] <= arr_Orders[i][9]+20 )
        {            // если время открытия ордеров отличаются друг от друга на +-20 секунд 
          ord2 = j;
          find = true;
          break; // перерываем выполнения цикла(выходим из его так как уже нашли что искали)
        }
     }
 }
 
 if( find )
 {
   if( OrderSelect( arr_Orders[ord1][4], SELECT_BY_TICKET ) )
     if( OrderProfit() < 0.0 )
     {
       OrderClose(...);
     }
     else if( OrderSelect( arr_Orders[ord2][4], SELECT_BY_TICKET ) )
     if( OrderProfit() < 0.0 )
       OrderClose(...);     
 }
Вторая задачка

PHP:
 int ticket = EMPTY;
 int profit;
    
 for( i = 1 ; i <= arr_Orders[0][0] ; i++ ) // нумерация идет с 1 так как в строе 0 хранится кол-во ордеров в масиве
 {
   if( OrderSelect(arr_Orders[i][4], SELECT_BY_TICKET) )
   { 
     if( ticket == EMPTY )
     {
       profit = OrderProfit()+OrderSwap()+OrderCommission();
       ticket = arr_Orders[i][4];
     }  
     else
     {
       if( OrderProfit()+OrderSwap()+OrderCommission() < profit )
       {
         profit = OrderProfit()+OrderSwap()+OrderCommission();
         ticket = arr_Orders[i][4];
       }
     }
   }
 }
тоже не тестил, в переменной ticket будет хранится тикет ордера с наименьшим профитом или EMPTY если никаких оржеров не нашло

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

как по мне за использование двумерных массивов как в примере нужно по руках бить...
 
Последнее редактирование:

Walt6730

Участник
Помощь тупому :)

Господа,

Очень нужна помощь. Имеется индикатор, очень простой и всем, наверное, известный: Trend Magic. Основан на двух стандартных индикаторах: CCI(50) и ATR(5). Рисует очень красивые линии на графике. У меня, как чайника в программировании, имеется вопрос: как из значений CCI и ATR получается значение, которое отображается на графике цены и по которому рисуется эта самая линия? Можете вывести формулу?
 

Вложения

Онлайн статистика

Пользователи онлайн
88
Гости онлайн
95
Всего посетителей
183

Статистика

Гостевая
Help Users
  • Джамиль:
    Помогите с шиfрованием свечей в МТ4,они некорректно показаны
    Цитата
  • Геша5:
    Джамиль если не обновляются котировки или не корректно показывают,то все вопросы к брокеру.
    Цитата
  • Дмитрий007:
    может то ренко вообще :ROFLMAO:
    Цитата
  • (Guest) SamuraQZ:
    всем добрый вечер
    Цитата
  • (Guest) SamuraQZ:
    хотел спросить, я вот недавно начал торговать в компании Instaforex, есть ли какие нибудь отзывы о нем? или где вы сами торгуете
    Цитата
  • (Guest) SamuraQZ:
    просто на всех форумах пишут обо всех ДЦ Форекс что они все мошенники, даже не знаю кому верить
    Цитата
  • Дмитрий007:
    в инсте самые убогие условия
    Цитата
  • Дмитрий007:
    имхо, но forex4you вроде норм щас, fxopen ниче должен быть, был классный fortfs, но испаганился в корень
    Цитата
  • Геша5:
    SamuraQZ сказал(а):
    хотел спросить, я вот недавно начал торговать в компании Instaforex, есть ли какие нибудь отзывы о нем? или где вы сами торгуете
    Есть конечно отзывы для всех брокеров.На форуме есть темы про рекомендуемых брокеров,на которых торгуют и без существеных претензий...
    Цитата
  • doperst:
    (Guest) SamuraQZ, с Инстой не стоит связываться. Работал там лично. Сначала кинули на партнерские, потом на ребейтинг, а потом два счета просто перестали существовать. По копейкам выводят, чуть приличная сумма - начинаются проблемы, вплоть до обнуления счетов.
    +2
    Цитата
  • doperst:
    А так вы правы, 98% форекс брокеров зарабатывают на потерях своих клиентов. Именно поэтому менеджеры достают вас своими звонками, брокеры дают бонусы и якобы «удваивают» депозиты. Форекс в Российской Федерации не регулируются законодательством. Налог на доход трейдеров есть, а сам процесс торговли никем не контролируется. Теоретически, любой брокер может делать с котировками (графиком) что угодно и когда угодно. Этот факт мошенничества с его стороны очень тяжело доказать. Поэтому есть смысл работать только с теми форекс-брокерами, которые дорожат своей репутацией.
    +1
    Цитата
  • ЛИС151:
    Здоров народ из старых кто заходит ??? сюда
    Цитата
  • ANDR77:
    Ужас! Кто в Инсте еще торгует? Мрак полный.......бегите отдуда!!!!
    Цитата
  • ANDR77:
    Лет 7 назад от них убежал- ..... не пожалел ни на копейку))))
    Цитата
  • ANDR77:
    Как дела в мире? Люди?!
    Цитата
  • jouri:
    Мире не знаю ,а у меня ОК
    Цитата
  • jouri:
    (y)На счёт доверия брокерам 12 лет с форекс-фою дружу , и всегда выводил без проблем, вот вчера вывел 500 баков ,несколько часов рассматривали заявку и перевели на карту.Хотя отзывов об этом брокере в последние 2-3 года как под копирку негативные. Я даже сам чють в это не поверил ,так красиво обсирают. Так .что верить на слово не стоит надо, всё самим проверять.Думаю пока продолжать с ними дружить .Если чё сами можете попробывать вывод денег , это не реклама , а подсказка для тех кто разочаровался в ДЦ.;)
    Цитата
  • Denis1231999:
    РЕБЯТ А ПОДСКАЖИТЕ КАК ПОЛУЧИТЬ КЛЮЧ К ИНДИКАТОРУ MONEY GES
    Цитата
  • jouri:
    Вы ещё торгуете индикаторами ...... В топку их все и проблем не будет с ключами.Торгуйте так-- это просто, но реально будете в плюсе, ставите магд и смотрите его , пересечение с нулём ,,нулевые точки , , если вход по магду снизу баем, профит на предыдущую вершину магда которая на истории в положительной зоне, это направление ,а тонкости сами надеюсь увидеть можно в процессе торговли ,посмотрите внимательно на историю этих горбов на магде. Желательно таймы повыше от м30 до Н4.
    Цитата
  • track:
    фигасе
    Цитата
  • track:
    а какие еще схемы, ведь макд это тоже индикатор
    Цитата
  • erex:
    Давайте все же отделять мух от ... других мух. Есть индикаторы, обрабатывающие график - кривые, косые, средние и полусредние. Есть информаторы - новости, данные с мухокниги и ФХбли, с СМЕ и оанды. И есть статистика - атр, пивоты, пр. Мухи получаются очень разные.
    Цитата
  • garry119:
    Denis1231999 сказал(а):
    РЕБЯТ А ПОДСКАЖИТЕ КАК ПОЛУЧИТЬ КЛЮЧ К ИНДИКАТОРУ MONEY GES
    это параболик. вопрос тейков только решить
    Цитата
  • track:
    неправильно нарисованы профиты
    Цитата
  • track:
    работает только система эллиота
    Цитата
    Верх