[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 354

 
Valsorya:

Добрый день !!

Подскажите как быть -На  Альпари массивы дробных чисел в ДЛЛ не передаётся по-нормальному.Думал, где-то в советнике ошибка! Скопировал все файлы в инсту,форексфо4Ю - всё корректно передаётся! Вывожу передаваемый массив в терминал - работает отлично! Передаю сразу его в длл - крякозябры! В инсте,форекс4ю  работает! в альпари нет! Это просто какой-то капец! Целые числа передаёт нормально, а дробные как-попало! Завтра прийдётся извращаться, чтоб дробные числа в виде целых передавать.Например умножать их всех на 100 000, а в длл делить их на 100 000 и получать дроби. Но размер контракта - 100 000.. если его умножить на 10 000, то в целое число оно не влезет. 

Может кто знает как сделать, советника пишу. 

Код покажите.
 
подскажите как можно сделать чтобы через каждые 50 пунктов открывался baylimit и если он есть то больше не открывает. 
 

Как можно узнать сумму средств AccountEquity() на начало торгового дня?

 
Elektronik:

Как можно узнать сумму средств AccountEquity() на начало торгового дня?


посчитать самому.
или индикатор с кодебазы скачать.

 

Посоветуйте литературу по языку mql4 для программирования начинающему, если можно ссылки

 

Как отключить Алерт, установил а не вижу его в таблице, подскажите пожалуйста

 
Как проверить есть ли отложенный или открытый ордер на by на данной цене?
 

Подскажите как быть -На  Альпари массивы дробных чисел в ДЛЛ не передаётся по-нормальному.Думал, где-то в советнике ошибка! Скопировал все файлы в инсту,форексфо4Ю - всё корректно передаётся! Вывожу передаваемый массив в терминал - работает отлично! Передаю сразу его в длл - крякозябры! В инсте,форекс4ю  работает! в альпари нет! Это просто какой-то капец! Целые числа передаёт нормально, а дробные как-попало! Завтра прийдётся извращаться, чтоб дробные числа в виде целых передавать.Например умножать их всех на 100 000, а в длл делить их на 100 000 и получать дроби. Но размер контракта - 100 000.. если его умножить на 10 000, то в целое число оно не влезет. 

Может кто знает как сделать, советника пишу. Просили выложить код вот : 

в mql:

 в шапке:

//+------------------------------------------------------------------+
 #import "имя файла не скажу))).dll"

 void SendDataToDLL(int SendDataToDLL_DataForDLL_int[50],
                    double SendDataToDLL_DataForDLL_double[50],
                    int SendDataToDLL_ArrayOfErrors[30],
                    int SendDataToDLL_ArrayOfWornings[10]);
 ...

 #import
//+------------------------------------------------------------------+
...
//+------------------------------------------------------------------+
 int init()
{...
 CreateDataForDLL();
 SendDataToDLL(DataForDLL_int,
               DataForDLL_double,
               DataToDLL_ArrayOfErrors,
               DataToDLL_ArrayOfWornings);
 ...
}
//+------------------------------------------------------------------+
void CreateDataForDLL()
{...
 int CreateDataForDLL_i = -1;
 ...
 CreateDataForDLL_i++; DataForDLL_double[CreateDataForDLL_i] = AccountLeverage();
 CreateDataForDLL_i++; DataForDLL_double[CreateDataForDLL_i] = AccountStopoutLevel();
 CreateDataForDLL_i++; DataForDLL_double[CreateDataForDLL_i] = AccountBalance();
 CreateDataForDLL_i++; DataForDLL_double[CreateDataForDLL_i] = AccountCredit();
 ...
}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

в с++

 объявляем в хэдере, разумеется, и пишем в cpp:

 extern "C" __declspec(dllexport) void __stdcall SendDataToDLL(int SendDataToDLL_DataForDLL_int[50],
                                                               double SendDataToDLL_DataForDLL_double[50],
                                                               int SendDataToDLL_ArrayOfErrors[30],
                                                               int SendDataToDLL_ArrayOfWornings[10])
{...
 int SendDataToDLL_i; SendDataToDLL_i = 0;
 // раздупляем массив int без проблем
 ...
 SendDataToDLL_i = 0;
 ... //InputData - структура..не суть важно..
 SendDataToDLL_i++; InputData.AccountLeverage = SendDataToDLL_DataForDLL_double[SendDataToDLL_i];
 SendDataToDLL_i++; InputData.AccountStopoutLevel = SendDataToDLL_DataForDLL_double[SendDataToDLL_i];
 SendDataToDLL_i++; InputData.AccountBalance = SendDataToDLL_DataForDLL_double[SendDataToDLL_i];
 SendDataToDLL_i++; InputData.AccountCredit = SendDataToDLL_DataForDLL_double[SendDataToDLL_i];
 ...
 string sssss;
 sssss = GetCurrentDir().c_str();
 sssss += "\\InputData.txt";
 std::ofstream out2 (sssss.c_str());
 // выводим в текстовый файл массив int - всё отлично
 ...
 for (SendDataToDLL_i = 0; SendDataToDLL_i < 40; SendDataToDLL_i++)
 {out2 << FloatToStr(SendDataToDLL_DataForDLL_double[SendDataToDLL_i]).c_str() << '\n';
 }
 ...}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

Заглядываем в текстовый файл и в массиве int наслаждаемся корректными данными, а массив же double, который следует за ним полон всякого бреда типа нулей или невдолбенно-огромных чисел, которых не может там быть в принципе.

При чём это только в альпари. если все эти файлы (dll и ex4) кинуть в инсту, например, всё работает отлично и все данные выводятся корректно.
 
Stells:

Добрый день.

подскажите, как оптимальнее фиксировать пересечение, допустим стохастика:

на первом и третьем баре  сравнивать значения линий сигнал и мэйн или первом и втором ? 


На двух соседних. 
 
И почему на альпари MarketInfo(Symbol(), MODE_STOPLEVEL) возвращает 0???