Все ордера большего объема открываются только объемом 0.3 лота. Все ордера меньшего объема, в ответ на закрытие которых по СЛ открываются ордера объемом 0,3 лота, открываются объемом 0.1 лот. Только 0,1 и 0.3. Других объемов нет.
Во время закрытия по СЛ ордера объемом 0,3 запомнить час открытия ордера в ответ на закрытие которого он был открыт( то есть ордера объемом 0.1 лот).
Спасибо за помощь.
Не подскажете заодно а где настраивается опция которая отправляет сообщения на .адрес моей электронной почты, когда на мой пост пришел ответ.
Еще раз спасибо огромное.
А вам собственно что нужно, алгоритм или саму написанную функцию?
Если несколько ордеров объемом 0.3 закрылись по СЛ на ОДНОМ ТИКЕ
{
запомнить значение часа открытия КАЖДОГО соответствующего ордера объемом 0.1
}
Я написал работающий код для открытия и закрытия ордеров( см. первый пост)
Но не знаю каким кодом его дополнить , что бы сохранять значение часа открытия ордера объемом 0.1.
И не знаю как закодировать открытие ордеров и запоминание значения часа открытия в случае если на одном тике закрылось по СЛ несколько ордеров.
Если в связи с реализацией моей идеи нужно поменять код который я написал - я не возражаю, если Вы его поменяете.
КОНЕЧНАЯ ЦЕЛЬ ВСЕЙ МОЕЙ ПРОГРАММЫ - ЗАПОМНИТЬ ЗНАЧЕНИЕ ЧАСА ОТКРЫТИЯ . А все остальные операции( в т.ч и открытие ордеров) подчинены этой цели и носят вспомогательный характер.
Если бы я знал как обойтись без них , я бы не включал их в код.
Спасибо еще раз.
Вот накидал примерно программку. Посмотрите, разберитесь. Там комментарии есть.
externint MagicNumber=123;
datetime time;
//=================================================================void start()
{
int er,se;
if(prov_open_orders()) //Проверяем, есть ли открытые ордера
{
se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту//то просто возвращается нулевое значение//Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем//его время открытия. В переменной time будет время открытия ордера с лотом 0.1if(se==1)
{
if(OrderType()==OP_BUY && OrderProfit()<0)
{//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
time=SearTim(se);//Теперь находим время ордера с лотом 0.1
}
}
if(se==2)
{
if(OrderType()==OP_SELL && OrderProfit()<0)
{//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
time=SearTim(se);//Теперь находим время ордера с лотом 0.1
}
}
}
return;
}
//========================bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
{
if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
return(false); // есть открытые ордера (любые)
}
}
}
}
return(true);
}
//=================================================================datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
{
if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
{//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотомreturn(OrderOpenTime());
}
if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
{//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотомreturn(OrderOpenTime());
}
}
}
}
return(NULL);
}
//=================================================================int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
{
if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderProfit()>0)
{//Если закрылся по профиту то просто ухоим из цикла.return(0);
}
if(OrderType()==OP_SELL && OrderProfit()<0)
{//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотомreturn(2);
}
if(OrderType()==OP_BUY && OrderProfit()<0)
{//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотомreturn(1);
}
}
}
}
return(0);
}
Попробуйте обновить котировки. Сервис - Архив котировок - выберите вашу валютную пару - загрузить.
Если не поможет, то переустановите метатрейдер.
Я пробывал переустановить несколько раз и даже открыть ноавый счет.... Не помогло. С чем это может бы связоно?
Спосибо.
Я пробывал переустановить несколько раз и даже открыть ноавый счет.... Не помогло. С чем это может бы связоно?
Спосибо.
А в папке, куда устанавливается метатрейдер вы удаляли все файлы перед установкой?
И с архивом котировок вы пробовали?
Все ордера большего объема открываются только объемом 0.3 лота. Все ордера меньшего объема, в ответ на закрытие которых по СЛ открываются ордера объемом 0,3 лота, открываются объемом 0.1 лот. Только 0,1 и 0.3. Других объемов нет.
Во время закрытия по СЛ ордера объемом 0,3 запомнить час открытия ордера в ответ на закрытие которого он был открыт( то есть ордера объемом 0.1 лот).
Спасибо за помощь.
Не подскажете заодно а где настраивается опция которая отправляет сообщения на .адрес моей электронной почты, когда на мой пост пришел ответ.
Еще раз спасибо огромное.
А вам собственно что нужно, алгоритм или саму написанную функцию?
Спасибо за отклик.
Мне или алгоритм , или функцию.
Главное что бы код запоминал значение часа после закрытия по СЛ ордера объемом 0.3
Я не знаю как закодировать именно это действие.
Если ордер объемом 0.3 закрылся по СЛ
{
A2= значение часа открытия ордера меньшего объема в ответ на закрытие которого он открылся
}
===================================================================================================
Если несколько ордеров объемом 0.1 закрылись по СЛ на ОДНОМ ТИКЕ
{
открыть по цене закрытия КАЖДОГО закрытого ордера отдельный ордер объемом 0.3
}
===================================================================================================
Если несколько ордеров объемом 0.3 закрылись по СЛ на ОДНОМ ТИКЕ
{
запомнить значение часа открытия КАЖДОГО соответствующего ордера объемом 0.1
}
Я написал работающий код для открытия и закрытия ордеров( см. первый пост)
Но не знаю каким кодом его дополнить , что бы сохранять значение часа открытия ордера объемом 0.1.
И не знаю как закодировать открытие ордеров и запоминание значения часа открытия в случае если на одном тике закрылось по СЛ несколько ордеров.
Если в связи с реализацией моей идеи нужно поменять код который я написал - я не возражаю, если Вы его поменяете.
КОНЕЧНАЯ ЦЕЛЬ ВСЕЙ МОЕЙ ПРОГРАММЫ - ЗАПОМНИТЬ ЗНАЧЕНИЕ ЧАСА ОТКРЫТИЯ . А все остальные операции( в т.ч и открытие ордеров) подчинены этой цели и носят вспомогательный характер.
Если бы я знал как обойтись без них , я бы не включал их в код.
Спасибо еще раз.
Вот накидал примерно программку. Посмотрите, разберитесь. Там комментарии есть.
А в папке, куда устанавливается метатрейдер вы удаляли все файлы перед установкой?
И с архивом котировок вы пробовали?
Да, 0 результат :((
Да, 0 результат :((
Тогда только к своему ДЦ обращаться в службу поддержки...
В первый раз такое вижу.
Тогда только к своему ДЦ обращаться в службу поддержки...
В первый раз такое вижу.
Как вы думайте, есть ли в windows 10 служба котороя влияет на это?
Как вы думайте, есть ли в windows 10 служба котороя влияет на это?
Нет. Нету такой
Нет. Нету такой
Спасибо
Большое Вам спасибо за помощь
Я только осваиваю азы программирования по учебнику Ковалева и по функциям, которые изложены в нем.
В Вашем коде я встретил функции , которые я не встречал ни в учебнике, ни в Сode Base
Вот функции которые мне не знакомы
sear();
SearTim(se);
prov_open_orders()
Буду очень признателен, если подскажете где можно о них почитать.