Jump to content
Programmer

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

Recommended Posts

Programmer

To Dedushka:

 

Хранятся ордера в истории по времени закрытия. Последние закрытые будут последними.

Самый последний: n = OrdersHistoryTotal( ) - 1;

Share this post


Link to post
Share on other sites
Roger
Уважаемый, ты хочешь сказать, что

OrderSelect(0, SELECT_BY_POS, MODE_HISTORY)

сразу даст мне последний закрытый ордер?

Или наоборот, первый? .

Первый. Последний будет иметь номер OrderHistoryTotal()-1. Сортируй их в терминале как хочешь, это внутренняя сортировка только на экране, номера позиций не изменятся.

Share this post


Link to post
Share on other sites
Dedushka
To Dedushka:

 

Хранятся ордера в истории по времени закрытия. Последние закрытые будут последними.

Самый последний: n = OrdersHistoryTotal( ) - 1;

 

Ну, вот и нет проблемы больше, всё остальное я решу быстро сам.

Хорошо, когда есть Programmer, Roger и тема "Язык MQL" - сразу становится легче жить.

Спасибо, джентльмены!


В бой идут одни старики. (с)

Share this post


Link to post
Share on other sites
касса

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

Share this post


Link to post
Share on other sites
Programmer

To касса:

 

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

 

Никак. Для этого надо декомпилировать *.ex4 файл, который, по словам разработчиков, очень хорошо защищён.

 

Читайте: http://forum.mql4.com/ru/2754

Share this post


Link to post
Share on other sites
касса

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

Edited by касса

Share this post


Link to post
Share on other sites
Programmer

To касса:

 

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

 

;) Нет, не смогу - никогда этим не занимался.

 

Про декомпиляцию можно прочитать здесь:

 

http://forum.mql4.com/ru/2963/page6#24658

 

здесь:

 

http://forum.mql4.com/ru/6320/page56#43392

 

и здесь:

 

http://forum.mql4.com/ru/11340/page6

 

Если Вам это очень нужно, наберите в Google фразу: "декомпиляция ex4".

Share this post


Link to post
Share on other sites
касса

спасибо

Share this post


Link to post
Share on other sites
Rann

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


Раннев Дмитрий

AMTS Solutions

Мой блог

Share this post


Link to post
Share on other sites
касса

жаль.очень нужно.

Share this post


Link to post
Share on other sites
Aleks404

люди добрые помогитe прописaть условиe в совeтникe -типa, если (sell ордeр закроется по стоплосс и нe будeт открытых ордeров)то ....


О...BСEВЫШНИЙ дaй мнe силы - добиться цeли.

Share this post


Link to post
Share on other sites
Programmer

To Aleks404:

 

Напрямую такое условие прописать нельзя.

Надо мониторить состояние ордера в функции start().

Делается это так:

 

int start()
{

  [b]static[/b] int t; //статическая переменная - не теряет своего значения при выходе из функции

  t = OrderSend(...); //создание Вашего ордера

  OrderSelect(t, SELECT_BY_TICKET);
  if(OrderClosePrice() == OrderStopLoss() && OrdersTotal() == 0)
  {
     //что надо сделать      
  }

  //...

}

Share this post


Link to post
Share on other sites
Aleks404

Я чё то не понял, на против коментария -//создание Вашего ордера в скобках (...), надо чтото прописать, а то компилятор ругается. И где тут определение что Sell order закр., как мне можно будет поменять условие - -если (sell ордeр закроется по стоплосс и нe будeт открытых ордeров)то .., на-если (Buy ордeр закроется по стоплосс и нe будeт открытых ордeров)то ..


О...BСEВЫШНИЙ дaй мнe силы - добиться цeли.

Share this post


Link to post
Share on other sites
Programmer

to Aleks404:

 

Строчкой t = OrderSend(...) я лишь намекаю, что там, где Вы открываете ордер, Вам нужно возвращаемое ф-ей OrderSend(...) значение положить в переменную t. А какой Вы создаёте ордер и как - дело Ваше.

Алгоритм одинаков как для Sell, так и для Buy.

 

А вообще, Вам не помешает почитать курс MQL4.

Share this post


Link to post
Share on other sites
alex1978
Раньше декомпилировали, но разработчики каждый раз усложняют алгоритмы шифрации. На сегодняшний день я, например, не знаю, чтобы могли декомпилировать. Скорее всего, зря теряете время.

Зря Вы так думаете:D

Share this post


Link to post
Share on other sites
касса
Зря Вы так думаете:D

а вы можете помочь?

Share this post


Link to post
Share on other sites
alex1978
а вы можете помочь?

Лично я этим не занимаюсь ,но мне делали

Share this post


Link to post
Share on other sites
~~SOM~~
Лично я этим не занимаюсь ,но мне делали

Это не ответ. Кто, где, когда, почем, зачем :). Конкретизируйте :) :)!

Share this post


Link to post
Share on other sites
Programmer

... и сразу получайте BAN :biggrin:

Share this post


Link to post
Share on other sites
andrspir

Пишу небольшого советника. Подскажите как программно удалить все отложенные ордера?

Share this post


Link to post
Share on other sites
Programmer

To andsprir:

 

int i, total = OrdersTotal();

for(i=0; i<total; i++)

{

OrderSelect(i, SELECT_BY_POS);

if(OrderType() > 1)

OrderDelete(OrderTicket());

}

Share this post


Link to post
Share on other sites
Roger

To Programmer

Вы наступаете на те же грабли, что и все начинающие. При удалении отсчет ордеров надо вести с конца, а не с начала.

Share this post


Link to post
Share on other sites
Programmer

Да верно, забыл одну строчку - надо так:

 

int i, total = OrdersTotal();

for(i=0; i<total; i++)

{

OrderSelect(i, SELECT_BY_POS);

if(OrderType() > 1)

{OrderDelete(OrderTicket()); i--; total--;}

}

 

Или, действительно, удалять с конца, т.е. так:

 

int i, total = OrdersTotal();

for(i=total-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS);

if(OrderType() > 1)

OrderDelete(OrderTicket());

}

Share this post


Link to post
Share on other sites
SeaSpirit

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

Share this post


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

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

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.

×