Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 68

 
Vitaly Muzichenko:

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

Что вы вообще вытворяете, вы имеете хоть представление, какой должен быть результат от выполненной вами работы?  Или вы на ходу выдумываете логику?

в текущем примере я хочу иметь возможность положить туда бесконечное количество ордеров с любыми лотами чтобы не было выхода за его пределы

конечно границы мы знаем и все в курсе, но хочу именно так 

исхожу из того что если указать в скобках элемент то он будет последним 

 

вот у меня получилась вот такая хрень. Ожидалось вид орде по по порядку... лот? чтоб в ордерсенд  вместо лота я добавил результат (лот такого-то ордера*коэффициент)

и вопрос извлечения данных оттуда 

хочу получить так как я себе представляю

MyArray[0][0.01]

MyArray[1][0.01]

MyArray[2][0.02]

и т д... 

 


void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

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

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01


   

 
trader781:

в текущем примере я хочу иметь возможность положить туда бесконечное количество ордеров с любыми лотами чтобы не было выхода за его пределы

конечно границы мы знаем и все в курсе, но хочу именно так 

исхожу из того что если указать в скобках элемент то он будет последним 

 

вот у меня получилась вот такая хрень. Ожидалось вид орде по по порядку... лот? чтоб в ордерсенд  вместо лота я добавил результат (лот такого-то ордера*коэффициент)

и вопрос извлечения данных оттуда 


 


void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

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

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01


   

Поясни, пожалуйста что тебе нужно?

ну запихаем все в массив, дальше что?

Массив будем крутить, искать в нем нужную тебе позицию, что? 

Лот какой позиции, есть определения, или на глазок, посмотрел вкладку Торговля , ага нужен 6, так? 
 
Alekseu Fedotov:

Поясни, пожалуйста что тебе нужно?

ну запихаем все в массив, дальше что?

Массив будем крутить, искать в нем нужную тебе позицию, что? 

Лот какой позиции, есть определения, или на глазок, посмотрел вкладку Торговля , ага нужен 6, так? 

 

 

ОнТик() 

            если условие открытия позиций верное

                                  {открываем позицию} 

            если позиция открыта правильно

                                  {доливаем столько же }   

           Если последний  лот это позиция 2 - доливаем лот *1.5 (через функцию найти последний получаем второй) а это третий

           если это будет  четвертый ордер

             доливаем      {лот нулевой+лот первой} 

           если это будет  пятый ордер 

            доливаем       {лот 1 позиции +лот третьей}

В текущий момент есть определения последней позиции в списке

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

Вот я показал что сделал в функцию, правильно или нет не знаю.

поэтому надо как то вытащить данные и уже заранее знать какой по счету буду открывать ордер 

как бы не претендую на то что система вообще рабочая, важна сама реализация 

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

Ни каких ошибок не возникает. Только пишется в другую папку если не используется флаг

FILE_COMMON

4096

Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist())

 
Alexey Viktorov:

Ни каких ошибок не возникает. Только пишется в другую папку если не используется флаг

FILE_COMMON

4096

Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist())

Ну у меня Флаг используется FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Ошибка открытия файла 

 
Top2n:

Ну у меня Флаг используется FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Ошибка открытия файла 

FileOpen() это не флаг... Флаг - FILE_COMMON

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


 
Alexey Viktorov:

FileOpen() это не флаг... Флаг - FILE_COMMON

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


Есть контакт спасибо
 
Здравствуйте!
Подскажите пожалуйста, где можно почитать про свойство #property strict ?
 
Leo59:
Здравствуйте!
Подскажите пожалуйста, где можно почитать про свойство #property strict ?
Например здесь https://docs.mql4.com/ru/basis/preprosessor/compilation
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Причина обращения: