9 часов назад, sasha_shy сказал:вот файл, спасибо!

Не загружает
Попробуйте отправить в телеграмм (@andrijmix)
От Garfik, 4 августа, 2011 в Уголок Программиста
9 часов назад, sasha_shy сказал:вот файл, спасибо!

Не загружает
Попробуйте отправить в телеграмм (@andrijmix)
В 18.06.2024 в 18:28, ademen сказал:
может так получится ян.диск:
Изменено 19 июня, 2024 пользователем sasha_shy
9 минут назад, sasha_shy сказал:может так получится ян.диск: https://disk.yandex.ru/d/gVZ8obdQJvn-xw
Добрый день. Прошу помощи.
Планирую советника на основе индикатора JokerFilter.
Показывает направление тренда цветными гистограммами.
Где в коде финальное определение каким цветом красить столбец?
Привет Маркетмейкеры!![]()
Может кто помочь? У меня есть простой сеточник. К нему нужно пришить пару параметров.
1. закрывать все ордера по торгуемой паре в профит или убыток в процентах от депозита.
2. открывать ордера с изменением лотности. К примеру что бы с ростом депозита увеличивался лот открываемого ордера в определенном проценте. При уменьшении депо соответственно уменьшалось лотность открываемых файлов.
Если это не трудно конечно...
Forex Graphic Interactive Display.ex4 Forex Graphic Interactive Display.mq4
Подскажите, где найти прогера проверенного, чтобы отвязать советник от счета?
В 03.07.2024 в 09:17, Mordvin сказал:Добрый день. Прошу помощи.
Планирую советника на основе индикатора JokerFilter.
Показывает направление тренда цветными гистограммами.
Где в коде финальное определение каким цветом красить столбец?
Этот индикатор на языке 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" используется для определения моментов входа и выхода из рынка на основе анализа сглаженных значений ценовых данных. Он выдает сигналы на покупку и продажу, отображаемые в виде гистограммы, и поддерживает различные виды оповещений для удобства пользователя.
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);
}
Может кто поправить так, чтобы закрывалась в профит регулируемый, а не просто. Заранее спасибо
Добрый вечер. Помагите изменить код советника на основе индикатора Ultrafilter. Чтобы после смены цвета стрелки закрывал сделку и открывал противоположную, и так далее. То есть красная стрелка появляется - продаем, как появилась синяя стрелка закрываем продажи и сразу идем в покупки и так по кругу. Могу финансово отблагодарить)
20 часов назад, denfotik13 сказал:Добрый вечер. Помагите изменить код советника на основе индикатора Ultrafilter. Чтобы после смены цвета стрелки закрывал сделку и открывал противоположную, и так далее. То есть красная стрелка появляется - продаем, как появилась синяя стрелка закрываем продажи и сразу идем в покупки и так по кругу. Могу финансово отблагодарить)
Либо возможен двойной вариант тейка - количество в пунктах или смена стрелки, что первое выполнится, при количестве пунктов ноль остается условие только по перевороту на стрелке.
Привет
Я работаю над простым кодом мартингейла, но по какой-то причине размер умноженного лота не учитывается. Сделки всегда одного и того же размера.
//--- 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;
}
}
}
чат GPT в помощь.Он тебе и код напишет и разъяснит все
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. вот сам советник
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. вот сам советник
//******************************** 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)
Доброго дня. Может и наглый вопрос, но помогите понять, что вычисляет следующий код
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
В 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
В 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(); ... ...
Изменено 1 декабря, 2024 пользователем Capital Plus
Здравствуйте, это советник MY EXPERT.ex4 тот же Gold Coin fix.ex4 не открывается продажа только покупка может кто нибудь это исправить спасибо. Пожалуйста, найдите прикрепленные файлы.
Доброго всем уважаемые, можно ли добавить к простому скрипту функцию открытия одновременно нескольких ордеров,если возможно добавить ступенчатый трейлинг,спасибо
Изменено 12 декабря, 2024 пользователем Doni
Добрый день! Кто может помочь? Есть советник. нужно сделать ограничение по времени торговли.
В 28.12.2024 в 10:16, K218ac5 сказал:Добрый день! Кто может помочь? Есть советник. нужно сделать ограничение по времени торговли.
Привет, надо файл .mq4
есть только ex4
Есть старенький мультиволютный советник. В нем заложен довольно интересный принцип работы: локирование и выход из просадки с профитом. Но не устраивает его настройки в старых пунктах, неудобно на пятизнаке и золоте. Кто может это поправить? Хотелось бы иметь настройки отступов в понятных пунктах.
Cash_Hammer_Multicurrency~.mq4 chmd.dll Slope_Direction_Line~.mq4
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем