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

AlexeyVik

Программист mql4 mql5
Подскажите пожалуйста как сделать так, чтоб прибыль ордера закрывалась в зависимости от объёма ордера. Сейчас ордера закрываются при достижении прибыли
OrderProfit()+OrderSwap()+OrderCommission()>=FixedProfit1 а, хотелось бы чтоб допустим FixedProfit1=5 тогда
0,01*FixedProfit1=5
0,02*FixedProfit1=10
0,03*FixedProfit1=15
0,04*FixedProfit1=20
(OrderProfit()+OrderSwap()+OrderCommission())/(lot*100) >= FixedProfit1
 

vaas04

$$$$$$$$$
Всем привет. Кто знает как можно макс. и мин. окна индикатора подвального осцилятора(любого) вытащить в буферы.
 

Вложения

  • EURUSD.mmH1.png
    EURUSD.mmH1.png
    32,4 КБ · Просмотры: 38

srtsrt

Активный участник
Скажи пожалуйста в чем разница?
разницы нет
это поверье в инете блуждает, что ++ перед переменной обрабатывается скомпилированной программой быстрее
:)
есть ещё кучка поверий на эту тему
 

AlexeyVik

Программист mql4 mql5
разницы нет
это поверье в инете блуждает, что ++ перед переменной обрабатывается скомпилированной программой быстрее
:)
есть ещё кучка поверий на эту тему
Читай документацию
Операция инкремента и декремента применяются только к переменным, к константам не применяются. Префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении.

Постфиксные инкремент (i++) и декремент (k--) применяются к переменной сразу после использования этой переменной в выражении.
mql5.com/ru/docs/basis/operations/mathoperation
 
Последнее редактирование модератором:

ИванМН

Местный знаток

Cash2020

Активный участник
хочешь сказать, что for(int i = 0; i < 2; ++i){}
будет начинать отсчёт с единицы?
Очень извиняюсь, я конечно не Алексей, но хм... вам отвечу.
Во-первых, не нужно на людях показывать пределы своей безграмотности. Если хотите что-то сказать, говорите убедительно и аргументированно. Здесь собрались не дети в детсаде.
Во-вторых, вы привели не корректный пример, о котором Алексей в своем посту не говорил. Почему? Оставляю это вам на домашнее задание.
И в третьих. Вместо гого чтобы болтать всякую чушь, лучше бы привели примеры с распринтовкой, тогда это было бы правильно.
Вот смотрите, я специально для таких как вы сделал скрипт с проверкой.
 

Вложения

  • Снимок2.PNG
    Снимок2.PNG
    32 КБ · Просмотры: 22

AlexeyVik

Программист mql4 mql5
Всем привет. Кто знает как можно макс. и мин. окна индикатора подвального осцилятора(любого) вытащить в буферы.
Не совсем без проблем, но всё-же не очень сложно
Примеры работы с графиком
  • CHART_HEIGHT_IN_PIXELS – свойство высоты графика в пикселях.
Код:
//+------------------------------------------------------------------+
//| Функция получает значение высоты графика в пикселях.             |
//+------------------------------------------------------------------+
int ChartHeightInPixelsGet(const long chart_ID=0,const int sub_window=0)
  {
//--- подготовим переменную для получения значения свойства
   long result=-1;
//--- сбросим значение ошибки
   ResetLastError();
//--- получим значение свойства
   if(!ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
     }
//--- вернем значение свойства графика
   return((int)result);
  }
//+------------------------------------------------------------------+
//| Функция устанавливает значение высоты графика в пикселях.        |
//+------------------------------------------------------------------+
bool ChartHeightInPixelsSet(const int value,const long chart_ID=0,const int sub_window=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим значение свойства
   if(!ChartSetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
}
взято отсюда mql5.com/ru/docs/constants/chartconstants/charts_samples
 
Последнее редактирование модератором:

ИванМН

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

Вложения

  • 1.PNG
    1.PNG
    57,2 КБ · Просмотры: 29
  • 2.PNG
    2.PNG
    45,5 КБ · Просмотры: 29

star603

Новичок форума
PHP:
   bool              Gap(int bar_2, int bar_1)
     {
      vibor = false;
      if(Candle_type(bar_2)==true && Candle_type(bar_1)==true)
         if(Open[bar_2]>Close[bar_1] || Close[bar_2]<Open[bar_1])
            vibor = true;
      if(Candle_type(bar_2)==false && Candle_type(bar_1)==false)
         if(Close[bar_2]>Open[bar_1] || Open[bar_2]<Close[bar_1])
            vibor = true;
      if(Candle_type(bar_2)==true && Candle_type(bar_1)==false)
         if(Close[bar_2]<Close[bar_1] || Open[bar_2]>Open[bar_1])
            vibor = true;
      if(Candle_type(bar_2)==false && Candle_type(bar_1)==true)
         if(Close[bar_2]>Close[bar_1] || Open[bar_2]<Open[bar_1])
            vibor = true;
      return(vibor);
     }
   int              Gap_punkt(int bar_2, int bar_1)
     {
      many=0;
      if(Candle_type(bar_2)==true && Candle_type(bar_1)==true)
         if(Open[bar_2]>Close[bar_1])
            many = (int)NormalizeDouble((Open[bar_2]-Close[bar_1])/Point,Digits);
         else
            if(Close[bar_2]<Open[bar_1])
               many = (int)NormalizeDouble((Open[bar_1]-Close[bar_2])/Point,Digits);
      if(Candle_type(bar_2)==false && Candle_type(bar_1)==false)
         if(Close[bar_2]>Open[bar_1])
            many = (int)NormalizeDouble((Close[bar_2]-Open[bar_1])/Point,Digits);
         else
            if(Open[bar_2]<Close[bar_1])
               many = (int)NormalizeDouble((Open[bar_2]-Close[bar_1])/Point,Digits);
      if(Candle_type(bar_2)==true && Candle_type(bar_1)==false)
         if(Close[bar_2]<Close[bar_1])
            many = (int)NormalizeDouble((Close[bar_1]-Close[bar_2])/Point,Digits);
         else
            if(Open[bar_2]>Open[bar_1])
               many = (int)NormalizeDouble((Open[bar_2]-Open[bar_1])/Point,Digits);
      if(Candle_type(bar_2)==false && Candle_type(bar_1)==true)
         if(Close[bar_2]>Close[bar_1])
            many = (int)NormalizeDouble((Close[bar_2]-Close[bar_1])/Point,Digits);
         else
            if(Open[bar_2]<Open[bar_1])
               many = (int)NormalizeDouble((Open[bar_1]-Open[bar_2])/Point,Digits);
      return(many);
     }

Как то с компоновать можно это. Код не нужен попробую воплотить только подскажите.
 

ИванМН

Местный знаток
Стар, у Вас расплывчатые вопросы, даже не вопросы, а какие-то пожелания из серии "не знаете ли вы, чего мне хочется?". Зачем что-то куда-то компоновать, если есть рабочий код, Вы его создали и понимаете, что к чему? Пусть он и работает себе. Стиль оформления кода - дело строго индивидуальное: одни прогеры расписывают "на молекулы", другие, как я, - пишут очень компактно, заряжая десять условий в одной строке через ... ? ... : ... Зачем мы будем Вам что-то навязывать? Вы должны сами выработать свой стиль, как наверняка у Вас есть свой любимый цвет, любимая музыка и т.д.
 

star603

Новичок форума
Стар, у Вас расплывчатые вопросы, даже не вопросы, а какие-то пожелания из серии "не знаете ли вы, чего мне хочется?". Зачем что-то куда-то компоновать, если есть рабочий код, Вы его создали и понимаете, что к чему? Пусть он и работает себе. Стиль оформления кода - дело строго индивидуальное: одни прогеры расписывают "на молекулы", другие, как я, - пишут очень компактно, заряжая десять условий в одной строке через ... ? ... : ... Зачем мы будем Вам что-то навязывать? Вы должны сами выработать свой стиль, как наверняка у Вас есть свой любимый цвет, любимая музыка и т.д.

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

star603

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

AlexeyVik

Программист mql4 mql5
:sleep: ну ясен перец.. если индюк привязан к библиотеке = библиотека должна лежать в соседней папке Include...

Эта библиотека нужна исключительно для компиляции. Если же для использования, то ничего не нужно. Вот и весь перец…
 
Последнее редактирование модератором:
Верх