Если закрывать как раньше, противоположной, она лакируется ))
Уже все перепробовал, все равно выдает ошибку 2016.04.15 13:17:24Core 12016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request]
Какие поля заполнять, какие нет? Я так понимаю, что не имеет значение короткая позиция открыта или длинная.
//+------------------------------------------------------------------+//| Закрытие позиции по типу |//+------------------------------------------------------------------+void PositionClose(double lot, int P_type,long id)
{
Print("Вход в функцию Закрытие позиции по типу !");
ZeroMemory(mrequest); ZeroMemory(mresult); // обнуляем значения mrequest, mresult//--- Получить текущее значение котировки в структуру типа MqlTickif(!SymbolInfoTick(_Symbol,latest_price))
{
Alert("Ошибка получения последних котировок - ошибка:",GetLastError(),"!!");
return;
}
//--- формируем торговый запрос
mrequest.action = TRADE_ACTION_CLOSE_BY; // закрыть позицию встречной
mrequest.order = id;
// mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение// mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена ask// mrequest.sl = 0; // Stop Loss// mrequest.tp = 0; // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = lot; // количество лотов для торговли// mrequest.magic = MAGIC; // Magic Number// if (P_type == 0) mrequest.type = ORDER_TYPE_SELL; // проверяем тип позиции// if (P_type == 1) mrequest.type = ORDER_TYPE_BUY;
mrequest.type = ORDER_TYPE_CLOSE_BY;
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей ценыif( OrderSend(mrequest,mresult)>0) // если значение отосланного ордера не ноль, то
{ if(mresult.retcode==10009 || mresult.retcode==10008)
Print(" позиция закрыта !");
} else {
Print(ResultRetcodeDescription(mresult.retcode));
return;
}
}
Тестирую мультивалютный советник и хотел бы видеть в визуализаторе все окна по всем валютным парам, по которым идет торговля.
В справке по визуализатору говорится о некой команде "График" в разделе "Вид" главного меню визуализатора, с помощью которой вроде бы можно открывать новые графики. Но у меня почему то команда "График" вообще отсутствует и, соответственно, я не могу открыть графики по дополнительным парам. В чем тут проблема ?
Если закрывать как раньше, противоположной, она лакируется ))
Уже все перепробовал, все равно выдает ошибку 2016.04.15 13:17:24Core 12016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request]
Какие поля заполнять, какие нет? Я так понимаю, что не имеет значение короткая позиция открыта или длинная.
Используйте минимум кода - применяйте стандартную библиотеку:
ES 009:12:21.189 Trade 2016.04.1400:00:30 instant sell 0.01 EURUSD at 1.12728 (1.12728 / 1.12736 / 1.12728)
IL 009:12:21.189 Trades 2016.04.1400:00:30 deal #2sell 0.01 EURUSD at 1.12728 done (based on order #2)
OP 009:12:21.189 Trade 2016.04.1400:00:30 deal performed [#2sell 0.01 EURUSD at 1.12728]
NF 009:12:21.189 Trade 2016.04.1400:00:30 order performed sell 0.01 at 1.12728 [#2sell 0.01 EURUSD at 1.12728]
GJ 009:12:21.192 TestEA (EURUSD,H1) 2016.04.1400:00:30 CTrade::OrderSend: instant sell 0.01 EURUSD at 1.12728 [done at 1.12728]
KH 009:12:21.192 Trade 2016.04.1400:00:31 instant buy 0.02 EURUSD at 1.12736 (1.12728 / 1.12736 / 1.12728)
OD 009:12:21.192 Trades 2016.04.1400:00:31 deal #3buy 0.02 EURUSD at 1.12736 done (based on order #3)
GI 009:12:21.193 Trade 2016.04.1400:00:31 deal performed [#3buy 0.02 EURUSD at 1.12736]
LM 009:12:21.193 Trade 2016.04.1400:00:31 order performed buy 0.02 at 1.12736 [#3buy 0.02 EURUSD at 1.12736]
NS 009:12:21.193 TestEA (EURUSD,H1) 2016.04.1400:00:31 CTrade::OrderSend: instant buy 0.02 EURUSD at 1.12736 [done at 1.12736]
OP 009:12:21.193 TestEA (EURUSD,H1) 2016.04.1400:00:32 Вход в функцию Закрытие позиции по типу !
GI 009:12:21.193 Trade 2016.04.1400:00:32 close position #2sell 0.01 EURUSD by position #3buy 0.02 EURUSD (1.12728 / 1.12736 / 1.12728)
OM 009:12:21.193 Trades 2016.04.1400:00:32 deal #4buy 0.01 EURUSD at 1.12736 done (based on order #4)
RK 009:12:21.193 Trades 2016.04.1400:00:32 deal #5sell 0.01 EURUSD at 1.12728 done (based on order #4)
EF 009:12:21.193 TestEA (EURUSD,H1) 2016.04.1400:00:32 CTrade::OrderSend: unknown action 10 [done]
EI 009:12:21.423 Trade 2016.04.1423:59:59 position closed due end of test at 1.12663 [#3buy 0.01 EURUSD 1.12736]
JG 009:12:21.423 Trades 2016.04.1423:59:59 deal #6sell 0.01 EURUSD at 1.12663 done (based on order #5)
HN 009:12:21.423 Trade 2016.04.1423:59:59 deal performed [#6sell 0.01 EURUSD at 1.12663]
IS 009:12:21.423 Trade 2016.04.1423:59:59 order performed sell 0.01 at 1.12663 [#5sell 0.01 EURUSD at 1.12663]
Подскажите, пожалуйста, в чём моя ошибка.
for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);
Не принтуется дата из массива OpenSellTime и не вторая часть выражения - PriceOpenSell.
И, не могу найти про команды printf типа %G и %d.
Добрый день Всем!)
Такой вопрос чайника в программировании...
Пытаюсь скомпилировать советник под новый билд, компилятор выдает очень много разных ошибок...
Вот одна из них
if(oppositedelete){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}
В этом кусочке кода есть 2 ошибки отмечены красным, '(' - object pointer expected
Почитав немного о сущности ошибки, понял что имя зарезервировано и нужно его заменить...
И вот вопрос на что заменить?
Добрый день Всем!)
Такой вопрос чайника в программировании...
Пытаюсь скомпилировать советник под новый билд, компилятор выдает очень много разных ошибок...
Вот одна из них
if(oppositedelete){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}
В этом кусочке кода есть 2 ошибки отмечены красным, '(' - object pointer expected
Почитав немного о сущности ошибки, понял что имя зарезервировано и нужно его заменить...
И вот вопрос на что заменить?
Есть такая строка в коде
Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);
почему на выходе я получаю такой текст:
OpenSellTime - 2015.12.01 11:15
где ";" и вторая часть - "PriceOpenSell"?
Есть такая строка в коде
Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);
почему на выходе я получаю такой текст:
OpenSellTime - 2015.12.01 11:15
где ";" и вторая часть - "PriceOpenSell"?
убрал ";" - заработала.
Вопрос про printf остался...
Как правильно отправить запрос на закрытие позиции встречной?
Если закрывать как раньше, противоположной, она лакируется ))
Уже все перепробовал, все равно выдает ошибку 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request]
Какие поля заполнять, какие нет? Я так понимаю, что не имеет значение короткая позиция открыта или длинная.
Здравствуйте! Вопрос по тестеру.
Тестирую мультивалютный советник и хотел бы видеть в визуализаторе все окна по всем валютным парам, по которым идет торговля.
В справке по визуализатору говорится о некой команде "График" в разделе "Вид" главного меню визуализатора, с помощью которой вроде бы можно открывать новые графики. Но у меня почему то команда "График" вообще отсутствует и, соответственно, я не могу открыть графики по дополнительным парам. В чем тут проблема ?
Как правильно отправить запрос на закрытие позиции встречной?
Если закрывать как раньше, противоположной, она лакируется ))
Уже все перепробовал, все равно выдает ошибку 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request]
Какие поля заполнять, какие нет? Я так понимаю, что не имеет значение короткая позиция открыта или длинная.
Используйте минимум кода - применяйте стандартную библиотеку:
Журнал агента: