Light Style© by Fisana

Перейти к содержимому


Инвестиционные фонды NordFx: профессиональное управление и прозрачность


NordFX

NordFX

Фотография

Хитрости и трюки MQL


  • Пожалуйста, авторизуйтесь, чтобы ответить
31 ответов в этой теме

#16 Chrome

Chrome

    пробегал

  • Пользователи
  • Pip
  • 1 сообщений

Опубликовано 20 Январь 2008 - 01:35

Всем привет, если есть у кого книга: MQL4. Полное руководство по языку программирования MetaQuotes Language 4.pdf, поделитесь плиз, буду очень благодарен.

Все что есть в справке редактора и на форуме Метаквотес посвещенном этому языку более чем достаточно. Просто надо искать- и найдешь.

#17 Mifune

Mifune

    прописался

  • Пользователи ST test (off)
  • PipPipPip
  • 54 сообщений

Опубликовано 22 Январь 2008 - 07:35

Привет, коллеги!

Есть необходимость загрузить в индикатор произвольное количество заранее заданных уровней (типа того, как это делается в фибо-сетке). Однако, как я понял, использовать levels можно только для separte window. Для chart window в настройках индикатора уровни отсутствуют. Есть ли какая-нибудь возможность обойти эту проблему и задать уровни прямо в MT. Пока ничего лучше чем использовать внешний текстовый файл с заданными параметрами в голову не приходит.
...самурай без меча подобен самураю с мечом но только без меча...

#18 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 01 Май 2008 - 11:07

Все ответы куда-то пропали... :)
Да действительно такие levels как в отделных окнах в главном окне отсутствуют. Но никто не мешает определять линии как объекты или использовать фибо для таких уровней... получится даже более удобнее, чем в в окошках...
Удачи!

#19 bow

bow

    прописался

  • Пользователи ST test (off)
  • PipPipPip
  • 61 сообщений

Опубликовано 22 Апрель 2009 - 07:54

Здравствуйте!

В MQL если массивам не задан размер :
string symbols[] = {"GBPUSD","USDJPY","EURUSD","USDCHF","USDCAD","AUDUSD","NZDUSD"};

массивы часто глючат.

Это лечится функцией
ArrayResize(symbols,ArraySize(symbols));


#20 v@no

v@no

    записался

  • Пользователи ST test (off)
  • PipPip
  • 10 сообщений

Опубликовано 28 Октябрь 2009 - 08:44

Здравствуйте, как убрать или заменить комментарий на графике в верхнем левом углу на время выполнения индикатора? Т.е. какой код для этого нужно встроить в исходник индикатора.

#21 dancer

dancer

    прописался

  • Пользователи ST test (off)
  • PipPipPip
  • 59 сообщений

Опубликовано 20 Март 2010 - 01:03

Подскажите,
есть ли в MQL4 функция поиска выделенного объекта?
Т.е. если по объекту, например вертикальная линия, щёлкнуть левой кнопкой 2 раза,
то после щёлчка по нему правой повляется контекстное меню, в котором можно выбрать свойства этой линии...

Так вот можно ли программно определить этот именно выделенный объект, а потом программно определить его свойства
и потом в программе использовать эти свойства.

Это можно использовать, например,
- скрипт: в выделенной фибе, чтобы поменять число уровней в ней, установить только коррективные или импульсные
- скрипт: между двумя выделенными вертикальными линиями
(т.е. задать таким образом временной промежуток) построить МСФ и натянуть на него фибу
- скрипт: установить у выделенной трендовой линии другой цвет, толщину, тип линии....

В данном наборе скриптов "Автоматизация рисования картинок в MT4" http://forum.masterf...pic=12751&st=75 - спасибо его создателю ,
подобные изменения выполняются только для последнего нарисованного объекта.
Чтобы изменить цвет, толщину линии её нужно удалить и нарисовать новую (т.е. фактически создать последний объект) - лишние операции...

#22 Geokom

Geokom

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 207 сообщений

Опубликовано 07 Апрель 2010 - 09:02

Всем привет! задача такая...

в одном терминале присутствуют инструменты и 4 и 5 значные...
не хочется менять параметры советника для каждого инструмента, хотелось бы программно определять 4 - или 5 значный инструмент ....это влияет на такие параметры советника или скрипта как TP SL и slipage.подскажите, кто нибудь нашел программный способ определения этого ?...
... Является на некую цивилизованную планету один землянин, входит он в контакт и предлагает аборигенам свои
услуги в качестве крупнейшего на земле специалиста по конструированию и эксплуатации вечных двигателей первого
рода. Аборигены, натурально, смотрят этому посланцу сверхразума в рот и, следуя его указаниям, немедленно
принимаются строить. Построили. Не работает вечный двигатель. Землянин крутит колеса, ползает среди стержней и
всяких шестеренок и бранится, что все сделано не так. "технология, - говорит, - у вас отсталая, вот эти узлы надо
решительно переделать, а вон те так и вообще заменить, как вы полагаете? " аборигенам деваться некуда. Принимаются они
переделывать и решительно заменять. И только они это закончили, как вдруг прибывает с земли ракета "скорой
помощи", санитары хватают изобретателя и делают ему надлежащий укол, врач приносит аборигенам свои извинения, и
ракета отбывает. Аборигены в тоске и смущении, стыдясь глядеть друг другу в глаза, начинают расходиться и тут
замечают, что двигатель-то заработал. Да, друзья мои, двигатель заработал и продолжает работать до сих пор, вот
уже полтораста лет.
...
Аркадий и Борис Стругацкие. Малыш

#23 alexgomel

alexgomel

    Торгует
    и
    программирует

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 970 сообщений

Опубликовано 08 Апрель 2010 - 07:09

Всем привет! задача такая...

в одном терминале присутствуют инструменты и 4 и 5 значные...
не хочется менять параметры советника для каждого инструмента, хотелось бы программно определять 4 - или 5 значный инструмент ....это влияет на такие параметры советника или скрипта как TP SL и slipage.подскажите, кто нибудь нашел программный способ определения этого ?...


int Digits; //Количество цифр после десятичной точки в цене текущего инструмента.
// или
double MarketInfo(string Symbol, MODE_DIGITS); // Тоже, произвольного символа




#24 Geokom

Geokom

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 207 сообщений

Опубликовано 03 Май 2010 - 02:23


Всем привет! задача такая...

в одном терминале присутствуют инструменты и 4 и 5 значные...
не хочется менять параметры советника для каждого инструмента, хотелось бы программно определять 4 - или 5 значный инструмент ....это влияет на такие параметры советника или скрипта как TP SL и slipage.подскажите, кто нибудь нашел программный способ определения этого ?...


int Digits; //Количество цифр после десятичной точки в цене текущего инструмента.
// или
double MarketInfo(string Symbol, MODE_DIGITS); // Тоже, произвольного символа



Ну вроде не все так просто...

Например у 5- значных инструментов...
USDJPY 94.615
EURJPY 125.429
EURUSD 1.32164
EURGBP 0.86559

есть и 3 и 5 знаков после запятой

У 4-значных есть 2 или 4

AUDJPY 87.75
EURAUD 1,4271

Значит, получается таким образом:

if (Digits ==2 || Digits ==4) {k = 10;}
if (Digits ==3 || Digits ==5) {k = 1;}


Это для правильной постановке TP и SL.
... Является на некую цивилизованную планету один землянин, входит он в контакт и предлагает аборигенам свои
услуги в качестве крупнейшего на земле специалиста по конструированию и эксплуатации вечных двигателей первого
рода. Аборигены, натурально, смотрят этому посланцу сверхразума в рот и, следуя его указаниям, немедленно
принимаются строить. Построили. Не работает вечный двигатель. Землянин крутит колеса, ползает среди стержней и
всяких шестеренок и бранится, что все сделано не так. "технология, - говорит, - у вас отсталая, вот эти узлы надо
решительно переделать, а вон те так и вообще заменить, как вы полагаете? " аборигенам деваться некуда. Принимаются они
переделывать и решительно заменять. И только они это закончили, как вдруг прибывает с земли ракета "скорой
помощи", санитары хватают изобретателя и делают ему надлежащий укол, врач приносит аборигенам свои извинения, и
ракета отбывает. Аборигены в тоске и смущении, стыдясь глядеть друг другу в глаза, начинают расходиться и тут
замечают, что двигатель-то заработал. Да, друзья мои, двигатель заработал и продолжает работать до сих пор, вот
уже полтораста лет.
...
Аркадий и Борис Стругацкие. Малыш

#25 sokolov yura

sokolov yura

    пробегал

  • Пользователи
  • Pip
  • 1 сообщений

Опубликовано 19 Август 2010 - 03:20

Значит, получается таким образом:

if (Digits ==2 || Digits ==4) {k = 10;}
if (Digits ==3 || Digits ==5) {k = 1;} - Что такое "k", что с ним делать? :sad:


Это для правильной постановке TP и SL.
[/quote]

#26 intradey

intradey

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 253 сообщений

Опубликовано 23 Август 2011 - 01:43

Помогите пожалуйста, подскажите где в коде поменять настройки:

цены: (мне нужен Close/Close) настройка Low/High

и ещё он настроен так: при пересечении линией %K (MainBuffer) уровня 30 снизу вверх индикатор скажет "Buy", а при пересечении уровня 70 сверху вниз - "Sell".

... а мне нужно наоборот пересечении линией %K (MainBuffer) уровня 30 сверху вниз и при пересечении уровня 70 снизу вверх...


//+------------------------------------------------------------------+
//| sStochastic.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//----
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 LightSeaGreen
#property indicator_color2 Red
//---- input parameters
extern int KPeriod = 5;
extern int DPeriod = 3;
extern int Slowing = 3;
//---- buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int draw_begin1 = 0;
int draw_begin2 = 0;
//---- Номер бара, по которому будет искаться сигнал
#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
SetIndexBuffer(2, HighesBuffer);
SetIndexBuffer(3, LowesBuffer);
//---- indicator lines
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, MainBuffer);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="sSto(" + KPeriod + "," + DPeriod + "," + Slowing + ")";
IndicatorShortName(short_name);
SetIndexLabel(0, short_name);
SetIndexLabel(1, "Signal");
//----
draw_begin1 = KPeriod+Slowing;
draw_begin2 = draw_begin1+DPeriod;
SetIndexDrawBegin(0, draw_begin1);
SetIndexDrawBegin(1, draw_begin2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator |
//+------------------------------------------------------------------+
int start()
{
int i, k;
int counted_bars = IndicatorCounted();
double price;
//----
if(Bars <= draw_begin2)
return(0);
//---- initial zero
if(counted_bars < 1)
{
for(i = 1; i <= draw_begin1; i++)
MainBuffer[Bars-i] = 0;
for(i = 1; i <= draw_begin2; i++)
SignalBuffer[Bars-i] = 0;
}
//---- minimums counting
i = Bars - KPeriod;
if(counted_bars > KPeriod)
i = Bars - counted_bars - 1;
while(i >= 0)
{
double min = 1000000;
k = i + KPeriod - 1;
while(k >= i)
{
price = Low[k];
if(min > price)
min = price;
k--;
}
LowesBuffer[i] = min;
i--;
}
//---- maximums counting
i = Bars - KPeriod;
if(counted_bars > KPeriod)
i = Bars - counted_bars - 1;
while(i >= 0)
{
double max = -1000000;
k = i + KPeriod - 1;
while(k >= i)
{
price = High[k];
if(max < price)
max = price;
k--;
}
HighesBuffer[i] = max;
i--;
}
//---- %K line
i = Bars - draw_begin1;
if(counted_bars > draw_begin1)
i = Bars - counted_bars - 1;
while(i >= 0)
{
double sumlow = 0.0;
double sumhigh = 0.0;
for(k = (i + Slowing - 1); k >= i; k--)
{
sumlow += Close[k] - LowesBuffer[k];
sumhigh += HighesBuffer[k] - LowesBuffer[k];
}
if(sumhigh == 0.0)
MainBuffer[i] = 100.0;
else
MainBuffer[i] = sumlow / sumhigh*100;
i--;
}
//---- last counted bar will be recounted
if(counted_bars > 0)
counted_bars--;
int limit = Bars - counted_bars;
//---- signal line is simple movimg average
for(i = 0; i < limit; i++)
SignalBuffer[i] = iMAOnArray(MainBuffer, Bars, DPeriod, 0, MODE_SMMA, i);
//---- Статические переменные, в которых хранятся
//---- время последнего бара и направление последнего сигнала
static int PrevSignal = 0, PrevTime = 0;
//---- Если баром для анализа выбран не 0-й, нам нет смысла проверять сигнал
//---- несколько раз. Если не начался новый бар, выходим.
if(SIGNAL_BAR > 0 && Time[0] <= PrevTime)
return(0);
//---- Отмечаем, что этот бар проверен
PrevTime = Time[0];
//---- Если предыдущий сигнал был СЕЛЛ или это первый запуск (PrevSignal=0)
if(PrevSignal <= 0)
{
if(MainBuffer[SIGNAL_BAR] - 10.0 > 0 && 10.0 - MainBuffer[SIGNAL_BAR+1] >= 0)
{
PrevSignal = 1;
Alert("sStochastic (", Symbol(), ", ", Period(), ") - BUY!!!");
}
}
if(PrevSignal >= 0)
{
if(90.0 - MainBuffer[SIGNAL_BAR] > 0 && MainBuffer[SIGNAL_BAR+1] - 90.0 >= 0)
{
PrevSignal = -1;
Alert("sStochastic (", Symbol(), ", ", Period(), ") - SELL!!!");
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
ICQ:
Skipe: intradey2
E-mail: intradey@mail.ru

#27 Soyuznik87

Soyuznik87

    записался

  • Пользователи
  • PipPip
  • 11 сообщений

Опубликовано 02 Январь 2012 - 06:36

Друзья, надеюсь этот вопрос задан в правильном месте и звучит следующим образом, как в MQL4 задать ширину и расстояние между свечами. Пример задачи:Set up the candle width to 5 pixels and the candle distance to 1 pixel.
Заранее благодарю за любую информацию и совет!

#28 maryska2010

maryska2010

    пробегал

  • Пользователи
  • Pip
  • 1 сообщений

Опубликовано 10 Июнь 2012 - 05:02

Реально ли выучить MQL с нуля? Или это под силу лишь тому, кто уже умеет программировать на каком-то языке? И какой язык лучше сначала изучить?

#29 sovetguru

sovetguru

    пробегал

  • Пользователи
  • Pip
  • 1 сообщений

Опубликовано 10 Июнь 2012 - 05:06

Реально ли выучить MQL с нуля? Или это под силу лишь тому, кто уже умеет программировать на каком-то языке? И какой язык лучше сначала изучить?



В принципе, вполне реально. Во всяком случае учебник Сергея Ковалева рассчитан как раз на тех кто «с нуля». Еще есть уроки с нуля на http://fxauto.pro. Это по-моему даже лучше, чем просто учебник. Но я считаю, что сначала лучше все таки хотя бы немного освоить язык Си. Тогда будет проще.

#30 solution133

solution133

    пробегал

  • Пользователи
  • Pip
  • 3 сообщений

Опубликовано 24 Март 2013 - 11:24

Реально ли выучить MQL с нуля? Или это под силу лишь тому, кто уже умеет программировать на каком-то языке? И какой язык лучше сначала изучить?

Реально. Начал заниматься этим делом не с книги, а с того что начал изучать как устроены индикаторы и советники. Просматриваешь, улавливаешь логику построения, а если что не понятно - F1. После этого литература по MQL4 становится хорошим дополнением и осваивается намного легче




Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Рейтинг брокеров форекс: кто лидер, кто аутсайдер и почему?




Masterforex-V NordFX

Rambler's Top100

Принимаем Z-Payment