Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 841

 
Спасибо за ответ , но я имел ввиду какими функциями mql4 можно это реализовать?
 
MiroshA:
Спасибо за ответ , но я имел ввиду какими функциями mql4 можно это реализовать?
Разными. В зависимости от алгоритма, который вы для себя примете в разработку.
 

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

пока эдинственный вариант который я придумал это присвоить каждой валюте определенное число по умолчанию и использовать все теже глобальные переменные. например так 01023334455 , где 01 -usd , 02 eur , 3, 4, 5 - данные для обмена. может есть более изощренный способ , что подскажете?

 
pycha:

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

пока эдинственный вариант который я придумал это присвоить каждой валюте определенное число по умолчанию и использовать все теже глобальные переменные. например так 01023334455 , где 01 -usd , 02 eur , 3, 4, 5 - данные для обмена. может есть более изощренный способ , что подскажете?

А в имя переменной вставить символ? Соответственно если такая GV переменная есть ... и можно в неё загнать значение. Так получится 1 переменная выполняет 2 назначения.

 

просто хочется чтобы прога более универсальна была. таким способом в файл можно загнать 01 -usd , 02 eur. и при окрытии окна usdaud оно найдет что aud нет в списке и присвоит ему номер 03, сохраняя об этом инфу в файл. таким способом  я лишаю себя задачи перекомпилировать прогу каждый раз если открываю на новой валюте, которая не была испробована

 
AlexeyVik:

А в имя переменной вставить символ? Соответственно если такая GV переменная есть ... и можно в неё загнать значение. Так получится 1 переменная выполняет 2 назначения.


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



отклонился от темы. суть вопроса в чем - есть ли еще какие-то  уловки кроме GV - переменных позволяющих передавать данные с одной копии программы в другую через оперативку?

 
pycha:

просто хочется чтобы прога более универсальна была. таким способом в файл можно загнать 01 -usd , 02 eur. и при окрытии окна usdaud оно найдет что aud нет в списке и присвоит ему номер 03, сохраняя об этом инфу в файл. таким способом  я лишаю себя задачи перекомпилировать прогу каждый раз если открываю на новой валюте, которая не была испробована


Зачем присваивать? Есть список символов. Он независим от сортировки. Получается, что можно найти номер символа в списке и его использовать.
 
ладно, всем спасибо
 
pycha:

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



отклонился от темы. суть вопроса в чем - есть ли еще какие-то  уловки кроме GV - переменных позволяющих передавать данные с одной копии программы в другую через оперативку?

Ну тогда попробуй сделать структуру в библиотеке, заполняй и оттуда читай.
 

Добрый вечер! Помогите разобраться код ниже, sell написан по такому же принципу, почему три варианта открытия, потому как пришлось заморочиться с вариантом избежания открытия ордера тогда - когда ордер открывается на текущем баре и закрывается по безриску,

а сигнал остается и опять идет открытие, поэтому пришлось вот так писать. А проблема в том, что открывается всего один ордер бай и селл и все, дальше молчание, я ошибки так и не нашел. Заранее благодарен.

//+------------------------------------------------------------------+
//| Open Order Buy                                                   |
//+------------------------------------------------------------------+
if (!OrdersTotal()==true)
{
if (PLO0>S0 && PLO1<=S1 && PLO2<S2)
if (!OrdersHistoryTotal()==true)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,StopLossBuy,0,NULL,0,0,clrGreen);
RefreshRates();
{
if(ticket<0)
{
Print("OrderSend OP_BUY завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend OP_BUY успешно выполнена");
}
}
if (OrdersHistoryTotal()==true)
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderCloseTime()>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol()&& PLO0>S0 && PLO1<=S1 && PLO2<S2 && OrderCloseTime()< Time[0])
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,StopLossBuy,0,NULL,0,0,clrGreen);
RefreshRates();
{
if(ticket<0)
{
Print("OrderSend OP_BUY завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend OP_BUY успешно выполнена");
}
}
if (OrdersHistoryTotal()==true)
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderCloseTime()>0 && !OrderType()==OP_BUY && OrderSymbol()==Symbol()&& PLO0>S0 && PLO1<=S1 && PLO2<S2)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,StopLossBuy,0,NULL,0,0,clrGreen);
RefreshRates();
{
if(ticket<0)
{
Print("OrderSend OP_BUY завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend OP_BUY успешно выполнена");
}
}
}
Причина обращения: