← К каталогу
Исходный код · ID 3967

daily 95 pips ibfx version.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Этот советник для платформы MetaTrader 4 (язык MQL4) предназначен для автоматической торговли на рынке Forex. Он определяет уровни предыдущего дня на основе данных H1-таймфрейма и размещает отложенные и рыночные ордера с заданными параметрами стоп-лосса, тейк-профита и проскальзывания. Советник поддерживает управление размером позиции через фиксированный лот или расчёт по свободной марже, а также функции обновления стоп-лосса в безубыток и трейлинг-стопа для последних ордеров.

Настройки программы

НастройкаОписание
if > 0.0 fixed lots used (FixedLots) Фиксированный лот — Если значение больше 0.0, используется фиксированный размер лота; иначе размер рассчитывается автоматически.
per cent of free margin of a single offer (Risk) Риск — Процент свободной маржи, используемый для расчёта размера позиции при динамическом лоте.
value to add/substract to previous day high/low (Margin) Отступ от экстремумов — Значение в пунктах, добавляемое или вычитаемое из уровня предыдущего дня высока или низа для формирования цен входа.
StopLoss Стоп-лосс — Расстояние в пунктах от цены входа до уровня стоп-лосса.
if 0, no b/e update is made (UpdateToBE) Безубыток — Расстояние в пунктах в прибыль, при достижении которого стоп-лосс перемещается в точку входа; если 0, обновление не выполняется.
TakeProfit1 Тейк-профит 1 — Первый уровень фиксации прибыли в пунктах от цены входа.
TakeProfit2 Тейк-профит 2 — Второй уровень фиксации прибыли в пунктах от цены входа.
TakeProfit3 Тейк-профит 3 — Третий уровень фиксации прибыли в пунктах от цены входа.
UseTrailingStopOnLastOrder Трейлинг-стоп на последнем ордере — Включает или отключает использование трейлинг-стопа для последних ордеров.
TrailingStop Трейлинг-стоп — Расстояние в пунктах от текущей цены для трейлинг-стопа.
5pm EST in your time zone (DayStartHour) Час начала торгового дня — Час локального времени, в который советник определяет уровни предыдущего дня и открывает позиции.
LookBackHours Часов анализа — Количество часов для определения максимума и минимума предыдущего торгового дня.
OrderExpirationHours Срок действия ордера — Количество часов, через которое размещённые ордера аннулируются.
CloseOrdersNextDay Закрытие ордеров на следующий день — Если включено, открытые позиции закрываются перед размещением новых ордеров в начале следующего дня.
Slippage Проскальзывание — Допустимое отклонение цены исполнения от запрошенной в пунктах.
EAMagicNo Магический номер — Уникальный идентификатор ордеров, размещённых данным советником, для их фильтрации и управления.
Получить полный код

Поиск по коду файла

/*
 * Daily95pips strategy - IBFX Changes Made By PipHunter196
 * 
 * Created by Pr1mer
 */

#include <stdlib.mqh>
#include <stderror.mqh>

extern double FixedLots = 0.0;   // if > 0.0 fixed lots used
extern double Risk = 0.01;       // per cent of free margin of a single offer

extern int Margin = 5;	// value to add/substract to previous day high/low
extern int StopLoss = 30;
extern int UpdateToBE = 15;	// if 0, no b/e update is made
extern int TakeProfit1 = 15;
extern int TakeProfit2 = 30;
extern int TakeProfit3 = 50;
extern bool UseTrailingStopOnLastOrder = false;
extern int TrailingStop = 20;

extern int DayStartHour = 21;	// 5pm EST in your time zone
extern int LookBackHours = 17;
extern int OrderExpirationHours = 18;
extern bool CloseOrdersNextDay = true;

extern int Slippage = 3;
extern int EAMagicNo = 156909;

bool extremsSet = false;
bool extremsSet2 = false;
double dayHigh = 0.0;
double dayLow = 0.0;
datetime lastOrderTime = 0;

void init()
{
      // код доступен только после оплаты
   }

int HandleLastError(bool printInfo = true)
{
	int error = GetLastError();

	if(error > 0 && printInfo)
		Print("Error #", error, ": ", ErrorDescription(error));

	return (error);
}

int OrderSendSafe(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
{
	int ticket;
	bool cont = true;

	int sleepMin = 2;
	int sleepMax = 10;
	MathSrand(TimeLocal());

	while(cont)
	{
		ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);

		if(ticket < 0)
   		{
			if(HandleLastError() == ERR_TRADE_CONTEXT_BUSY)
			{
				Print("Retrying...");
				int randomSeconds = MathRand() % (sleepMax - sleepMin) + sleepMin;
				Sleep(randomSeconds * 1000);
			}
			else
				cont = false;
		}
		else
			cont = false;
	}

	return (ticket);
}

void OrderModifySafe(int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
{
	bool cont = true;

	int sleepMin = 2;
	int sleepMax = 10;
	MathSrand(TimeLocal());

	while(cont)
	{	
		bool result = OrderModify(ticket, price, stoploss, takeprofit, expiration, arrow_color);

		if(!result)
		{
			if(HandleLastError() == ERR_TRADE_CONTEXT_BUSY)
			{
				Print("Retrying...");
				int randomSeconds = MathRand() % (sleepMax - sleepMin) + sleepMin;
				Sleep(randomSeconds * 1000);
			}
			else
				cont = false;
		}
		else
			cont = false;
	}
}

double CalculateLotSize()
{
	if(FixedLots > 0.0)
		return (FixedLots);

	double pipValue = MarketInfo(Symbol(), MODE_TICKVALUE);
	double lots = AccountFreeMargin() * Risk / (StopLoss * pipValue);

	double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
	int digits = 0;
	if(lotStep <= 0.01)
		digits = 2;
	else if(lotStep <= 0.1)
		digits = 1;
	lots = NormalizeDouble(lots, digits);

  	double minLots = MarketInfo(Symbol(), MODE_MINLOT);
  	if(lots < minLots)
  		lots = minLots;

  	double maxLots = MarketInfo(Symbol(), MODE_MAXLOT);
  	if(lots > maxLots)
  		lots = maxLots;

  	return (lots);
}

void CloseOpenPositions()
{
	for(int i = OrdersTotal() - 1; i >= 0; i--)
	{
  		if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  		{
  			if(!IsThisChartOrder())
  				continue;

 			if(OrderType() == OP_BUY || OrderType() == OP_SELL)
 			{
 				double price = Ask;
				if(OrderType() == OP_BUY)
					price = Bid;

				OrderClose(OrderTicket(), OrderLots(), price, Slippage);
 			}
 		}
  	}
}

void SetPositions()
{
	if(CloseOrdersNextDay)
		CloseOpenPositions();

	double lots = CalculateLotSize();
	lastOrderTime = TimeCurrent();

	double price = Ask;
	int operation = OP_BUY;
	if(Ask < dayHigh)
	{
  		operation = OP_BUYSTOP;
  		price = dayHigh + Margin * Point;
	}

	double tp3 = 0.0;
	if(!UseTrailingStopOnLastOrder)
		tp3 = price + TakeProfit3 * Point;

	OrderSendSafe(Symbol(), operation, lots, price, Slippage, price - StopLoss * Point, price + TakeProfit1 * Point, NULL, EAMagicNo, TimeCurrent() + D'1970.01.01 1' * OrderExpirationHours, Green);
	OrderSendSafe(Symbol(), operation, lots, price, Slippage, price - StopLoss * Point, price + TakeProfit2 * Point, NULL, EAMagicNo, TimeCurr

Показано первые 50% кода (символов: 6686)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
668,60₽ ≈ $8.17