Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Gumko:
Стоит уже 2 день
Привет всем.
Модификация и проблем.
Внешная функция:
bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){
//---- обявяване на структурата и резултата на търговското искане
MqlTradeRequest request;
MqlTradeResult result;
//---- структурна инициализация на търговското искане MqlTradeRequest за модифициране на позиция
request.action = TRADE_ACTION_SLTP;
request.symbol = symbol;
request.sl = StopLoss;
request.tp = Takeprofit;
string word = "";
StringConcatenate(word,
"<<< ============ Modifyposition(): Модифицираме позицията ",
symbol," ============ >>>");
Print(word);
//---- модифицираме позицията и проверяваме резултата от търговското искане
if(!OrderSend(request,result) || result.deal==0)
{
Print("Modify error =", GetLastError());
return(false);
}
return(true);
}
Но так не получается.
Как сделат?
Спосибо :)
Попробуйте так:
Попробуйте так:
Yedelkin,
Спосибо Вам,не получилос.
Я проверил правилно ли считает для старт вызова функции.
Вот как сделал:
double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits);
double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits);
double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits);
double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits);
if(Open > 0){
start_buy = Ask - Open;Print("start_buy=",start_buy);
start_sel = Open - Bid;Print("start_sel=",start_sel);
}
Удивление в логе:
MR 0 Core 1 10:21:49 2012.10.01 01:12:42 deal #2 sell 0.10 EURUSD at 1.28146 done (based on order #2)
GH 0 Core 1 10:21:49 2012.10.01 01:12:42 deal performed [#2 sell 0.10 EURUSD at 1.28146]
NI 0 Core 1 10:21:49 2012.10.01 01:12:42 order performed sell 0.10 at 1.28146 [#2 sell 0.10 EURUSD at 1.28146 (0.00000)]
OF 0 Core 1 10:21:49 2012.10.01 01:12:43 start_buy=0.0001299999999999635
DR 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=5.000000000010552e-005
LE 0 Core 1 10:21:49 2012.10.01 01:12:43 start_buy=0.0001099999999998325
EN 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=7.00000000000145e-005
Конечно интересует толко села-откуда такие числа?
Вроде правилно написал функция-как показано:
SL & TP Modification
Торговый приказ на модификацию уровней StopLoss и/или TakeProfit. Требуется указание 4 полей:
Так а что именно "не получилось"?
Вставляйте код правильно (Ctrl+Alt+M):
Здесь нормализацию надо использовать в другой последовательности.
1. Так как значения типа SymbolInfoDouble(Currency,SYMBOL_BID) приходят с сервера, то они уже считаются нормализованными. И второй раз нормализовывать их - не обязательно. Т.е. можно просто написать:
2. А вот после любой арифметической операции нормализация пропадает, поэтому в случае необходимости получения нормализованного числа надо написать так:
Над остальным пока думаю.
DR 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=5.000000000010552e-005
EN 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=7.00000000000145e-005
Конечно, интересует только села - откуда такие числа?
7.00000000000145e-005 - это всего лишь один из способов записи значения вещественного числа. По-моему, называется "научный". Подробнее см. "Справочник MQL5 / Основы языка / Типы данных / Вещественные типы (double, float)".
Yedelkin,
Спосибо Вам что взялис за решение проблема.
Вот и код.Функции для откритие позиции написани от Николай Коситцин.Nikolay Kositsin.
К примеру к MFI добавил МА и этот МА хочу прописать в советнике. Не знаю как и где.
Благодарю за ответ отвечавшему )
1. Я бы сказал так: использовать чужой код следует с большой долей осторожности. Потому что чужой код - это и чужие ошибки.
2. Вот здесь (https://www.mql5.com/ru/forum/6343/page64#comment_357008) я предложил Вам попробовать правильно обнулить переменные перед их использованием. Но в Вашем коде это предложение пока не реализовано. Более, того, в коде присутствуют конструкции вот такого типа:
Понимаете, в этой конструкции переменные request и result обнуляются не перед использованием, а после использования. Более того, после обнуления этих локальных переменных функция прекращает свою работу, то есть само такое обнуление является бессмысленным. Иными словами, такая конструкция является наглядным примером того, как не надо проводить обнуление переменных типа MqlTradeRequest и MqlTradeResult. Поэтому, если есть желание, попробуйте всё-таки обнулить переменные правильно. Если что-то не получится, подробно опишите, что именно "не работает".
3. В Стандартной библиотеке есть торговый класс "Справочник MQL5 / Стандартная библиотека / Торговые классы / CTrade". Попробуйте разобраться, как применять его на практике. На начальном этапе погружения в язык этот класс может оказаться вполне достаточным. Например, в этом классе есть вот такой метод: "Справочник MQL5 / Стандартная библиотека / Торговые классы / 2CTrade / PositionModify". Реализован он так:
В нём строчка 'ClearStructures();' как раз и обнуляет переменную m_request перед её использованием.