Jump to content
Sign in to follow this  
Circle

Новый билд. Класс методы которого реализуют торговые функции.

Recommended Posts

Circle

Класс Trader и пример его использования в простом мультивалютном эксперте.

Как видите исходник эксперта стал более читабельный и компактнее.

Пример эксперта, это только пример и не предназначен для работы на реальных счетах. Хотя если исправить умышленную ошибку показывает неплохой результат, стратегию для советника любезно предоставила https://forum.alpari.com/member.php?u=41585.

Новая папка.zip

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
ЖАБА77
Класс Trader и пример его использования в простом мультивалютном эксперте.

Как видите исходник эксперта стал более читабельный и компактнее.

Пример эксперта, это только пример и не предназначен для работы на реальных счетах. Хотя если исправить умышленную ошибку показывает неплохой результат, стратегию для советника любезно предоставила https://forum.alpari.com/member.php?u=41585.

 

Circle) Жаба77 не в теме)

повтор!

это твоя тема) твои фантазии)

успехов!

...................

Моя стратегия еще не готова.

Ты поленился зайти по ссылке ,что бы хотя бы быть в курсе моих вопросов.

.........

 

Пример эксперта, это только пример и не предназначен для работы на реальных счетах. .

вот это верно!


Покупаю лоссы -Дарю профиты) Ква!

Share this post


Link to post
Share on other sites
AntFX

Как насчет исправления ошибок в самом классе?

...

for(int i=OrdersTotal(); i>=0; i--)

{

if(OrderSelect(i, SELECT_BY_POS, ...

...

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Circle
Как насчет исправления ошибок в самом классе?

...

for(int i=OrdersTotal(); i>=0; i--)

{

if(OrderSelect(i, SELECT_BY_POS, ...

...

 

Уточните пожалуйста в каком методе класса вы обнаружили ошибку.

И обоснуйте, если вас не затруднит, почему вы считаете это ошибкой.

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
AntFX
Уточните пожалуйста в каком методе класса вы обнаружили ошибку.

И обоснуйте, если вас не затруднит, почему вы считаете это ошибкой.

 

Первый проход тела цикла всегда будет генерировать ошибку 4051.

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Circle
Первый проход тела цикла всегда будет генерировать ошибку 4051.

 

Причину можете сказать этой ошибки.

В журнале терминала мне она не попадалась.


Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
AntFX
Причину можете сказать этой ошибки.

В журнале терминала мне она не попадалась.

 

И не попадется, пока не вызовите GetLastError. Но код не правильный... Описание ошибки есть в справке, надеюсь разберетесь


1

Share this post


Link to post
Share on other sites
Ugar68
Причину можете сказать этой ошибки.

В журнале терминала мне она не попадалась.

Не существует ордера с номером OrdersTotal().


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Circle
Не существует ордера с номером OrdersTotal().

 

То есть надо использовать OrdersTotal()-1 ???

...

Непонятно, вроде насколько я знаю эта функция возвращает количество открытых ордеров.

поэтому, я думаю вполне естественно использовать ее в том виде, что написано у меня.

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
Ugar68
То есть надо использовать OrdersTotal()-1 ???

Да.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
Circle
Да.

 

Понятно, спасибо, проверим.


Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
AntFX
Непонятно, вроде насколько я знаю эта функция возвращает количество открытых ордеров.

поэтому, я думаю вполне естественно использовать ее в том виде, что написано у меня.

 

Тогда было бы неестественно использовать цифру 0. Так что в том виде, в котором было у вас, не естественно в любом случае ))

Либо нумерация идет от 1 до размера массива, либо от 0 до размера массива-1

Edited by AntFX

1

Share this post


Link to post
Share on other sites
Circle
Тогда было бы неестественно использовать цифру 0. Так что в том виде, в котором было у вас, не естественно в любом случае ))

 

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

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
AntFX

Да, со всеми бывает...

Edited by AntFX

1

Share this post


Link to post
Share on other sites
AntFX

Ну так что, исправленную версию класса выкладывать будем, или пофиг?


1

Share this post


Link to post
Share on other sites
Circle

Ну так что, исправленную версию класса выкладывать будем, или пофиг?

Извиняюсь, не следил за темой, только что увидел ваше сообщение.

Думал класс ни кого не заинтересовал.

...

Чуть позже выложу.


Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
Circle

Исправленный класс и кусочек кода из эксперта для примера как его можно использовать для создания мультивалютного эксперта. (файл надо переименовать в *.mqh, так как с таким расширением форум не дает загружать файлы)

....

 
#include <Classes\Trader.mqh>
 
input bool   Multi     = false;//мульти символьные торги
input double Lots      = 0.01;//Объем позиций
.........
 
input string SYMBOLS ="EURUSD;GBPUSD;USDCHF;USDCAD";//торгуемые символы через ;
.....
 
 
string Symbols[];
int CurrentTrend[];
int OldTrend[];
uint SymbolCount = 1;
Trader Traders[];
.........
 
int OnInit()
{
    
   if (Multi)
   {
      int res=StringSplit(SYMBOLS,StringGetCharacter(";",0),Symbols);
      if (res<=0) return(INIT_PARAMETERS_INCORRECT); 
      SymbolCount = res;
      ArrayResize(CurrentTrend,SymbolCount);
      ArrayResize(OldTrend,SymbolCount);
      ArrayResize(Traders,SymbolCount);
      for (uint i=0;i<=SymbolCount-1;i++)
      {
         CurrentTrend[i]=GetTrend(Symbols[i]);
         OldTrend[i]=CurrentTrend[i];      
         Traders[i].Initalize(Symbols[i],Magik,Slipage,Comm,Market);        
      }
   }else 
   {
      ArrayResize(CurrentTrend,SymbolCount);
      ArrayResize(OldTrend,SymbolCount);
      ArrayResize(Traders,SymbolCount);
      ArrayResize(Symbols,SymbolCount);
      CurrentTrend[0]=GetTrend(Symbol());
      OldTrend[0]=CurrentTrend[0];  
      Symbols[0]=Symbol();    
      Traders[0].Initalize(Symbol(),Magik,Slipage,Comm,Market);
   }   
   return(INIT_SUCCEEDED);
}

Trader.mq4

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
Circle

Переменную класса в примере кода движок форума зачем то на звездочки заменяет.

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

...

 

Если есть еще какие ошибки сообщите, так как в своих советниках я использую не все методы реализованные в этом классе.

Edited by Circle

Что такое форекс? Это там где деньги лежат.  :)

Share this post


Link to post
Share on other sites
Circle

Еще один пример возможностей нового языка mql4.

За основу взят пример от метаквот SimplePanel

Experts.zip


Что такое форекс? Это там где деньги лежат.  :)

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×