Gold Coin
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gold coin.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Gold Coin — торговый советник для MetaTrader 5, использующий комбинацию индикаторов ADX, стохастика и параболического SAR для анализа рыночных условий. Советник размещает отложенные ордера BuyStop и SellStop при формировании соответствующих сигналов, а также осуществляет управление открытыми позициями.
В работе используются два режима: тестовый и основной. В зависимости от режима применяются различные множители целевой прибыли и убытков, а также условия закрытия позиций. Трейлинг-стоп активируется при достижении определённого соотношения прибыли к балансу.
Советник отслеживает динамику спреда и при превышении допустимого уровня приостанавливает торговлю. Все позиции и ордера идентифицируются с помощью магического номера. Информация о состоянии работы отображается текстовым объектом на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| Search_trend_bar | Количество баров для поиска тренда |
| iADX_M5 | Период индикатора ADX для таймфрейма M5 |
| iADX_M15 | Период индикатора ADX для таймфрейма M15 |
| iADX_H1 | Период индикатора ADX для таймфрейма H1 |
| Step | Шаг размещения отложенных ордеров от текущей цены в пунктах |
| Acceleration | Параметр ускорения для расчёта динамики изменения цены за заданный промежуток времени |
| InpTrailingStop | Расстояние трейлинг-стопа в пунктах для защиты открытых позиций |
| Mult_Profit | Множитель прибыли для определения целевого уровня закрытия позиций |
| Mult_Loss | Множитель убытка для определения уровня закрытия позиций |
| Distance | Дополнительное расстояние от текущей цены для размещения отложенных ордеров |
| Coin_Step_Trade | Пороговое соотношение прибыли к балансу в процентах для активации трейлинг-стопа |
| StartLots | Начальный размер лота для открытия позиций |
| TIME | Временной интервал в секундах между допустимыми операциями |
| Average_spread | Пороговое значение спреда для контроля торговых условий |
| Magic | Магический номер для идентификации ордеров и позиций советника |
| q | Параметр периода быстрой линии стохастика |
| sar | Начальное значение шага параболического SAR |
Поиск по коду файла
#property description "Email: @LifeInDreamsWorld"
#property version "1.00"
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\HistoryOrderInfo.mqh>
input int Search_trend_bar = 50;
input int iADX_M5 = 14;
input int iADX_M15 = 5;
input int iADX_H1 = 3;
input int Step = 20;
input int Acceleration = 7;
input int InpTrailingStop = 25; // Переименовали входной параметр
input int Mult_Profit = 100;
input int Mult_Loss = 3;
input int Distance = 1;
input int Coin_Step_Trade = 500;
input double StartLots = 0.02;
input int TIME = 300;
input int Average_spread = 20;
input int Magic = 7773888;
input int q=7, w=8, e=6, loss=15000;
input double sar=0.05, sar2=0.02;
string Comments = "Gold Coin M5";
bool isTestMode;
int Awers = 5;
int Colerd = 10;
int Bitters = 100;
bool Terki;
int Sigiig = 10;
int Dffer, fsfwef;
int TrailingStop; // Рабочая переменная для трейлинга
double PeriMix, Lultors, Lultorsw, Swwe, Bultes, Serrte, Swwewx;
double ddwert[];
double pupserix[];
int wqaww[];
int sweew, wdwqwq;
double max_equity = 0;
CTrade trade;
CPositionInfo m_position;
COrderInfo m_order;
CHistoryOrderInfo m_hist_order;
int handle_adx_m5, handle_adx_m15, handle_adx_h1;
int handle_stoch_m1_fast, handle_stoch_m1_slow, handle_sar_m15;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
void Rexter()
{
double Ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
Calculation_of_dynamic_information();
int totalTrades = 0;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(m_position.SelectByIndex(i) && m_position.Symbol() == _Symbol && m_position.Magic() == Magic && Terki)
{
totalTrades++;
double equity = AccountInfoDouble(ACCOUNT_EQUITY);
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
if(m_position.PositionType() == POSITION_TYPE_BUY)
{
if(equity > max_equity || equity / balance < (double)Coin_Step_Trade / 100)
{
if(Swwewx < -60 * _Point && Bid < m_position.PriceOpen() - (60 * _Point))
{
if(m_position.StopLoss() == 0.0 || Bid - m_position.StopLoss() > (TrailingStop * _Point * 150) + fsfwef * _Point)
{
double sl = NormalizeDouble(Bid - (TrailingStop * _Point), _Digits);
if(sl != m_position.StopLoss())
trade.PositionModify(m_position.Ticket(), sl, m_position.TakeProfit());
}
}
}
}
else if(m_position.PositionType() == POSITION_TYPE_SELL)
{
if(equity > max_equity || equity / balance < (double)Coin_Step_Trade / 100)
{
if(Swwewx > 60 * _Point && Ask > m_position.PriceOpen() + (60 * _Point))
{
if(m_position.StopLoss() == 0.0 || m_position.StopLoss() - Ask > (TrailingStop * _Point * 150) + fsfwef * _Point)
{
double sl = NormalizeDouble(Ask + (TrailingStop * _Point), _Digits);
if(sl != m_position.StopLoss())
trade.PositionModify(m_position.Ticket(), sl, m_position.TakeProfit());
}
}
}
}
}
}
if(Ask - Bid > 25 * _Point && totalTrades == 0)
{
Alert("Big spread now > 25. Points:", (Ask - Bid) / _Point);
return;
}
if(iHigh(_Symbol, PERIOD_M1, 0) == iLow(_Symbol, PERIOD_M1, 0) && Terki)
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(m_order.SelectByIndex(i) && m_order.Magic() == Magic)
{
if(m_order.OrderType() == ORDER_TYPE_SELL_STOP && Bid - 5 * _Point > m_order.PriceOpen()) trade.OrderDelete(m_order.Ticket());
if(m_order.OrderType() == ORDER_TYPE_BUY_STOP && Ask + 5 * _Point < m_order.PriceOpen()) trade.OrderDelete(m_order.Ticket());
}
}
}
double targetProfit = Qwaaw() * 400;
double current_profit = 0;
double min_price = DBL_MAX;
double max_price = -DBL_MAX;
int tips = 0;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(m_position.SelectByIndex(i) && m_position.Magic() == Magic && Terki)
{
current_profit += m_position.Profit();
if(m_position.PriceOpen() < min_price) min_price = m_position.PriceOpen();
if(m_position.PriceOpen() > max_price) max_price = m_position.PriceOpen();
tips = (m_position.PositionType() == POSITION_TYPE_BUY) ? 1 : -1;
}
}
if(current_profit > targetProfit || current_profit < -(targetProfit * 2)) CloseAllTerki();
double lr = Qwaaw();
if(totalTrades > 1 && Terki) lr = Qwaaw() * totalTrades;
if(totalTrades < Awers && Terki)
{
if(Swwewx > 60 * _Point && Ask + (Step + Distance) * _Point < min_price)
{
trade.BuyStop(lr, Ask + Step * _Point, _Symbol, 0, 0, ORDER_TIME_GTC, 0, Comments);
sweew = (int)TimeCurrent();
return;
}
if(Swwewx < -60 * _Point && Bid - (Step + Distance) * _Point > max_price)
{
trade.SellStop(lr, Bid - Step * _Point, _Symbol, 0, 0, ORDER_TIME_GTC, 0, Comments);
wdwqwq = (int)TimeCurrent();
return;
}
}
totalTrades = 0;
if(Terki) return;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(m_position.SelectByIndex(i) && m_position.Symbol() == _Symbol && m_position.Magic() == Magic && !Terki)
totalTrades++;
}
if(iHigh(_Symbol, PERIOD_M1, 0) == iLow(_Symbol, PERIOD_M1, 0) && !Terki)
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(m_order.SelectByIndex(i) && m_order.Magic() == Magic)
{
if(m_order.OrderType() == ORDER_TYPE_SELL_STOP && Bid - 5 * _Point > m_order.PriceOpen()) trade.OrderDelete(m_order.Ticket());
if(m_order.OrderType() == ORDER_TYPE_BUY_STOP && Ask + 5 * _Point < m_order.PriceOpen()) trade.OrderDelete(m_order.Ticket());
}
}
}
targetProfit = Qwaaw() * Mult_Profit;
current_profit = 0;
min_price = DBL_MAX;
max_price = -DBL_MAX;
tips = 0;
double totalLots = 0.0;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(m_position.SelectByIndex(i) && m_position.Magic() == Magic && !Terki)
{
current_profit += m_position.Profit();
if(m_position.PriceOpen() < min_price) min_price = m_position.PriceOpen();
if(m_position.PriceOpen() > max_price) max_price = m_position.PriceOpen();
tips = (m_position.PositionType() == POSITION_TYPE_BUY) ? 1 : -1;
totalLots += m_position.Volume();
}
}
datetime oldest_time = D'3000.01.01 00:00:00'; // Используем формат даты Показано первые 50% кода (символов: 12624)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.