3 Targets
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «auto_targets.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Продукт представляет собой индикатор для платформы MetaTrader 4, который анализирует структуру ценовых фракталов с помощью встроенного индикатора ZigZag. На основе трёх последовательных точек фрактала рассчитываются несколько ценовых уровней с использованием пропорциональных коэффициентов, после чего они отображаются на графике в виде горизонтальных линий и текстовых подписей.
Индикатор рисует уровни Target1, Target2, Target3, Fantasy, CrazyDream, Start и Stop, каждый из которых имеет собственное цветовое оформление и стиль отображения. Также на графике выводится текстовый комментарий с текущими значениями аналитических данных.
Продукт предоставляет два буфера индикаторных данных для внешнего использования: значение ZigZag и рассчитанную начальную цену. Параметры обработки настраиваются пользователем, включая количество баров и параметры ZigZag.
Настройки программы
| Настройка | Описание |
|---|---|
| BarsCount | Количество баров — Количество баров для обработки. Если значение меньше 1, используется текущее количество баров на графике. |
| depth | Глубина — Параметр глубины индикатора ZigZag, определяющий минимальное расстояние между фрактальными точками. |
| deviation | Отклонение — Параметр отклонения индикатора ZigZag, влияющий на чувствительность построения фракталов. |
| backstep | Обратный шаг — Параметр обратного шага индикатора ZigZag, используемый для построения фрактальных точек. |
Поиск по коду файла
#include <stdlib.mqh>
#property indicator_chart_window
#property indicator_color1 Blue
#property indicator_buffers 2
#property indicator_color2 Red
extern double BarsCount = 200;
extern double depth = 15;
extern double deviation = 5;
extern double backstep = 3;
int LastTradeTime;
double ExtHistoBuffer[];
double ExtHistoBuffer2[];
bool MOrderDelete( int ticket )
{
LastTradeTime = CurTime();
return ( OrderDelete( ticket ) );
}
bool MOrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
{
LastTradeTime = CurTime();
price = MathRound(price*10000)/10000;
return ( OrderClose( ticket, lots, price, slippage, Color) );
}
bool MOrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
{
LastTradeTime = CurTime();
price = MathRound(price*10000)/10000;
stoploss = MathRound(stoploss*10000)/10000;
takeprofit = MathRound(takeprofit*10000)/10000;
return ( OrderModify( ticket, price, stoploss, takeprofit, expiration, arrow_color) );
}
int MOrderSend( 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)
{
LastTradeTime = CurTime();
price = MathRound(price*10000)/10000;
stoploss = MathRound(stoploss*10000)/10000;
takeprofit = MathRound(takeprofit*10000)/10000;
return ( OrderSend( symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color ) );
}
int OrderValueTicket(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderTicket());
}
int OrderValueType(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderType());
}
double OrderValueLots(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderLots());
}
double OrderValueOpenPrice(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderOpenPrice());
}
double OrderValueStopLoss(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderStopLoss());
}
double OrderValueTakeProfit(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderTakeProfit());
}
double OrderValueClosePrice(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderClosePrice());
}
double OrderValueComission(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderCommission());
}
double OrderValueSwap(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderSwap());
}
double OrderValueProfit(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderProfit());
}
string OrderValueSymbol(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderSymbol());
}
string OrderValueComment(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderComment());
}
datetime OrderValueOpenTime(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderOpenTime());
}
datetime OrderValueCloseTime(int index)
{
OrderSelect(index, SELECT_BY_POS);
return(OrderCloseTime());
}
void PrintTrade(int index)
{
if (OrderSelect(index, SELECT_BY_POS)==true)
OrderPrint();
}
bool SetTextObject(string name, string text, string font, int font_size, color text_color=CLR_NONE)
{
ObjectSetText(name, text, font_size, font, text_color);
}
void SetLoopCount(int loops)
{
}
void SetIndexValue(int shift, double value)
{
ExtHistoBuffer[shift] = value;
}
void SetIndexValue2(int shift, double value)
{
ExtHistoBuffer2[shift] = value;
}
double GetIndexValue(int shift)
{
return(ExtHistoBuffer[shift]);
}
double GetIndexValue2(int shift)
{
return(ExtHistoBuffer2[shift]);
}
bool SetObjectText(string name, string text, string font, int size, color Acolor)
{
return(ObjectSetText(name, text, size, font, Acolor));
}
bool MoveObject(string name, int type, datetime Atime, double Aprice, datetime Atime2 = 0, double Aprice2 = 0, color Acolor = CLR_NONE, int Aweight = 0, int Astyle = 0)
{
if (ObjectFind(name) != -1)
{
return(ObjectMove(name, type, Atime, Aprice));
}
else
{
return(ObjectCreate(name, type, 0, Atime, Aprice, Atime2, Aprice2, 0, 0));
}
}
void SetArrow(datetime ArrowTime, double Price, double ArrowCode, color ArrowColor)
{
int err;
string ArrowName = DoubleToStr(ArrowTime,0);
if (ObjectFind(ArrowName) != -1) ObjectDelete(ArrowName);
if(!ObjectCreate(ArrowName, OBJ_ARROW, 0, ArrowTime, PriПоказано первые 50% кода (символов: 7698)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.