Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2527
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти на MQL5 - языки очень похожи.
Здесь можно будет обсудить задачи, алгоритмы их решения, да и впрочем, любые вопросы, так или иначе касающиеся программирования для МТ.
Надеюсь, что к решению вопросов подтянутся другие опытные участники нашего форума, и ветка будет интересна всем.
Объясните ArraySetSeries, CopyRates, Copy(high, low и т.д.)
Справку читали? Там же всё подробно и с примерами
ArraySetAsSeries
CopyRates
и всё остальное там же читайте.
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
Уже исправил. Всё равно косяк с буфером обмена. Интересная штука получается). Я нижний зиг-заг за комментирую, то у меня красный зигзаг рисуется нормально, то синий зигзаг рисуется по максимумам. Если я верхний зиг-заг за комментирую, то у меня красный зигзаг рисуется нормально, то синий зиг-заг формируется по минимумам.
Всё равно косяк с буфером обмена.
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти на MQL5 - языки очень похожи.
Здесь можно будет обсудить задачи, алгоритмы их решения, да и впрочем, любые вопросы, так или иначе касающиеся программирования для МТ.
Надеюсь, что к решению вопросов подтянутся другие опытные участники нашего форума, и ветка будет интересна всем.
Расскажите, как сделать перерыв в торговле. Например, чтобы робот не торговал с 8 до 9. И как сделать несколько таких периодов
Расскажите, как сделать перерыв в торговле. Например, чтобы робот не торговал с 8 до 9. И как сделать несколько таких периодов
Здесь помогают, а не делают за Вас.
Покажите что уже Вы сделали и Вам помогут.
Подскажите ребята какой функцией и в какой части кода мне прописать, чтобы отображался комментарий для открытой сделки (именно в терминальной части,а не в журнале), на основании сигнала в коде для открытия SELL or BUY позиции?
Я пробовал использовать команду string DEAL_COMMENT перед ct.PositionOpen, но это не сработало.
Помогите, подскажите пожалуйста! Скриншот куда хочу комментарий прилагаю.
Заранее спасибо!
Подскажите ребята какой функцией и в какой части кода мне прописать,
Добрый день!
ПОдскажите еще пожалуйста в чем может быть причина не срабатывания trailing stop. У меня вот такой код для него, кусок ниже - активация происходит при достижении определенного уровня профита в USD ( TrailingStartProfit ), со стоп-лоссом на уровне Open price, потом стоп-лосс должен переместиться на уровень TrailingStopDistance от цены и дальше уже по нему работать.
Но почему-то при достижении установленного профита Trailing не хочет активироваться. (((
ЧТо в коде не так? Подскажите пожалуйста!
// Function to manage trailing stop
void ManageTrailingStop()
{
for(int i = 0; i < PositionsTotal(); i++) // Loop through all open positions
{
ulong ticket = PositionGetTicket(i); // Get the ticket number of the position
if(PositionSelectByTicket(ticket)) // Select the position by ticket
{
string symbol = PositionGetString(POSITION_SYMBOL);
double currentPrice = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? SymbolInfoDouble(symbol, SYMBOL_BID) : SymbolInfoDouble(symbol, SYMBOL_ASK);
double stopLoss = PositionGetDouble(POSITION_SL);
double profit = PositionGetDouble(POSITION_PROFIT);
double openingPrice = PositionGetDouble(POSITION_PRICE_OPEN); // Get the opening price of the position
// Check if profit exceeds the defined trailing start profit
if(profit >= TrailingStartProfit)
{
// For Buy positions: Set initial stop loss at opening price
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
{
if(stopLoss < openingPrice)
{
stopLoss = openingPrice; // Set stop loss to opening price
ct.PositionModify(symbol, stopLoss, 0);
Print("Initial Stop Loss Set for BUY at Opening Price: ", stopLoss);
}
double newStopLoss = currentPrice - TrailingStopDistance * _Point; // Calculate new stop loss
if(newStopLoss > stopLoss) // Update stop loss only if the new one is higher
{
ct.PositionModify(symbol, newStopLoss, 0);
}
}
// For Sell positions: Set initial stop loss at opening price
else
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
{
if(stopLoss > openingPrice)
{
stopLoss = openingPrice; // Set stop loss to opening price
ct.PositionModify(symbol, stopLoss, 0);
Print("Initial Stop Loss Set for SELL at Opening Price: ", stopLoss);
}
double newStopLoss = currentPrice + TrailingStopDistance * _Point; // Calculate new stop loss
if(newStopLoss < stopLoss) // Update stop loss only if the new one is lower
{
ct.PositionModify(symbol, newStopLoss, 0);
}
}
}
}
}
}
Я новичок в MQL5, как вы поняли, подскажите вот эту первую часть из вашего ответа в какую часть кода нужно прописать, типа сразу после CTrade ct; в начале или в другом каком-то блоке кода?