Jump to content
muvingman

Напишу советник, скрипт, индикатор на MQL бесплатно

Recommended Posts

Andy Tacker
Ошибки 4200 и 4202 это ошибки работы с объектами. То есть их появление возможно при применении функций типа ObjectCreate, ObjectDelete при указании ошибочного имени объекта в качестве параметра.

 

так-так-так, нука-нука... щя погляжу!


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
Andy Tacker
так-так-так, нука-нука... щя погляжу!

 

При компилировании выдаёт сначала единожды "символ,4002-Индекс массива вне диапазона" один раз, а потом, естественно каждый тик "символ,4200-Объект уже существует".


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX
При компилировании выдаёт сначала единожды "символ,4002-Индекс массива вне диапазона" один раз, а потом, естественно каждый тик "символ,4200-Объект уже существует".

 

В общем, если хочешь, чтобы помогли, выкладывай код полностью


1

Share this post


Link to post
Share on other sites
Andy Tacker
В общем, если хочешь, чтобы помогли, выкладывай код полностью

 

Код бестолковый, выкладывать не буду. Модуль с ошибкой нашёл, сейчас буду исправлять. Благодарю, Антон, за помощь. :agree: Навёл меня на правильные мысли! Спасибо! С уважением, Андрей.


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX
Код бестолковый, выкладывать не буду. Модуль с ошибкой нашёл, сейчас буду исправлять. Благодарю, Антон, за помощь. :agree: Навёл меня на правильные мысли! Спасибо! С уважением, Андрей.

 

Не за что, обращайся :agree:


1

Share this post


Link to post
Share on other sites
Ale111
знаете я был бы премного благодарен. часто слышу от знающих трейдеров что рынок живой. и тот советник который раньше приносил прибыль на сегодня может сливать. может для этого сова самое благоприятное время! в любом случае нужно тестить.

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

Эффективность пока под вопросом, но попробовать можно. Скоро не обещаю, сообщу в личку.

Share this post


Link to post
Share on other sites
mixanik.rus
Да, в основном это так происходит. Поэтому я не сторонник полного автомата, а скорее советник должен быть помошником включаемым целенаправленно трейдером.

Эффективность пока под вопросом, но попробовать можно. Скоро не обещаю, сообщу в личку.

спасибо буду ждать.

Share this post


Link to post
Share on other sites
Andy Tacker

Привет всем! Сделал ф-цию подсчёта залога в валюте депо для мультивалютника. Показывает с искажениями на разных брокерах. Что может быть?

//+------------------------------------------------------------------+
//|       Функция подсчета залога всех ордеров советника             |
//+------------------------------------------------------------------+
double Margin_All() { double Margin=0; int i,Total=OrdersTotal();
for(i=0;i<Total;i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==Magic) { double Lots,OneLot;
if(OrderType()==1||OrderType()==0) { Lots=OrderLots(); 
OneLot=MarketInfo(OrderSymbol(),MODE_MARGINREQUIRED); 
Margin+=OneLot*Lots; }}} return(Margin); } 
//+------------------------------------------------------------------+   

проблема на ***-демо, а на Альпе и ********** пока ништяк...

Все счета без комиссий, ********** - реалцент, Альпа - демо-руб.

post-74216-1404220650,4253_thumb.png

post-74216-1404220650,5809_thumb.png

post-74216-1404220650,7058_thumb.png

Edited by AntFX

:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX

А можно не индусским кодом писать а нормальным? :)

Типа того:

double Margin_All() 
{ 
double Margin=0; 
int i, Total=OrdersTotal();
for(i=0;i<Total;i++) 
{ 
 OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
 if(OrderMagicNumber()==Magic) 
 { 
  double Lots,OneLot;
  if(OrderType()==1||OrderType()==0) 
  { 
   Lots=OrderLots(); 
   OneLot=MarketInfo(OrderSymbol(),MODE_MARGINREQUIRED); 
   Margin+=OneLot*Lots; 
  }
 }
} 
return(Margin); 
} 

Очевидно, что в формуле расчета (кроме самого списка ордеров) участвует одна переменная - MARGIN REQUIRED по всем задействованным инструментам. Её различие у разных брокеров и нужно проверять, чтобы понять, откуда разница.

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Andy Tacker

%2$s

А можно не индийским кодом писать а нормальным? :)

Типа того:

double Margin_All() 
{ 
double Margin=0; 
int i, Total=OrdersTotal();
for(i=0;i<Total;i++) 
{ 
 OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
 if(OrderMagicNumber()==Magic) 
 { 
  double Lots,OneLot;
  if(OrderType()==1||OrderType()==0) 
  { 
   Lots=OrderLots(); 
   OneLot=MarketInfo(OrderSymbol(),MODE_MARGINREQUIRED); 
   Margin+=OneLot*Lots; 
  }
 }
} 
return(Margin); 
} 

Очевидно, что в формуле расчета (кроме самого списка ордеров) участвует одна переменная - MARGIN REQUIRED по всем задействованным инструментам. Её различие у разных брокеров и нужно проверять, чтобы понять, откуда разница.

 

так-так... щя пазырю! А по поводу кода сорри. Написано-то хоть правильно?

Edited by AntFX
для читабельности ветки

:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX
так-так... щя пазырю! А по поводу кода сорри. Написано-то хоть правильно?

 

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


1

Share this post


Link to post
Share on other sites
Andy Tacker
Да вроде правильно. Вопрос вообще странный. В формуле участвует две группы переменных - список ордеров и данные о марже. Очевидно, если результат отличается, то отличие нужно искать либо в одном, либо в другом...

 

Короче, чем больше залог, тем больше искажение в сторону увеличения на любом брокере и счёте... Следовательно здесь что то в моих расчётах. Но я врубиться не могу, как суммарную маржу только определённых ордеров высчитывать! Параметрами можно манипулировать следующими: магик, имя советника, ГлобалВар., комент...


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
Andy Tacker

Приношу извинение за засорение этой ветки своими вчерашними(индусскими) постами.

Вопрос был неправильно сформулирован. Я не прошу написать мне эту функцию, а прошу дать такую информацию: - как считается маржа вообще? Дайте мне рычаг(или пинка)...


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX
Вопрос был неправильно сформулирован. Я не прошу написать мне эту функцию, а прошу дать такую информацию: - как считается маржа вообще?

Кэп отвечает, что маржа определяется брокером (MarketInfo(Symbol(), MODE_MARGINREQUIRED)) :)

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Andy Tacker
Кэп отвечает, что маржа определяется брокером (MarketInfo(Symbol(), MODE_MARGINREQUIRED)) :)

 

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


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX
...прикольно! Но я хочу посчитать залог каждого робота на одном счету. Чтоб на кинескопе показывало бабло, затраченное каждым советником, участвующем в данной "оргии"!

 

Так кто мешает? Вроде бы у тебя в коде все верно было написано. Возможно, причина в том, что твои роботы не правильно выставляют Magic к ордерам.

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Andy Tacker
Так кто мешает? Вроде бы у тебя в коде все верно было написано.

 

мешает К.О.


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX

Ага, вот ещё что. Код не учитывает маржу за локированные позиции. Она взимается обычно в размере 50%, то есть только за 1 сторону


1

Share this post


Link to post
Share on other sites
Andy Tacker
Ага, вот ещё что. Код не учитывает маржу за локированные позиции

 

это я уже пробовал! Про хэдж тоже пробовал.


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
Andy Tacker
Так кто мешает? Вроде бы у тебя в коде все верно было написано. Возможно, причина в том, что твои роботы не правильно выставляют Magic к ордерам.

 

вроде правильно...


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX
это я уже пробовал! Про хэдж тоже пробовал.

 

Что значит пробовал?


1

Share this post


Link to post
Share on other sites
Andy Tacker
Что значит пробовал?

 

MarketInfo(OrderSymbol(),MODE_MARGINHEDGED)

 

- не склоняется!


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
AntFX

Вообще, чтобы понять причину различий - вместо расчета результата в функции выводи в какой-нибудь файл таблицу из строк вида:

Номер тикета[(;символ;направление;...)];Лотность;РазмерМаржи

 

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

MarketInfo(OrderSymbol(),MODE_MARGINHEDGED)

Судя по всему функция глючная (MODE_MARGINHEDGED) и работает шут знает как. Лучше исходить из того что если есть локированные лоты, то нужно самостоятельно вычислять 50% от MODE_MARGINREQUIRED

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Andy Tacker
Вообще, чтобы понять причину различий - вместо расчета результата в функции выводи в какой-нибудь файл таблицу из строк вида:

Номер тикета[(;символ;направление;...)];Лотность;РазмерМаржи

 

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

 

Судя по всему функция глючная и работает шут знает как. Лучше исходить из того что если есть локированные лоты, то нужно самостоятельно вычислять 50% от MARGIN_REQUIRED

 

Ну не знаю... на разных куфняхъ адинакава! буду думать...


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

Share this post


Link to post
Share on other sites
Andy Tacker

а на счёт таблиц - я не сильный программист - школы не хватает...


:crazy:...или держите дольше, или макайте глубже - дно мутное, ни хрена не видно!!!

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.

×