Jump to content
Programmer

Общие вопросы по языку MQL

Recommended Posts

Medvedrus
не мучай людей - приведи полный код индикатора - тебе желающие помогут. :wink:

 

 

if ( (Close>Open) && (Close[i+1]>Open[i+1]) && (Close[i+2]>Open[i+2]) &&

(((High[i+1]-Low[i+1])*(Close-Open))!=0.0) && (((High[i+2]-Low[i+2])*(Close[i+1]-Open[i+1]))!=0.0) &&

(((High-Low)*(High-Close))/((High[i+1]-Low[i+1])*(Close-Open))) <

(((High[i+1]-Low[i+1])*(High[i+1]-Close[i+1]))/((High[i+2]-Low[i+2])*(Close[i+1]-Open[i+1]))) )

{ ExtMapBuffer1 =1; }

 

Помогите напечатать индикатор по этому условию...

Заранее Спасибо!

Share this post


Link to post
Share on other sites
Programmer
Вопрос: глобальные переменные действуют в рамках текущей сессии эксперта? или если на другом графике будет прикреплен тот же эксперт, у него будут свои гл. переменные?

 

Смотря какие глоб. переменные Вы имеете ввиду. Есть два вида:

1. Глоб. переменные в рамках одной MQL4-программы. Это переменные, объявленные вне всех ф-й программы. Они свои для каждой программы.

2. Глоб. переменные, работа с которыми осуществляется посредством группы ф-й GlobalVariableSet() и т.п. Такие переменные общие длля всех программ в рамках одного терминала.

Share this post


Link to post
Share on other sites
Nickel

Товарищи, помогите определиться со следующим вопросом: Что лучше выбрать Тестер Стратегий в MT4 или заморочиться и изучить другие программы - MetaStock или ***** ?

Есть ли между ними принципиальные различия ?

Хотелось бы вкратце узнать о плюсах и минусах.

 

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

Share this post


Link to post
Share on other sites
Igonter
Товарищи, помогите определиться со следующим вопросом: Что лучше выбрать Тестер Стратегий в MT4 или заморочиться и изучить другие программы - MetaStock или ***** ?

Есть ли между ними принципиальные различия ?

Хотелось бы вкратце узнать о плюсах и минусах.

 

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

Здесь форексный форум, поэтому программы для ФР типа ***** :) сразу выпадают из рассмотрения. А МетаСток безнадежно устарел морально, с ним и сравниваться как-то несерьезно. Для новичка не нужно ничего, кроме MT4. Да и "старичкам" далеко не всем нужно что-то еще.

Share this post


Link to post
Share on other sites
Nickel

Спасибо за ответ.

А какие все таки преимущества у MQL4 ?

Я краем глаза глянул MACD-Sample в MT4 - синтаксис практически Cи-шный.

А например в МетаСтоке синтаксис и сам принцип написания программ сложнее или они практически не различаются ?

Может быть есть различия в технологии или возможности тестирования ?

 

Просто сейчас стою перед принципиальным вопросом, начать изучать MQL4 или другой тестер.

Причем естественно все хвалят программу, которой пользуются сами.

Share this post


Link to post
Share on other sites
Igonter
Спасибо за ответ.

А какие все таки преимущества у MQL4 ?

Я краем глаза глянул MACD-Sample в MT4 - синтаксис практически Cи-шный.

А например в МетаСтоке синтаксис и сам принцип написания программ сложнее или они практически не различаются ?

Может быть есть различия в технологии или возможности тестирования ?

 

Просто сейчас стою перед принципиальным вопросом, начать изучать MQL4 или другой тестер.

Причем естественно все хвалят программу, которой пользуются сами.

В метастоке формульный язык. Им вообще далеко не все можно запрограммировать. Например, у меня есть парочка МТС под МТ4, которые в принципе нельзя перенести на Метасток - язык не поддерживает.

Омегу можете глянуть, WealthLab - но ничего принципиально нового там нет, разве что портфельный тестер в WealthLab. Зато сильно усложняется передача сигналов на исполнение в ДЦ, а в MT4 это непосредственно происходит. В общем, совет - не заморачиваться и MQL изучать.

Share this post


Link to post
Share on other sites
Nickel

Понял. Спасибо. Убедили. =)

Кстати я заметил, что раздел форума совсем молодой, создан в августе.

Раньше не было тестера в МетаТрейдере или просто Раздел создали недавно ?

Share this post


Link to post
Share on other sites
Trade
Смотря какие глоб. переменные Вы имеете ввиду. Есть два вида:

1. Глоб. переменные в рамках одной MQL4-программы. Это переменные, объявленные вне всех ф-й программы. Они свои для каждой программы.

2. Глоб. переменные, работа с которыми осуществляется посредством группы ф-й GlobalVariableSet() и т.п. Такие переменные общие длля всех программ в рамках одного терминала.

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

 

Др. словами я пишу советник, где бы он стоял на разных парах и эти переменные не пересекались. Я так понял, что в данном случае GlobalVariableSet() не подходит.

 

Файлами пользоваться не удобно.


Ваше благополучие зависит от Ваших собственных решений.

Единственное ограничение, которое налагается на наши способности - это наша неспособность признать собственные неограниченные возможности.

Share this post


Link to post
Share on other sites
Shu
Понял, я пользовался GlobalVariableSet(), но мне нужны переменные, которые бы действовали внутри одной сессии (одной программы). И при чем переменные должны сохранять свои значения при следующем выполнении кода (при следующем тике).

конечно.. так и пиши

 
//+------------------------------------------------------------------+
#property copyright "`Shu"
#property link "[url="https://forum.alpari.com/redirector.php?url=http%3A%2F%2FSovetnikShu.ru"]http://SovetnikShu.ru[/url]"
#property indicator_chart_window

bool яВижуВсё = false;

int start() {
  яВижуВсё = true;
  Ась();
  Ась();
}
void Ась() {
  if (яВижуВсё) Print("Офигеть!");
  яВижуВсё = false;
}

Share this post


Link to post
Share on other sites
k005

подскажите плиз!!!!!!!!

 

я случайно перепутал High и Low в выражении

High[Highest(NULL,0,MODE_LOW,11,1)]

что в итоге у мну получилось?

как это толковать?


Коррекция обусловлена открытием твоей позиции

Share this post


Link to post
Share on other sites
Shu
подскажите плиз!!!!!!!!

я случайно перепутал High и Low в выражении

High[Highest(NULL,0,MODE_LOW,11,1)]

что в итоге у мну получилось?

как это толковать?

 

а зачем это вообще толковать?? :-) функции Highest() нету.. :-?

Share this post


Link to post
Share on other sites
Nickel

Товарищи, пользующиеся советниками, подскажите, пожалуйста, насколько стабильно они работают ?

Могут ли возникать сбои при получении котировок ?

Я вчера попробовал проверить встроенный советник - MovingAverage в процессе тестирования примерно 10% котировок были "красными", в хелпе написано, что на этом участке не подкачивались котировки более мелкого масшатаба. :crazy:

А может ли такое возникать в режиме реального времени, может ли это привести к печальным последствиям для депозита ?

 

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

Share this post


Link to post
Share on other sites
Programmer
MovingAverage в процессе тестирования примерно 10% котировок были "красными", в хелпе написано, что на этом участке не подкачивались котировки более мелкого масшатаба. :crazy:

А может ли такое возникать в режиме реального времени, может ли это привести к печальным последствиям для депозита ?

 

Чтобы на все Ваши вопросы ответить нужно учебник написать. А вот про данный могу сказать, что на реале такого не может произойти, т.к. Вы изначально на любом графике получаете тиковые котировки.

Share this post


Link to post
Share on other sites
Vi-ki

Пробую писать советника по пересечениям RSI

при компиляции дает ошибк в обоих строчках

// Торговые критерии

RSI_1_t=iRSI(NULL,0,Period_RSI_1,0,PRICE_CLOSE,0); // RSI_1

RSI_2_t=iRSI(NULL,0,Period_RSI_2,0,PRICE_CLOSE,0); // RSI_2


Богатый не тот у кого много денег, а тот кому хватает

Share this post


Link to post
Share on other sites
Programmer
Пробую писать советника по пересечениям RSI

при компиляции дает ошибк в обоих строчках

// Торговые критерии

RSI_1_t=iRSI(NULL,0,Period_RSI_1,0,PRICE_CLOSE,0); // RSI_1

RSI_2_t=iRSI(NULL,0,Period_RSI_2,0,PRICE_CLOSE,0); // RSI_2

 

По центру лишний нуль.

 

iRSI:

 

double iRSI( string symbol, int timeframe, int period, int applied_price, int shift)

Share this post


Link to post
Share on other sites
Belyaichik

Здравствуйте, уважаемые! Помогите, пожалуйста, с таким вопросом: как можно сложить два индикатора от разных валютных пар. Например: стохастик от eur/usd и стохастик от usd/jpy. Нигде не могу найти информацию по этому вопросу.

Заранее спасибо

Share this post


Link to post
Share on other sites
~~SOM~~
Здравствуйте, уважаемые! Помогите, пожалуйста, с таким вопросом: как можно сложить два индикатора от разных валютных пар. Например: стохастик от eur/usd и стохастик от usd/jpy. Нигде не могу найти информацию по этому вопросу.

Заранее спасибо

Не вижу в этом смысла. Тем более для сильно коррелированных пар.

Share this post


Link to post
Share on other sites
Belyaichik
Не вижу в этом смысла. Тем более для сильно коррелированных пар.

 

Хотелось бы просто узнать как работать с разными парами внутри одного индикатора?

Хочу проверить одну интересную теорию))

 

Если кто знает, подскажите, пожалуйста!

Share this post


Link to post
Share on other sites
Shu
Хотелось бы просто узнать как работать с разными парами внутри одного индикатора?

Хочу проверить одну интересную теорию))

 

Если кто знает, подскажите, пожалуйста!

 

а какая разница??? получай нужные значения по нужным парам и все дела (конечно, в обзор рынка добавь только!)

Share this post


Link to post
Share on other sites
demon_85

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

Я новчек в этом деле поэтому кто нибуть, мог бы мне помоч в создании эксперта!

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

ПОМОГИТЕ!!!

ЗАРАНЕЕ СПАСИБО!!!

Share this post


Link to post
Share on other sites
vadd

Подскажите, пожалуйста, какими минимальными программными средствами можно получить данные о завершении какой-то операции с сервером (открытие ордера, срабатывание отложенного ордера, закрытие ордера, модификация ордера)? Пока что ничего радостного не нашел, неужели единственное решение - просматривание списка ордеров с каждым тиком? Неаккуратненько как-то....

Что вообще объединяет перечисленные выше операции с точки зрения доступности программисту, кроме ОрдерсХистори? Можно ли как-то воспользоваться приходящим с сервера тикетом напрямую?

Share this post


Link to post
Share on other sites
Roger
Подскажите, пожалуйста, какими минимальными программными средствами можно получить данные о завершении какой-то операции с сервером (открытие ордера, срабатывание отложенного ордера, закрытие ордера, модификация ордера)? Пока что ничего радостного не нашел, неужели единственное решение - просматривание списка ордеров с каждым тиком? Неаккуратненько как-то....

Что вообще объединяет перечисленные выше операции с точки зрения доступности программисту, кроме ОрдерсХистори? Можно ли как-то воспользоваться приходящим с сервера тикетом напрямую?

из справки:

 

int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Основная функция, используемая для открытия позиции или установки отложенного ордера.

Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

 

Вот это и проверяй.

Share this post


Link to post
Share on other sites
MW

Добрый...

 

Столкнулся с такой замарочкой:

Есть переменная типа int Count1 которая наполняется счетчиком Count1++

Для вычисления процента я немогу ее поделить на себе подобную Count2++ , но умножается... почему так?


Жми быка! Дави медведя!

Share this post


Link to post
Share on other sites
Nickel

Поделить можете, но при этом результат надо определить как double:

 

Например int Сount1 = 50;

int Count2=25;

double ResultPercent = (Count2/Count1)*100; // в этом случае результат будет 50 (0,5*100)

А если определить результат как целый тип, то

int ResultPercent = (Count2/Count1)*100; // в этом случае результат будет 0 (0*100), так как 0,5 округлится до 0.

Share this post


Link to post
Share on other sites
MW
Поделить можете, но при этом результат надо определить как double:

 

Например int Сount1 = 50;

int Count2=25;

double ResultPercent = (Count2/Count1)*100; // в этом случае результат будет 50 (0,5*100)

А если определить результат как целый тип, то

int ResultPercent = (Count2/Count1)*100; // в этом случае результат будет 0 (0*100), так как 0,5 округлится до 0.

Спасибо...я это знал))


Жми быка! Дави медведя!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×