RIS SolarSystem
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ris solarsystem.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, рассчитывающий технические значения на основе ценовых данных и отображающий результаты в виде графических объектов на графике. Генерирует стрелки сигналов на покупку и продажу, отрисовывает целевые уровни и линии на графике, а также выводит информационные метки с текущей ценой, прибылью в пунктах, стоп-лоссом и статусом сигнала. Поддерживает popup-уведомления и отправку email при появлении новых сигналов.
Настройки программы
| Настройка | Описание |
|---|---|
| string1 | Заголовок настроек робота — Текстовый заголовок, обозначающий группу параметров робота. |
| EnableRobo | Включить робота — Переключатель активации режима робота; при включении в комментарии графика отображается «Activated». |
| Qty | Количество — Целочисленное значение, используемое как размер позиции или количество лотов. |
| Alignment | Выравнивание — Целочисленный параметр, связанный с выравниванием отображения или расчёта. |
| EnablePartialExit | Включить частичный выход — Переключатель, активирующий механизм частичного закрытия позиции при достижении целевого уровня. |
| TargetType | Тип цели — Вариант настройки типа целевого уровня: фиксированный или движущийся. |
| TGT_value | Значение цели — Числовое значение, задающее величину целевого уровня. |
| toCheck | Параметр проверки — Целочисленный параметр, используемый для условной проверки в логике индикатора. |
| string3 | Заголовок настроек индикатора — Текстовый заголовок, обозначающий группу параметров индикатора. |
| period | Период — Целочисленный период, определяющий диапазон расчёта экстремумов. |
| smooth | Сглаживание — Целочисленный параметр, задающий степень сглаживания расчётных значений. |
| DoAlert | Уведомления Alert — Переключатель включения popup-уведомлений при появлении сигналов. |
| alertMail | Email-уведомления — Переключатель включения отправки email при появлении сигналов. |
| string4 | Заголовок общих настроек — Текстовый заголовок, обозначающий группу общих параметров отображения. |
| Arrow Gap (ArrowGap) | Отступ стрелок — Целочисленный параметр, задающий величину отступа стрелок сигналов от ценового уровня. |
| digits | Количество знаков — Целочисленное значение, определяющее точность отображения ценовых значений. |
| Bid_Ask_Colors | Цвета Bid/Ask — Переключатель, включающий смену цвета цены в зависимости от направления изменения Bid. |
| FontColorPrice | Цвет цены — Цвет текстового объекта отображения текущей рыночной цены. |
| Corner | Угол расположения — Целочисленный параметр, определяющий угол привязки графических объектов на графике. |
| FontSizePrice | Размер шрифта цены — Размер шрифта для отображения текущей рыночной цены. |
| FontSize | Размер шрифта — Размер шрифта для информационных меток индикатора. |
| FontName | Имя шрифта — Строковое значение, задающее используемый шрифт для отображения текстовых меток. |
Поиск по коду файла
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Red
#property indicator_color3 Snow
#property indicator_color4 Magenta
enum targettype
{
Fixed=0,
Moving=1
};
input string string1 = "=== Robo Settings ===";
input bool EnableRobo = false;
input int Qty = 1;
input int Alignment = 1;
input bool EnablePartialExit = true;
input targettype TargetType = Moving;
input double TGT_value = 10;
extern int toCheck = 0;
input string string3="=== Indicator Settings ===";
extern int period=35;
extern int smooth=10;
extern bool DoAlert=false;
extern bool alertMail=false;
input string string4="=== General Settings ===";
input int ArrowGap=2; //Arrow Gap
input int digits = 2;
input bool Bid_Ask_Colors = True;
extern color FontColorPrice = Yellow;
input int Corner = 1;
input int FontSizePrice = 26;
input int FontSize = 12;
input string FontName = "Arial Black";
datetime lastAlertTime;
double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
double ExtBuffer3[];
double ExtBuffer4[];
double ExtBuffer5[];
double ExtBufferh1[];
double ExtBufferh2[];
#define LinesIdentifier "signalLines"
double Up_Arrow_TK[],Dn_Arrow_TK[],SymTarget[],SymBreakEven[],SymExit[];
string sigType="",SigStatus="";
double Old_Price,OldCrossPrice,CrossPrice,BuyCrossPrice,SellCrossPrice,BuyCondPrice,SellCondPrice,points=0,nettPL=0,PartialCrossPrice,tgt,buyBE,sellBE,sl;
bool buyPartialExit=false,sellPartialExit=false,buyBEven=false,sellBEven=false;
bool TakeNewEntry=FALSE,FreshEntry=FALSE,FirstTime=TRUE,TimeExit=FALSE,FirstSignal=TRUE,readyToBuy=False,readyToSell=False,buySL=false,sellSL=false;
double buyCondition=0,sellCondition=0;
double TotalValue=0,AvgValue=0,AvgDiff=0,AvgPL=0,NettPL=0,Over_All_Pending_Lot=0;
int EntryCounter=0,unit=1,CrossTime=0,ss;
int OnInit()
{
// код доступен только после оплаты
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// код доступен только после оплаты
}
int limit;
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
double price;
double MinL=0;
double MaxH=0;
if(EnableRobo)
Comment("Activated");
else
Comment("Not Activated");
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars-1;
string sAlertMsg;
/*
string name="ChartScreenShot"+"CHART_BEGIN"+string(limit)+".gif";
Comment(name);
if(ChartScreenShot(0,name,800,600,ALIGN_LEFT))
Print("We've saved the screenshot ",name);
*/
for(int i=limit; i>=0; i--)
{
MaxH=High[Highest(NULL,0,MODE_HIGH,period,i)];
MinL= Low[Lowest(NULL,0,MODE_LOW,period,i)];
price = (High[i]+Low[i])/2;
Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
Value=MathMin(MathMax(Value,-0.999),0.999);
ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
Value1=Value;
Fish1=ExtBuffer0[i];
if(ExtBuffer0[i]>0) ExtBuffer1[i]=10; else ExtBuffer1[i]=-10;
}
for(int i=limit; i>=0; i--)
{
double sum = 0;
double sumw = 0;
for(int k=0; k<smooth && (i+k)<Bars; k++)
{
double weight=smooth-k;
sumw += weight;
sum += weight*ExtBuffer1[i+k];
}
if(sumw!=0)
ExtBuffer2[i]=sum/sumw;
else ExtBuffer2[i]=0;
}
for(int i=limit; i>=0; i--)
{
double sum = 0;
double sumw = 0;
for(int k=0; k<smooth && (i-k)>=0; k++)
{
double weight=smooth-k;
sumw += weight;
sum += weight*ExtBuffer2[i-k];
}
if(sumw!=0)
ExtBuffer3[i]=sum/sumw;
else ExtBuffer3[i]=0;
}
for(int i=limit; i>=0; i--)
{
ExtBuffer4[i]=EMPTY_VALUE;
ExtBuffer5[i]=EMPTY_VALUE;
ExtBufferh1[i]=EMPTY_VALUE;
ExtBufferh2[i]=EMPTY_VALUE;
if(ExtBuffer3[i]>0) { ExtBuffer4[i]=ExtBuffer3[i]; ExtBufferh1[i]=ExtBuffer3[i]; }
if(ExtBuffer3[i]<0) { ExtBuffer5[i]=ExtBuffer3[i]; ExtBufferh2[i]=ExtBuffer3[i]; }
if(ExtBuffer3[i+1]<0 && ExtBuffer3[i]>0 && ss!=12 && (int)Time[i]>CrossTime)
{
ss=12;
Up_Arrow_TK[i]=Low[i]*(1-0.0001*ArrowGap);
sigType="BUY";
OldCrossPrice=CrossPrice;
CrossTime=(int)Time[i];
CrossPrice=Open[i];
Показано первые 50% кода (символов: 9598)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.