Вопрос к знатокам - страница 3

 
Vinin >>:

Возможно ошибка сидит тут

Так как есть открытые позиции, то должны открываться только дополнительные. А контроля на допустимую цену.

Хотя почему тогда 130 ошибка

может быть значение переменной IncLot не нормализовано ?

 

Убрал вообще эту переменную. Лот постоянный теперь.

Всё равно, на этом же самом месте графика начинает выходить ошибка 130 ...


}
 

Понял, я наконец, почему ошибка вылезает!

Потому, что советник пытается в описанном случае выставить байлимит выше текущей цены!

Тож самое и и селллимитом.

Надо предусмореть В коде  такие случаи   и для них писать отдельно ОРДЕРСЕНД.

//---------------------------

И вообще! Обращаюсь к экспертописателям. Давайте более ответственно размещать в Code Base авторские разработки! Чтобы "порядочные" люди не мучились потом, выискивая ошибки!

//------------

Полдня истратил.....

 

Пытаюсь наладить общение советников в разных терминалах посредством функции Win API GlobalAddAtom().

Передаём данные (в терминале А):

   int Atom;

#import "kernel32.dll"
   string GlobalFindAtom   (string lpString);
   int    GlobalGetAtomName(int nAtom, string lpBuffer, int nSize);
   int    GlobalAddAtom    (string lpString);
   int    GlobalDeleteAtom (int nAtom);
#import

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
      GlobalDeleteAtom (Atom);
   return(0);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() 
  {
     string MarketData = "Здесь некоторые рассчитываемые и обновляемые в реал-тайме данные до 256 байт";
     int Atom = GlobalAddAtom(MarketData);
     
     if (Atom == 0)
        Print("Ошибка добавления атома в глобальную таюлицу атомов.");
     else
        Print("Атом ", Atom, " добавлен глобальную таюлицу атомов удачно.");

   return(0);
  }
//+------------------------------------------------------------------+

Принимаем данные (в терминале Б):

#import "kernel32.dll"
   string GlobalFindAtom   (string lpString);
   int    GlobalGetAtomName(int nAtom, string lpBuffer, int nSize);
   int    GlobalAddAtom    (string lpString);
   int    GlobalDeleteAtom (int nAtom);
#import

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() 
  {
     int    Atom;
     string Buffer;

     Atom=GlobalGetAtomName(Atom, Buffer, 256);
     if (Atom == 0)
        Print("Ошибка чтения атома");
   
   return(0);
  }
//+------------------------------------------------------------------+
Подскажите плиз в чём косяк.
 
Мож кто подтянется по атомам танкиста проконсультировать?
 

Объявлять так надо:

#import "kernel32.dll"
   string GlobalFindAtomA   (string lpString);
   int    GlobalGetAtomNameA(int nAtom, string lpBuffer, int nSize);
   int    GlobalAddAtomA    (string lpString);
   int    GlobalDeleteAtom (int nAtom);
#import
Может еще кто что подскажет)
 
Integer писал(а) >>

Объявлять так надо:

Может еще кто что подскажет)

Спасибо, Дмитрий.

Теперь атом прописывается в таблицу корректно. Только вот прочесть его из таблицы не удаётся.

 
rid >>:

И вообще! Обращаюсь к экспертописателям. Давайте более ответственно размещать в Code Base авторские разработки! Чтобы "порядочные" люди не мучились потом, выискивая ошибки!

//------------

Полдня истратил.....

Я действую строго наоборот. Т.е. размещаю в CodeBase разработки, для того чтобы другие "свежим глазом" посмотрели и по возможности обнаружили там ошибки и пр. недочеты.


Этот принцип хотя лицензией GPL (GNU) не предусмотрен (не указан в тексте самой лицензии), но тем не менее действует.


От ошибок никто не застрахован.

 
Что не понятно - GlobalGetAtomName(Atom, Buffer, 256); Обычно буфер и size по ссылке передаются, значит масивом int надо объявлять.
 

Добрый день. Пож. подскажите, как в функции NormalizeDouble (x, n) 

вместо n подставить число знаков после запятой от  MarketInfo(Symbol_1,MODE_POINT); ?

Причина обращения: