ademen Опубликовано 18 июня, 2024 Поделиться Доработка советников: общая тема Опубликовано 18 июня, 2024 9 часов назад, sasha_shy сказал: вот файл, спасибо! Не загружает Попробуйте отправить в телеграмм (@andrijmix) Ссылка на сообщение Поделиться на другие сайты More sharing options...
sasha_shy Опубликовано 18 июня, 2024 Поделиться Доработка советников: общая тема Опубликовано 18 июня, 2024 В 18.06.2024 в 18:28, ademen сказал: Не загружает Попробуйте отправить в телеграмм (@andrijmix) может так получится ян.диск: Изменено 19 июня, 2024 пользователем sasha_shy Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 18 июня, 2024 Поделиться Доработка советников: общая тема Опубликовано 18 июня, 2024 9 минут назад, sasha_shy сказал: может так получится ян.диск: https://disk.yandex.ru/d/gVZ8obdQJvn-xw советник.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Mordvin Опубликовано 3 июля, 2024 Поделиться Доработка советников: общая тема Опубликовано 3 июля, 2024 Добрый день. Прошу помощи. Планирую советника на основе индикатора JokerFilter. Показывает направление тренда цветными гистограммами. Где в коде финальное определение каким цветом красить столбец? Индикатор JokerFilter.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Кровостек Опубликовано 15 июля, 2024 Поделиться Доработка советников: общая тема Опубликовано 15 июля, 2024 Привет Маркетмейкеры! Может кто помочь? У меня есть простой сеточник. К нему нужно пришить пару параметров. 1. закрывать все ордера по торгуемой паре в профит или убыток в процентах от депозита. 2. открывать ордера с изменением лотности. К примеру что бы с ростом депозита увеличивался лот открываемого ордера в определенном проценте. При уменьшении депо соответственно уменьшалось лотность открываемых файлов. Если это не трудно конечно... Forex Graphic Interactive Display.ex4 Forex Graphic Interactive Display.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sofya Опубликовано 31 июля, 2024 Поделиться Доработка советников: общая тема Опубликовано 31 июля, 2024 Подскажите, где найти прогера проверенного, чтобы отвязать советник от счета? Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 31 июля, 2024 Поделиться Доработка советников: общая тема Опубликовано 31 июля, 2024 27 минут назад, Sofya сказал: Подскажите, где найти прогера проверенного, чтобы отвязать советник от счета? @nixxer Ссылка на сообщение Поделиться на другие сайты More sharing options...
sergafan527 Опубликовано 2 августа, 2024 Поделиться Доработка советников: общая тема Опубликовано 2 августа, 2024 В 03.07.2024 в 09:17, Mordvin сказал: Добрый день. Прошу помощи. Планирую советника на основе индикатора JokerFilter. Показывает направление тренда цветными гистограммами. Где в коде финальное определение каким цветом красить столбец? Индикатор JokerFilter.mq4 7.81 \u043a\u0411 · 7 загрузок Этот индикатор на языке MQL4 работает в отдельном окне и использует два буфера для отображения гистограммы. Он называется "JokerFilter" и выдает сигналы на покупку и продажу в зависимости от условий на основе скользящего среднего. Вот принцип его работы и сигналы, которые он выдает: Принцип работы: Настройки индикатора: TimeFrame — временной интервал, на котором будет рассчитываться индикатор. SmoothPeriod — период сглаживания. SmoothPhase — фаза сглаживания. Настройки для включения/выключения различных типов оповещений (alertsOn, alertsOnCurrent, alertsMessage, alertsSound, alertsEmail). Инициализация: Инициализируются буферы для хранения значений индикатора (g_ibuf_112, g_ibuf_116, g_ibuf_120). Определяется временной интервал для расчета. Устанавливаются стили отображения гистограммы. Расчет значений индикатора: Основные вычисления происходят в функции start(). Рассчитываются значения скользящих средних (ld_0, ld_8, ld_16) для High, Low и Close цен. На основе этих значений определяются сигналы на покупку или продажу: Если ld_16 (сглаженное значение закрытия) больше ld_0 (сглаженное значение максимума), то в g_ibuf_120 записывается -1 (сигнал на продажу). Если ld_16 меньше ld_8 (сглаженное значение минимума), то в g_ibuf_120 записывается 1 (сигнал на покупку). Эти значения отображаются в соответствующих буферах (g_ibuf_112, g_ibuf_116). Оповещения: Если включены оповещения (alertsOn), то при изменении сигнала индикатор может отправлять сообщение, звук или email с помощью функции f0_6(). Сигналы индикатора: Сигнал на покупку: Генерируется, когда сглаженное значение закрытия (ld_16) меньше сглаженного значения минимума (ld_8). В этом случае g_ibuf_120 записывается значение 1, и гистограмма окрашивается в цвет, определенный для покупок (DarkOrange). Сигнал на продажу: Генерируется, когда сглаженное значение закрытия (ld_16) больше сглаженного значения максимума (ld_0). В этом случае g_ibuf_120 записывается значение -1, и гистограмма окрашивается в цвет, определенный для продаж (LimeGreen). Вспомогательные функции: f0_3() — функция, которая выполняет основные вычисления для сглаживания данных. f0_6() — функция для обработки оповещений. f0_5() и f0_1() — функции для работы с временными интервалами. Заключение: Индикатор "JokerFilter" используется для определения моментов входа и выхода из рынка на основе анализа сглаженных значений ценовых данных. Он выдает сигналы на покупку и продажу, отображаемые в виде гистограммы, и поддерживает различные виды оповещений для удобства пользователя. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 3 августа, 2024 Поделиться Доработка советников: общая тема Опубликовано 3 августа, 2024 cmea manual gird.mq4 Здравствуйте уважаемые программисты! Может кто помочь? Есть такая функция закрытие встречных ордеров bool CloseByOrders() { bool error=true; int tip=0, b=0,s=0,TicketApponent=0,Ticket,OT,j,LaslApp=-1; int closeby=0; while(!IsStopped()) { if(CloseByON) { for(j=OrdersTotal()-1; j>=0; j--) { if(OrderSelect(j,SELECT_BY_POS)) { if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber())) { OT=OrderType(); Ticket=OrderTicket(); if(OT>1) {error=OrderDelete(Ticket);continue;} if(TicketApponent==0) {TicketApponent=Ticket;LaslApp=OT;} else { if(LaslApp==OT) continue; if(OrderCloseBy(Ticket,TicketApponent,Green)) TicketApponent=0; else {closeby++;Print("Ошибка ",GetLastError()," закрытия ордера N ",Ticket," <-> ",TicketApponent);} } } } } if(closeby>5) break; b=0;s=0; for(j=OrdersTotal()-1; j>=0; j--) { if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber())) { OT=OrderType(); if(tip==OP_BUY && (OT==OP_BUYLIMIT || OT==OP_BUYSTOP)) error=OrderDelete(Ticket=0); if(tip==OP_SELL && (OT==OP_SELLLIMIT || OT==OP_SELLSTOP)) error=OrderDelete(Ticket=0); } } } if(b==0 || s==0) break; } } CloseAll(-1); return(true); } Может кто поправить так, чтобы закрывалась в профит регулируемый, а не просто. Заранее спасибо Ссылка на сообщение Поделиться на другие сайты More sharing options...
denfotik13 Опубликовано 22 августа, 2024 Поделиться Доработка советников: общая тема Опубликовано 22 августа, 2024 Добрый вечер. Помагите изменить код советника на основе индикатора Ultrafilter. Чтобы после смены цвета стрелки закрывал сделку и открывал противоположную, и так далее. То есть красная стрелка появляется - продаем, как появилась синяя стрелка закрываем продажи и сразу идем в покупки и так по кругу. Могу финансово отблагодарить) UltraFilters v1.1.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
miklucky777 Опубликовано 23 августа, 2024 Поделиться Доработка советников: общая тема Опубликовано 23 августа, 2024 20 часов назад, denfotik13 сказал: Добрый вечер. Помагите изменить код советника на основе индикатора Ultrafilter. Чтобы после смены цвета стрелки закрывал сделку и открывал противоположную, и так далее. То есть красная стрелка появляется - продаем, как появилась синяя стрелка закрываем продажи и сразу идем в покупки и так по кругу. Могу финансово отблагодарить) UltraFilters v1.1.mq4 29.3 \u043a\u0411 · 2 загрузки Либо возможен двойной вариант тейка - количество в пунктах или смена стрелки, что первое выполнится, при количестве пунктов ноль остается условие только по перевороту на стрелке. Ссылка на сообщение Поделиться на другие сайты More sharing options...
booker2121 Опубликовано 26 сентября, 2024 Поделиться Доработка советников: общая тема Опубликовано 26 сентября, 2024 Привет Я работаю над простым кодом мартингейла, но по какой-то причине размер умноженного лота не учитывается. Сделки всегда одного и того же размера. //--- Global Variables (Editable inputs) input double initialLotSize = 0.01; // Initial lot size (editable) input double maxLotSize = 3.2; // Max lot size (editable) input double takeProfitPips = 10; // Take profit in pips (editable) input double stopLossPips = 10; // Stop loss in pips (editable) input int emaPeriod = 20; // EMA period (editable) input int MAGIC_NUMBER = 123456; // Unique identifier for this EA's trades (editable) input double lotMultiplier = 2.0; // Multiplier for lot size after a loss (editable) //--- Other Variables double lotSize; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { lotSize = initialLotSize; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // Get the current price and the EMA double price = iClose(Symbol(), 0, 0); double ema = iMA(Symbol(), 0, emaPeriod, 0, MODE_EMA, PRICE_CLOSE, 0); // Check if there are no open positions if (OrdersTotal() == 0) { // Buy Condition: Price is above EMA if (price > ema) { OpenBuyOrder(); } // Sell Condition: Price is below EMA else if (price < ema) { OpenSellOrder(); } } } //+------------------------------------------------------------------+ //| Function to open a buy order | //+------------------------------------------------------------------+ void OpenBuyOrder() { double sl = NormalizeDouble(Bid - stopLossPips * Point, Digits); double tp = NormalizeDouble(Bid + takeProfitPips * Point, Digits); if (lotSize <= maxLotSize) { int ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, sl, tp, "Buy Order", MAGIC_NUMBER, 0, Green); if (ticket < 0) { Print("Error opening buy order: ", GetLastError()); } } } //+------------------------------------------------------------------+ //| Function to open a sell order | //+------------------------------------------------------------------+ void OpenSellOrder() { double sl = NormalizeDouble(Ask + stopLossPips * Point, Digits); double tp = NormalizeDouble(Ask - takeProfitPips * Point, Digits); if (lotSize <= maxLotSize) { int ticket = OrderSend(Symbol(), OP_SELL, lotSize, Bid, 3, sl, tp, "Sell Order", MAGIC_NUMBER, 0, Red); if (ticket < 0) { Print("Error opening sell order: ", GetLastError()); } } } //+------------------------------------------------------------------+ //| Function to check the last closed trade | //+------------------------------------------------------------------+ void CheckLastTrade() { // Check if the last trade was a loss if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) { if (OrderProfit() < 0) { // Increase lot size according to the Martingale strategy with multiplier lotSize *= lotMultiplier; if (lotSize > maxLotSize) { lotSize = maxLotSize; } } else { // Reset to initial lot size after a win lotSize = initialLotSize; } } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
valerii.badaev Опубликовано 26 сентября, 2024 Поделиться Доработка советников: общая тема Опубликовано 26 сентября, 2024 чат GPT в помощь.Он тебе и код напишет и разъяснит все Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 11 октября, 2024 Поделиться Доработка советников: общая тема Опубликовано 11 октября, 2024 HideTestIndicators(true); double wpr= iWPR(Symbol(),0,4,0); double ao = iAO(Symbol(),0,0); HideTestIndicators(false); double level=NormalizeDouble(data[pos][1],Digits); ObjectDelete("level"); MakeLine(level); if(data[pos][1]>Open[0]) Comment("BUY - ", data[pos][1]); if(data[pos][1]<Open[0]) Comment("SELL - ", data[pos][1]); if(MarketInfo(Symbol(),MODE_SPREAD)>150) return; int TB=0,TS=0; for(i=0; i<OrdersTotal(); i++) { xx=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicID) { continue; } if(OrderType()==0) { TB++; } if(OrderType()==1) { TS++; } } Здравствуйте уважаемые программисты, могли бы вы мне помочь изменить код из формата mq4 в формат mq5. вот сам советник CITY-ScalperX2 EA.mq4 15 часов назад, Lexa000 сказал: HideTestIndicators(true); double wpr= iWPR(Symbol(),0,4,0); double ao = iAO(Symbol(),0,0); HideTestIndicators(false); double level=NormalizeDouble(data[pos][1],Digits); ObjectDelete("level"); MakeLine(level); if(data[pos][1]>Open[0]) Comment("BUY - ", data[pos][1]); if(data[pos][1]<Open[0]) Comment("SELL - ", data[pos][1]); if(MarketInfo(Symbol(),MODE_SPREAD)>150) return; int TB=0,TS=0; for(i=0; i<OrdersTotal(); i++) { xx=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicID) { continue; } if(OrderType()==0) { TB++; } if(OrderType()==1) { TS++; } } Здравствуйте уважаемые программисты, могли бы вы мне помочь изменить код из формата mq4 в формат mq5. вот сам советник CITY-ScalperX2 EA.mq4 61.51 \u043a\u0411 · 0 загрузок //******************************** TesterHideIndicators(true); double wpr= iWPR(Symbol(),0,14,0); double ao = iAO(Symbol(),0,0); /* double iwpr_72 = iWPR(NULL, PERIOD_M1, 14, 0); double iwpr_80 = iWPR(NULL, PERIOD_M1, 14, 1); double iwpr_88 = iWPR(NULL, PERIOD_M5, 14, 0); double iwpr_96 = iWPR(NULL, PERIOD_M5, 14, 1); double iwpr_104 = iWPR(NULL, PERIOD_M15, 14, 0); double iwpr_112 = iWPR(NULL, PERIOD_M15, 14, 1); double iwpr_120 = iWPR(NULL, PERIOD_M30, 14, 0); double iwpr_128 = iWPR(NULL, PERIOD_M30, 14, 1); double iwpr_152 = iWPR(NULL, PERIOD_H1, 14, 0); double iwpr_160 = iWPR(NULL, PERIOD_H1, 14, 1); double iwpr_168 = iWPR(NULL, PERIOD_H4, 14, 0); double iwpr_176 = iWPR(NULL, PERIOD_H4, 14, 1); double iwpr_136 = iWPR(NULL, PERIOD_D1, 14, 0); double iwpr_144 = iWPR(NULL, PERIOD_D1, 14, 1); double ibands_16 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, 0); double ibands_24 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, 0); double ibands_0 = iBands(NULL, PERIOD_M15, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, 0); double ibands_8 = iBands(NULL, PERIOD_M15, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, 0); double istochastic_184 = iStochastic(NULL, PERIOD_M1, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_192 = iStochastic(NULL, PERIOD_M1, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1); double istochastic_200 = iStochastic(NULL, PERIOD_M5, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_208 = iStochastic(NULL, PERIOD_M5, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1); double istochastic_216 = iStochastic(NULL, PERIOD_M15, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_224 = iStochastic(NULL, PERIOD_M15, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1); double istochastic_232 = iStochastic(NULL, PERIOD_M30, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_240 = iStochastic(NULL, PERIOD_M30, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1); double istochastic_248 = iStochastic(NULL, PERIOD_H1, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_256 = iStochastic(NULL, PERIOD_H1, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1); double istochastic_264 = iStochastic(NULL, PERIOD_H4, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_272 = iStochastic(NULL, PERIOD_H4, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1); double istochastic_280 = iStochastic(NULL, PERIOD_D1, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); double istochastic_288 = iStochastic(NULL, PERIOD_D1, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1);*/ TesterHideIndicators(false); double level=NormalizeDouble(data[pos][1],_Digits); ObjectDelete(0,"level"); MakeLine(level); if(data[pos][1]>iOpen(_Symbol,PERIOD_CURRENT,0)) Comment("BUY - ", data[pos][1]); if(data[pos][1]<iOpen(_Symbol,PERIOD_CURRENT,0)) Comment("SELL - ", data[pos][1]); if(SymbolInfoInteger(_Symbol,SYMBOL_SPREAD)>150) return; int TB=0,TS=0; for(int i=0; i<OrdersTotal(); i++) { xxx=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicID) { continue; } if(OrderType()==0) { TB++; } if(OrderType()==1) { TS++; } } В mql5 вот такая ошибка выходит 'iWPR' - wrong parameters count built-in: int iWPR(const string,ENUM_TIMEFRAMES,int) 'iAO' - wrong parameters count built-in: int iAO(const string,ENUM_TIMEFRAMES) Ссылка на сообщение Поделиться на другие сайты More sharing options...
стажер Опубликовано 25 октября, 2024 Поделиться Доработка советников: общая тема Опубликовано 25 октября, 2024 Здравствуйте! Я скачал(купил) этот советник из интернета и не знаю, какие настройки ему нужны. Не могли бы опытные трейдеры или программисты модифицировать его и проверить на работоспособность? Советник работает только на золоте. Спасибо! GOLD.ex5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sportoman Опубликовано 29 октября, 2024 Поделиться Доработка советников: общая тема Опубликовано 29 октября, 2024 Доброго дня. Может и наглый вопрос, но помогите понять, что вычисляет следующий код int index = HistoryTotal() - 1; if(index >= 0) { do { if(OrderSelect(index, 0, 1) && (OrderProfit() != 0)) { if((OrderClosePrice() != OrderOpenPrice()) && OrderSymbol() == _Symbol) { res = (-OrderCommission() / MathAbs((OrderProfit() / (OrderClosePrice() - OrderOpenPrice())))); break; } } index = index - 1; } while(index >= 0); } Изменено 29 октября, 2024 пользователем sportoman Ссылка на сообщение Поделиться на другие сайты More sharing options...
rahu Опубликовано 2 ноября, 2024 Поделиться Доработка советников: общая тема Опубликовано 2 ноября, 2024 В 29.10.2024 в 14:58, sportoman сказал: Доброго дня. Может и наглый вопрос, но помогите понять, что вычисляет следующий код int index = HistoryTotal() - 1; /// проход по истории if(index >= 0) { do { if(OrderSelect(index, 0, 1) && (OrderProfit() != 0)) /// перебор ордеров если не равні нулю { if((OrderClosePrice() != OrderOpenPrice()) && OrderSymbol() == _Symbol) /// фильтр по символу { res = (-OrderCommission() / MathAbs((OrderProfit() / (OrderClosePrice() - OrderOpenPrice())))); /// отнимание комисси от профита по каждой сделке break; } } index = index - 1; } while(index >= 0); } вісчитівает общий баланс по символу по истории с вичетам комиссии В 26.09.2024 в 20:53, booker2121 сказал: Привет Я работаю над простым кодом мартингейла, но по какой-то причине размер умноженного лота не учитывается. Сделки всегда одного и того же размера. //--- Global Variables (Editable inputs) input double initialLotSize = 0.01; // Initial lot size (editable) input double maxLotSize = 3.2; // Max lot size (editable) input double takeProfitPips = 10; // Take profit in pips (editable) input double stopLossPips = 10; // Stop loss in pips (editable) input int emaPeriod = 20; // EMA period (editable) input int MAGIC_NUMBER = 123456; // Unique identifier for this EA's trades (editable) input double lotMultiplier = 2.0; // Multiplier for lot size after a loss (editable) //--- Other Variables double lotSize; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // Get the current price and the EMA double price = iClose(Symbol(), 0, 0); double ema = iMA(Symbol(), 0, emaPeriod, 0, MODE_EMA, PRICE_CLOSE, 0); // Check if there are no open positions if (OrdersTotal() == 0) { // Buy Condition: Price is above EMA if (price > ema) { OpenBuyOrder(); } // Sell Condition: Price is below EMA else if (price < ema) { OpenSellOrder(); } } } //+------------------------------------------------------------------+ //| Function to open a buy order | //+------------------------------------------------------------------+ void OpenBuyOrder() { double sl = NormalizeDouble(Bid - stopLossPips * Point, Digits); double tp = NormalizeDouble(Bid + takeProfitPips * Point, Digits); if (lotSize <= maxLotSize) { int ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, sl, tp, "Buy Order", MAGIC_NUMBER, 0, Green); if (ticket < 0) { Print("Error opening buy order: ", GetLastError()); } } } //+------------------------------------------------------------------+ //| Function to open a sell order | //+------------------------------------------------------------------+ void OpenSellOrder() { double sl = NormalizeDouble(Ask + stopLossPips * Point, Digits); double tp = NormalizeDouble(Ask - takeProfitPips * Point, Digits); if (lotSize <= maxLotSize) { int ticket = OrderSend(Symbol(), OP_SELL, lotSize, Bid, 3, sl, tp, "Sell Order", MAGIC_NUMBER, 0, Red); if (ticket < 0) { Print("Error opening sell order: ", GetLastError()); } } } //+------------------------------------------------------------------+ //| Function to check the last closed trade | //+------------------------------------------------------------------+ void CheckLastTrade() { // Check if the last trade was a loss if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) { if (OrderProfit() < 0) { // Increase lot size according to the Martingale strategy with multiplier lotSize *= lotMultiplier; if (lotSize > maxLotSize) { lotSize = maxLotSize; } } else { // Reset to initial lot size after a win lotSize = initialLotSize; } } } хотел написать но много переписівать , поєтому раскажу по єтапам а ті там сам. 1 мартингейл учет закрітой сделки в минус должен стоять с фильтрами по магику и валюте. 2 коефициент умножения лота для увеличения . с ограничением на максимум 3 могу сказать что то что у тебя для входа эти индикаторы работать не будут, стратегия убыточна. просто сальет или не будет преносить достатучную приьыль в соотношению к риску Изменено 3 ноября, 2024 пользователем rahu Ссылка на сообщение Поделиться на другие сайты More sharing options...
Capital Plus Опубликовано 1 декабря, 2024 Поделиться Доработка советников: общая тема Опубликовано 1 декабря, 2024 В 26.09.2024 в 21:53, booker2121 сказал: Привет Я работаю над простым кодом мартингейла, но по какой-то причине размер умноженного лота не учитывается. Сделки всегда одного и того же размера. //--- Global Variables (Editable inputs) input double initialLotSize = 0.01; // Initial lot size (editable) input double maxLotSize = 3.2; // Max lot size (editable) input double takeProfitPips = 10; // Take profit in pips (editable) input double stopLossPips = 10; // Stop loss in pips (editable) input int emaPeriod = 20; // EMA period (editable) input int MAGIC_NUMBER = 123456; // Unique identifier for this EA's trades (editable) input double lotMultiplier = 2.0; // Multiplier for lot size after a loss (editable) //--- Other Variables double lotSize; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { lotSize = initialLotSize; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // Get the current price and the EMA double price = iClose(Symbol(), 0, 0); double ema = iMA(Symbol(), 0, emaPeriod, 0, MODE_EMA, PRICE_CLOSE, 0); // Check if there are no open positions if (OrdersTotal() == 0) { // Buy Condition: Price is above EMA if (price > ema) { OpenBuyOrder(); } // Sell Condition: Price is below EMA else if (price < ema) { OpenSellOrder(); } } } //+------------------------------------------------------------------+ //| Function to open a buy order | //+------------------------------------------------------------------+ void OpenBuyOrder() { double sl = NormalizeDouble(Bid - stopLossPips * Point, Digits); double tp = NormalizeDouble(Bid + takeProfitPips * Point, Digits); if (lotSize <= maxLotSize) { int ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, sl, tp, "Buy Order", MAGIC_NUMBER, 0, Green); if (ticket < 0) { Print("Error opening buy order: ", GetLastError()); } } } //+------------------------------------------------------------------+ //| Function to open a sell order | //+------------------------------------------------------------------+ void OpenSellOrder() { double sl = NormalizeDouble(Ask + stopLossPips * Point, Digits); double tp = NormalizeDouble(Ask - takeProfitPips * Point, Digits); if (lotSize <= maxLotSize) { int ticket = OrderSend(Symbol(), OP_SELL, lotSize, Bid, 3, sl, tp, "Sell Order", MAGIC_NUMBER, 0, Red); if (ticket < 0) { Print("Error opening sell order: ", GetLastError()); } } } //+------------------------------------------------------------------+ //| Function to check the last closed trade | //+------------------------------------------------------------------+ void CheckLastTrade() { // Check if the last trade was a loss if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) { if (OrderProfit() < 0) { // Increase lot size according to the Martingale strategy with multiplier lotSize *= lotMultiplier; if (lotSize > maxLotSize) { lotSize = maxLotSize; } } else { // Reset to initial lot size after a win lotSize = initialLotSize; } } } Ошибка была в том, что у Вас в коде не было вызова функции проверки лота CheckLastTrade() Он и не рассчитывался, а ставился стандартный. Вызов нужно было установить перед функцией открытия первой позиции в серии if (OrdersTotal() == 0) { CheckLastTrade(); ... ... Booker EA.mq4 Изменено 1 декабря, 2024 пользователем Capital Plus Ссылка на сообщение Поделиться на другие сайты More sharing options...
estevambr Опубликовано 11 декабря, 2024 Поделиться Доработка советников: общая тема Опубликовано 11 декабря, 2024 Здравствуйте, это советник MY EXPERT.ex4 тот же Gold Coin fix.ex4 не открывается продажа только покупка может кто нибудь это исправить спасибо. Пожалуйста, найдите прикрепленные файлы. MY EXPERT.ex4 MY EXPERT.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Doni Опубликовано 12 декабря, 2024 Поделиться Доработка советников: общая тема Опубликовано 12 декабря, 2024 Доброго всем уважаемые, можно ли добавить к простому скрипту функцию открытия одновременно нескольких ордеров,если возможно добавить ступенчатый трейлинг,спасибо Crazy_Max.ex4 Crazy_Max.mq4 Изменено 12 декабря, 2024 пользователем Doni Ссылка на сообщение Поделиться на другие сайты More sharing options...
Сергей_64 Опубликовано 27 декабря, 2024 Поделиться Доработка советников: общая тема Опубликовано 27 декабря, 2024 Грааль вот такой кто нибудь создавал? У меня вышло переделать, но нужна доработка, просадки даёт моя переделка.... Ссылка на сообщение Поделиться на другие сайты More sharing options...
K218ac5 Опубликовано 28 декабря, 2024 Поделиться Доработка советников: общая тема Опубликовано 28 декабря, 2024 Добрый день! Кто может помочь? Есть советник. нужно сделать ограничение по времени торговли. EA-FX Sniper 24 - Autopilot.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано Пятница в 18:55 Поделиться Доработка советников: общая тема Опубликовано Пятница в 18:55 В 28.12.2024 в 10:16, K218ac5 сказал: Добрый день! Кто может помочь? Есть советник. нужно сделать ограничение по времени торговли. Привет, надо файл .mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
K218ac5 Опубликовано 4 часа назад Поделиться Доработка советников: общая тема Опубликовано 4 часа назад есть только ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти