Рельсы, баба и график, где логика?
форекс и баба уложат тебя на рельсы

Рельсы, баба и график, где логика?
//+------------------------------------------------------------------+
//| Otkusim.mq4 |
//| Copyright 2021, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот позы
extern int Slip = 100; // реквот
extern int Magic = 123; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
PutEdit("L",90,160,(string)Lots);
PutButton("B",90,120,"BUY");
PutButton("S",90,80,"SELL");
PutButton("C",90,40,"CLOSE");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectDelete(0,"B");
ObjectDelete(0,"S");
ObjectDelete(0,"C");
ObjectDelete(0,"L");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
{
ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,9);
//--- установим цвет текста
ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger(0,name,OBJPROP_HIDDEN,false);
//--- установим приоритет на получение события нажатия мыши на графике
ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutEdit(string name,int x,int y,string text)
{
//--- создадим поле ввода
ObjectCreate(0,name,OBJ_EDIT,0,0,0);
//--- установим координаты объекта
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размеры объекта
ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим текст
ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим способ выравнивания текста в объекте
ObjectSetInteger(0,name,OBJPROP_ALIGN,ALIGN_CENTER);
//--- установим (true) или отменим (false) режим только для чтения
ObjectSetInteger(0,name,OBJPROP_READONLY,false);
//--- установим угол графика, относительно которого будут определяться координаты объекта
ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим цвет текста
ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll()
{
bool cl=1;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
string symb=OrderSymbol();
double bid=MarketInfo(symb,MODE_BID);
double ask=MarketInfo(symb,MODE_ASK);
int dg=(int)SymbolInfoInteger(symb,SYMBOL_DIGITS);
if(OrderType()==0)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(bid,dg),Slip,White);
}
if(OrderType()==1)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ask,dg),Slip,White);
}
}
}
}
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
{
double pr=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(pr);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int r=0;
double lot=StringToDouble(ObjectGetString(0,"L",OBJPROP_TEXT));
if(ObjectGetInteger(0,"B",OBJPROP_STATE)==1)
{
r=OrderSend(NULL,0,lot,NormalizeDouble(Ask,_Digits),Slip,0,0,"",Magic,0,Blue);
ObjectSetInteger(0,"B",OBJPROP_STATE,0);
}
if(ObjectGetInteger(0,"S",OBJPROP_STATE)==1)
{
r=OrderSend(NULL,1,lot,NormalizeDouble(Bid,_Digits),Slip,0,0,"",Magic,0,Red);
ObjectSetInteger(0,"S",OBJPROP_STATE,0);
}
if(ObjectGetInteger(0,"C",OBJPROP_STATE)==1)
{
if(AllProfit()>0)
CloseAll();
}
Comment("\n All Profit: ",AllProfit());
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2018, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 Lime
extern bool ALLERT =true;
extern string COMM ="Параметры индикатора волатильности";
extern int N=1; // период канала
extern string COMM1 ="Параметры индикатора Rsi TMA centered bands Alert";
extern int RsiLength = 5;
extern int RsiPrice = 0;
extern int HalfLength = 12;
extern int DevPeriod = 100;
extern double Deviations = 1.5;
extern bool AlertOn = false;
extern string COMM2 ="Параметры индикатора Weighted WCCI indikatorforeks.ru";
extern int TCCIp=7;
extern int CCIp=9;
extern double overbslevel=200.0;
extern double triglevel=50.0;
extern double weight=1.0;
int Gi_84 = 24;
bool Gi_88 = FALSE;
double G_ibuf_92[];
double G_ibuf_96[];
int G_bars_100 = 0;
double mc,nc,mc1,nc1,mc2,nc2;
double W14,W7,W20,W25,W30,iWOL,iWOL1,RCB,RCB1,RCB2,WWi,WWi1;
int top,k,k1,k2;
// E37F0136AA3FFAF149B351F6A4C948E9
int init()
{
SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 3);
SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 3);
SetIndexArrow(1, 233);
SetIndexArrow(0, 234);
SetIndexBuffer(0, G_ibuf_92);
SetIndexBuffer(1, G_ibuf_96);
G_bars_100 = Bars;
return (0);
}
// EA2B2676C28C0DB26D39331A336C6B92
int start()
{
int highest_0;
int lowest_4;
int Li_8 = IndicatorCounted();
if(Li_8 < 0)
return (-1);
if(Li_8 > 0)
Li_8--;
int Li_12 = Bars - 1;
if(Li_8 >= 1)
Li_12 = Bars - Li_8 - 1;
if(Li_12 < 0)
Li_12 = 0;
for(int Li_16 = Li_12; Li_16 >= 0; Li_16--)
{
W14=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,14,Li_16),Digits);
W7=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,7,Li_16),Digits);
W20=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,20,Li_16),Digits);
W25=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,25,Li_16),Digits);
W30=NormalizeDouble(iWPR(Symbol(),PERIOD_CURRENT,30,Li_16),Digits);
iWOL=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"indikator volatilnosti",N,0,Li_16),Digits);
iWOL1=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"indikator volatilnosti",N,0,Li_16+1),Digits);
RCB=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"Rsi TMA centered bands Alert",RsiLength=5,RsiPrice,HalfLength,DevPeriod,Deviations,AlertOn,0,Li_16),Digits);
RCB1=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"Rsi TMA centered bands Alert",RsiLength=5,RsiPrice,HalfLength,DevPeriod,Deviations,AlertOn,2,Li_16),Digits);
RCB2=NormalizeDouble(iCustom(Symbol(),PERIOD_CURRENT,"Rsi TMA centered bands Alert",RsiLength=5,RsiPrice,HalfLength,DevPeriod,Deviations,AlertOn,3,Li_16),Digits);
highest_0 = iHighest(NULL, 0, MODE_HIGH, Gi_84, Li_16 - Gi_84 / 2);
lowest_4 = iLowest(NULL, 0, MODE_LOW, Gi_84, Li_16 - Gi_84 / 2);
if(W14>-5&&W7>-5&&W20>-5&&W25>-5&&W30>-5 &&iWOL-iWOL1>0 &&RCB>RCB1)
{
G_ibuf_92[Li_16] =Imaxx(Li_16);
if(ALLERT==true)
{
if(mc!=Cotkr(1))
{ Alert(Symbol(),"--Продажа!"); mc=Cotkr(1);}
}
}
if(W14<-95&&W7<-95&&W20<-95&&W25<-25&&W30<-25 &&iWOL-iWOL1>0 &&RCB<RCB2)
{
G_ibuf_96[Li_16] =Iminn(Li_16);
if(ALLERT==true)
{
if(mc1!=Cotkr(1))
{ Alert(Symbol(),"--Покупка!"); mc1=Cotkr(1);}
}
}
}
return (0);
}
// 9B1AEE847CFB597942D106A4135D4FE6
int f0_1()
{
bool Li_ret_0 = FALSE;
if(G_bars_100 != Bars)
{
Li_ret_0 = TRUE;
G_bars_100 = Bars;
Gi_88 = TRUE;
}
return (Li_ret_0);
}
// 945D754CB0DC06D04243FCBA25FC0802
string f0_0(int Ai_0)
{
if(Ai_0 == 1)
return ("M1");
if(Ai_0 == 5)
return ("M5");
if(Ai_0 == 15)
return ("M15");
if(Ai_0 == 30)
return ("M30");
if(Ai_0 == 60)
return ("H1");
if(Ai_0 == 240)
return ("H4");
if(Ai_0 == 1440)
return ("D1");
if(Ai_0 == 10080)
return ("W1");
if(Ai_0 == 43200)
return ("MN1");
return ("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Imaxx(int Per)
{
double perr;
perr = NormalizeDouble(iHigh(Symbol(),0,Per),Digits);
return (perr);
}
//---Миниму--//
double Iminn(int Per)
{
double perr;
perr = NormalizeDouble(iLow(Symbol(),0,Per),Digits);
return (perr);
}
//--Цена открытия--//
double Cotkr(int Per)
{
double perr;
perr = NormalizeDouble(iOpen(Symbol(),0,Per),Digits);
return (perr);
}
//--Цена закрытия--//
double Czakr(int Per)
{
double perr;
perr = NormalizeDouble(iClose(Symbol(),0,Per),Digits);
return (perr);
}
//+------------------------------------------------------------------+
AM2