myfirstea.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «myfirstea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
MyFirstEA.mq4 — торговый советник для MetaTrader 4, написанный на языке MQL4. Советник анализирует пересечение двух экспоненциальных скользящих сред (EMA) с разными периодами и формирует торговые сигналы на их пересечении. Основная торговая логика реализована в обработчике OnTick, который отслеживает появление новых свечей и рыночные события.
При обнаружении новой свечи советник определяет сигнал на покупку или продажу по пересечению быстрой и медленной EMA. Открытие позиций и управление существующими ордерами происходит в рамках одного тика: советник проверяет текущие открытые ордера с заданным магическим номером, рассчитывает расстояние до текущей цены и при достижении определённого порога открывает дополнительные ордера с увеличенным объёмом.
Советник также содержит механизм обновления уровней тейк-профита для открытых позиций, устанавливая их на фиксированном расстоянии в пунктах от наивысшей цены покупки и наименьшей цены продажи. Входные параметры позволяют настраивать периоды скользящих средних, начальный объём позиции и множитель для расчёта объёма дополнительных ордеров.
Настройки программы
| Настройка | Описание |
|---|---|
| IN_PeriodMAFast | Период быстрой экспоненциальной скользящей средней (EMA), используемой для определения торговых сигналов на пересечении с медленной EMA. Должен быть меньше значения IN_PeriodMASlow, иначе инициализация советника не произойдёт. |
| IN_PeriodMASlow | Период медленной экспоненциальной скользящей средней (EMA), используемой для определения торговых сигналов на пересечении с быстрой EMA. |
| IN_Vol | Начальный объём позиции (лот) для расчёта размера новых ордеров. Реальный объём каждого последующего ордера вычисляется как начальный объём, умноженный на множитель IN_LotX в степени от номера текущей позиции. |
| IN_LotX | Множитель, используемый при расчёте объёма дополнительных ордеров. Значение умножается в степени от количества открытых позиций определённого типа, обеспечивая экспоненциальное увеличение лота при повторных открытиях. |
Поиск по коду файла
#property version "1.00"
#property strict
input int IN_PeriodMAFast = 5; //MA Fast
input int IN_PeriodMASlow = 20; //MA Slow
input double IN_Vol = 0.01; //Lot Size (awal)
input double IN_LotX = 1.5; //Multiplier
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
int getSignalMACross(){
int signal = -1;
double maFast2 = iMA(NULL, 0, IN_PeriodMAFast, 0, MODE_EMA, PRICE_CLOSE, 2 );
double maFast1 = iMA(NULL, 0, IN_PeriodMAFast, 0, MODE_EMA, PRICE_CLOSE, 1 );
double maSlow2 = iMA(NULL, 0, IN_PeriodMASlow, 0, MODE_EMA, PRICE_CLOSE, 2 );
double maSlow1 = iMA(NULL, 0, IN_PeriodMASlow, 0, MODE_EMA, PRICE_CLOSE, 1 );
if (maSlow2 < maFast2 && maSlow1 >= maFast1){
signal = OP_BUY;
}else if (maSlow2 > maFast2 && maSlow1 <= maFast1){
signal = OP_SELL;
}
return (signal);
}
void OpenOrder(int orderType){
if (orderType == OP_BUY || orderType == OP_SELL){
}
}
bool IsNewCandle(){
bool isNewCS = false;
static datetime prevTime = TimeCurrent();
string pair = Symbol();
if (prevTime < iTime(pair, 0, 0)){
isNewCS = true;
prevTime = iTime(pair, 0, 0);
}
return isNewCS;
}
double getVolume(int tOrderType){
double vol = 0.0;
vol = IN_Vol * MathPow(IN_LotX, tOrderType);
vol = NormalizeDouble(vol, 2);
return (vol);
}
void UpdateTPSL(){
int MN = 123;
double hargaBTB = 99999.0, hargaSTA = 0.0;
int tOrderBuy = 0, tOrderSell = 0;
int tOrders = OrdersTotal();
for (int i=tOrders-1; i>=0; i--){
bool hsl = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == MN && OrderSymbol() == Symbol()){
if (OrderType() == OP_BUY){
tOrderBuy++;
if (hargaBTB > OrderOpenPrice()){
hargaBTB = OrderOpenPrice();
}
}
if (OrderType() == OP_SELL){
tOrderSell++;
if (hargaSTA < OrderOpenPrice()){
hargaSTA = OrderOpenPrice();
}
}
}
}
double myPoint = 0.0;
myPoint = MarketInfo(Symbol(), MODE_POINT);
double TPBuy = 0.0;
double TPSell = Показано первые 50% кода (символов: 3175)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.